You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sirona.apache.org by rm...@apache.org on 2015/03/19 12:08:05 UTC

svn commit: r1667702 - in /incubator/sirona/trunk/api/src: main/java/org/apache/sirona/configuration/predicate/PredicateEvaluator.java test/java/org/apache/sirona/predicate/PredicateTest.java

Author: rmannibucau
Date: Thu Mar 19 11:08:05 2015
New Revision: 1667702

URL: http://svn.apache.org/r1667702
Log:
supporting not true to have kind of false predicate - maybe we should rename true predicate boolean or rework it a bit

Modified:
    incubator/sirona/trunk/api/src/main/java/org/apache/sirona/configuration/predicate/PredicateEvaluator.java
    incubator/sirona/trunk/api/src/test/java/org/apache/sirona/predicate/PredicateTest.java

Modified: incubator/sirona/trunk/api/src/main/java/org/apache/sirona/configuration/predicate/PredicateEvaluator.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/api/src/main/java/org/apache/sirona/configuration/predicate/PredicateEvaluator.java?rev=1667702&r1=1667701&r2=1667702&view=diff
==============================================================================
--- incubator/sirona/trunk/api/src/main/java/org/apache/sirona/configuration/predicate/PredicateEvaluator.java (original)
+++ incubator/sirona/trunk/api/src/main/java/org/apache/sirona/configuration/predicate/PredicateEvaluator.java Thu Mar 19 11:08:05 2015
@@ -30,6 +30,7 @@ public final class PredicateEvaluator {
 
     private final Map<String, Predicate> predicates = new HashMap<String, Predicate>();
     private final boolean truePredicate;
+    private final boolean falsePredicate;
 
     public PredicateEvaluator(final String configuration, final String sep) {
         if (configuration != null && configuration.length()>0) {
@@ -68,8 +69,9 @@ public final class PredicateEvaluator {
                 }
 
                 if (predicate == TruePredicate.INSTANCE) {
-                    truePredicate = true;
                     predicates.clear(); // no need to keep it in mem since we'll always return true
+                    falsePredicate = trim.substring(separator + 1).startsWith(NOT);
+                    truePredicate = !falsePredicate;
                     return;
                 }
 
@@ -81,8 +83,10 @@ public final class PredicateEvaluator {
                 }
             }
             truePredicate = false;
+            falsePredicate = false;
         } else {
             truePredicate = false;
+            falsePredicate = false;
         }
         predicates.remove(TruePredicate.INSTANCE.prefix()); // no need to keep it in mem
     }
@@ -91,6 +95,9 @@ public final class PredicateEvaluator {
         if (truePredicate) {
             return true;
         }
+        if (falsePredicate) {
+            return false;
+        }
 
         for (final Predicate predicate : predicates.values()) {
             if (predicate.matches(value)) {

Modified: incubator/sirona/trunk/api/src/test/java/org/apache/sirona/predicate/PredicateTest.java
URL: http://svn.apache.org/viewvc/incubator/sirona/trunk/api/src/test/java/org/apache/sirona/predicate/PredicateTest.java?rev=1667702&r1=1667701&r2=1667702&view=diff
==============================================================================
--- incubator/sirona/trunk/api/src/test/java/org/apache/sirona/predicate/PredicateTest.java (original)
+++ incubator/sirona/trunk/api/src/test/java/org/apache/sirona/predicate/PredicateTest.java Thu Mar 19 11:08:05 2015
@@ -52,4 +52,9 @@ public class PredicateTest
         assertTrue(evaluator.matches("1283"));
         assertTrue(evaluator.matches("Ends with Cat"));
     }
+
+    @Test
+    public void allFalse() {
+        assertFalse(new PredicateEvaluator("true:!true",",").matches("or"));
+    }
 }