sdeboy 2005/01/08 00:03:34 Modified: src/java/org/apache/log4j/filter AndFilter.java Log: AndFilter now supports any number of contained filters, using Joran's support for collections. Revision Changes Path 1.2 +20 -20 logging-log4j/src/java/org/apache/log4j/filter/AndFilter.java Index: AndFilter.java =================================================================== RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/filter/AndFilter.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- AndFilter.java 8 Jan 2005 06:57:48 -0000 1.1 +++ AndFilter.java 8 Jan 2005 08:03:34 -0000 1.2 @@ -16,16 +16,19 @@ package org.apache.log4j.filter; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; import org.apache.log4j.spi.Filter; import org.apache.log4j.spi.LoggingEvent; /** - * A filter that 'and's the results of two filters together. + * A filter that 'and's the results of any number of contained filters together. * - * For the filter to process events, both contained filters must return Filter.ACCEPT. + * For the filter to process events, all contained filters must return Filter.ACCEPT. * - * If both filters do not return Filter.ACCEPT, Filter.NEUTRAL is returned. + * If the contained filters do not return Filter.ACCEPT, Filter.NEUTRAL is returned. * * If acceptOnMatch is set to true, Filter.ACCEPT is returned. * If acceptOnMatch is set to false, Filter.DENY is returned. @@ -35,14 +38,14 @@ * *<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> * <filter class="org.apache.log4j.filter.AndFilter"> - * <filter1 class="org.apache.log4j.filter.LevelMatchFilter"> + * <filter class="org.apache.log4j.filter.LevelMatchFilter"> * <param name="levelToMatch" value="DEBUG" /> * <param name="acceptOnMatch" value="true" /> - * </filter1> - * <filter2 class="org.apache.log4j.filter.StringMatchFilter"> + * </filter> + * <filter class="org.apache.log4j.filter.StringMatchFilter"> * <param name="stringToMatch" value="test" /> * <param name="acceptOnMatch" value="true" /> - * </filter2> + * </filter> * <param name="acceptOnMatch" value="false"/> * </filter> * <filter class="org.apache.log4j.filter.DenyAllFilter"/> @@ -64,24 +67,17 @@ * @author Scott Deboy [EMAIL PROTECTED] */ public class AndFilter extends Filter { - Filter filter1; - Filter filter2; + List filters = new ArrayList(); boolean acceptOnMatch = true; public void activateOptions() { //nothing to do } - public void setFilter1(Filter filter1) { - System.out.println("filter 1 set to: " + filter1); - this.filter1 = filter1; + public void addFilter(Filter filter) { + filters.add(filter); } - public void setFilter2(Filter filter2) { - System.out.println("filter 2 set to: " + filter2); - this.filter2 = filter2; - } - public void setAcceptOnMatch(boolean acceptOnMatch) { this.acceptOnMatch = acceptOnMatch; } @@ -95,14 +91,18 @@ * Returns [EMAIL PROTECTED] Filter#NEUTRAL} */ public int decide(LoggingEvent event) { - if ((Filter.ACCEPT == filter1.decide(event)) && - Filter.ACCEPT == filter2.decide(event)) { + boolean accepted = true; + for (Iterator iter = filters.iterator(); iter.hasNext();) { + Filter thisFilter = (Filter)iter.next(); + accepted = accepted && (Filter.ACCEPT == thisFilter.decide(event)); + } + + if (accepted) { if(acceptOnMatch) { return Filter.ACCEPT; } return Filter.DENY; } -// System.out.println("neutral: " + event.getLevel() + ".." + event.getMessage()); return Filter.NEUTRAL; } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]