[jboss-svn-commits] JBoss Common SVN: r3319 - in jboss-logmanager/trunk/src: test/java/org/jboss/logmanager and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 29 18:58:37 EDT 2009


Author: david.lloyd at jboss.com
Date: 2009-06-29 18:58:37 -0400 (Mon, 29 Jun 2009)
New Revision: 3319

Modified:
   jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/filters/LevelRangeFilter.java
   jboss-logmanager/trunk/src/test/java/org/jboss/logmanager/FilterTests.java
Log:
Let level range be inclusive or exclusive on either end

Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/filters/LevelRangeFilter.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/filters/LevelRangeFilter.java	2009-06-29 22:51:22 UTC (rev 3318)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/filters/LevelRangeFilter.java	2009-06-29 22:58:37 UTC (rev 3319)
@@ -32,14 +32,20 @@
 public final class LevelRangeFilter implements Filter {
     private final int min;
     private final int max;
+    private final boolean minInclusive;
+    private final boolean maxInclusive;
 
     /**
      * Create a new instance.
      *
      * @param min the minimum (least severe) level, inclusive
+     * @param minInclusive {@code true} if the {@code min} value is inclusive, {@code false} if it is exclusive
      * @param max the maximum (most severe) level, inclusive
+     * @param maxInclusive {@code true} if the {@code max} value is inclusive, {@code false} if it is exclusive
      */
-    public LevelRangeFilter(final Level min, final Level max) {
+    public LevelRangeFilter(final Level min, final boolean minInclusive, final Level max, final boolean maxInclusive) {
+        this.minInclusive = minInclusive;
+        this.maxInclusive = maxInclusive;
         this.min = min.intValue();
         this.max = max.intValue();
         if (this.max < this.min) {
@@ -55,6 +61,6 @@
      */
     public boolean isLoggable(final LogRecord record) {
         final int iv = record.getLevel().intValue();
-        return min <= iv && iv <= max;
+        return (minInclusive ? min <= iv : min < iv) && (maxInclusive ? iv <= max : iv < max);
     }
 }

Modified: jboss-logmanager/trunk/src/test/java/org/jboss/logmanager/FilterTests.java
===================================================================
--- jboss-logmanager/trunk/src/test/java/org/jboss/logmanager/FilterTests.java	2009-06-29 22:51:22 UTC (rev 3318)
+++ jboss-logmanager/trunk/src/test/java/org/jboss/logmanager/FilterTests.java	2009-06-29 22:58:37 UTC (rev 3319)
@@ -300,7 +300,7 @@
     }
 
     public void testLevelRangeFilter0() {
-        final Filter filter = new LevelRangeFilter(Level.DEBUG, Level.WARN);
+        final Filter filter = new LevelRangeFilter(Level.DEBUG, true, Level.WARN, true);
         final AtomicBoolean ran = new AtomicBoolean();
         final Handler handler = new CheckingHandler(ran);
         final Logger logger = Logger.getLogger("filterTest");
@@ -314,7 +314,7 @@
     }
 
     public void testLevelRangeFilter1() {
-        final Filter filter = new LevelRangeFilter(Level.DEBUG, Level.WARN);
+        final Filter filter = new LevelRangeFilter(Level.DEBUG, true, Level.WARN, true);
         final AtomicBoolean ran = new AtomicBoolean();
         final Handler handler = new CheckingHandler(ran);
         final Logger logger = Logger.getLogger("filterTest");
@@ -327,6 +327,48 @@
         assertFalse("Handler was run", ran.get());
     }
 
+    public void testLevelRangeFilter2() {
+        final Filter filter = new LevelRangeFilter(Level.DEBUG, true, Level.WARN, true);
+        final AtomicBoolean ran = new AtomicBoolean();
+        final Handler handler = new CheckingHandler(ran);
+        final Logger logger = Logger.getLogger("filterTest");
+        logger.setUseParentHandlers(false);
+        logger.addHandler(handler);
+        logger.setLevel(Level.DEBUG);
+        logger.setFilter(filter);
+        handler.setLevel(Level.DEBUG);
+        logger.log(Level.DEBUG, "This is a test.");
+        assertTrue("Handler wasn't run", ran.get());
+    }
+
+    public void testLevelRangeFilter3() {
+        final Filter filter = new LevelRangeFilter(Level.DEBUG, false, Level.WARN, true);
+        final AtomicBoolean ran = new AtomicBoolean();
+        final Handler handler = new CheckingHandler(ran);
+        final Logger logger = Logger.getLogger("filterTest");
+        logger.setUseParentHandlers(false);
+        logger.addHandler(handler);
+        logger.setLevel(Level.DEBUG);
+        logger.setFilter(filter);
+        handler.setLevel(Level.DEBUG);
+        logger.log(Level.DEBUG, "This is a test.");
+        assertFalse("Handler was run", ran.get());
+    }
+
+    public void testLevelRangeFilter4() {
+        final Filter filter = new LevelRangeFilter(Level.DEBUG, true, Level.WARN, false);
+        final AtomicBoolean ran = new AtomicBoolean();
+        final Handler handler = new CheckingHandler(ran);
+        final Logger logger = Logger.getLogger("filterTest");
+        logger.setUseParentHandlers(false);
+        logger.addHandler(handler);
+        logger.setLevel(Level.INFO);
+        logger.setFilter(filter);
+        handler.setLevel(Level.INFO);
+        logger.warning("This is a test.");
+        assertFalse("Handler was run", ran.get());
+    }
+
     public void testRegexFilter0() {
         final Filter filter = new RegexFilter("test");
         final AtomicBoolean ran = new AtomicBoolean();




More information about the jboss-svn-commits mailing list