Author: rgoers
Date: Thu Oct 28 23:39:27 2010
New Revision: 1028544

URL: http://svn.apache.org/viewvc?rev=1028544&view=rev
Log:
Slightly slower but doesn't have the multi-threading issues the prior version 
would have

Modified:
    
logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/Filterable.java

Modified: 
logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/Filterable.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/Filterable.java?rev=1028544&r1=1028543&r2=1028544&view=diff
==============================================================================
--- 
logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/Filterable.java
 (original)
+++ 
logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/Filterable.java
 Thu Oct 28 23:39:27 2010
@@ -27,21 +27,17 @@ import java.util.Iterator;
  */
 public class Filterable {
     private volatile Filters filters = new Filters(null);
-    private boolean hasFilters;
 
     public synchronized void addFilter(Filter filter) {
         filters = Filters.addFilter(filters, filter);
-        hasFilters = filters.hasFilters();
     }
 
     public synchronized void removeFilter(Filter filter) {
         filters = Filters.removeFilter(filters, filter);
-         hasFilters = filters.hasFilters();
     }
 
     public synchronized void clearFilters() {
         filters = new Filters(null);
-        hasFilters = false;
     }
 
     public Iterator<Filter> getFilters() {
@@ -49,7 +45,7 @@ public class Filterable {
     }
 
     public boolean hasFilters() {
-        return hasFilters;
+        return filters.hasFilters();
     }
 
     public int filterCount() {
@@ -57,29 +53,35 @@ public class Filterable {
     }
 
     protected void startFilters() {
-        for (Filter filter : filters) {
-            if ((filter instanceof Lifecycle)) {
-                ((Lifecycle)filter).start();
+        Filters f = filters;
+        if (f.hasFilters()) {
+            for (Filter filter : f) {
+                if ((filter instanceof Lifecycle)) {
+                    ((Lifecycle)filter).start();
+                }
             }
         }
     }
 
     protected void stopFilters() {
-        for (Filter filter : filters) {
-            if ((filter instanceof Lifecycle)) {
-                ((Lifecycle)filter).stop();
+        Filters f = filters;
+        if (f.hasFilters()) {
+            for (Filter filter : f) {
+                if ((filter instanceof Lifecycle)) {
+                    ((Lifecycle)filter).stop();
+                }
             }
         }
     }
 
     protected synchronized void setFilters(Filters newFilters) {
         filters = newFilters == null ? new Filters(null) : newFilters;
-        hasFilters = filters.hasFilters();
     }
 
     protected boolean isFiltered(LogEvent event) {
-        if (hasFilters) {
-            for (Filter filter : filters) {
+        Filters f = filters;
+        if (f.hasFilters()) {
+            for (Filter filter : f) {
                 if (filter.filter(event) == Filter.Result.DENY) {
                     return true;
                 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to