You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by rg...@apache.org on 2010/10/29 01:39:27 UTC

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

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: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org