Author: davsclaus
Date: Sat Jul  9 10:08:02 2011
New Revision: 1144628

URL: http://svn.apache.org/viewvc?rev=1144628&view=rev
Log:
CAMEL-4199: Added not() to ValueBuilder.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
    
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
    
camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java?rev=1144628&r1=1144627&r2=1144628&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java 
(original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ValueBuilder.java 
Sat Jul  9 10:08:02 2011
@@ -31,6 +31,7 @@ import org.apache.camel.Predicate;
  */
 public class ValueBuilder implements Expression {
     private Expression expression;
+    private boolean not;
 
     public ValueBuilder(Expression expression) {
         this.expression = expression;
@@ -249,6 +250,16 @@ public class ValueBuilder implements Exp
         return new ValueBuilder(newExp);
     }
 
+    /**
+     * Negates the built expression.
+     *
+     * @return the current builder
+     */
+    public ValueBuilder not() {
+        not = true;
+        return this;
+    }
+
     // Implementation methods
     // 
-------------------------------------------------------------------------
 
@@ -257,7 +268,11 @@ public class ValueBuilder implements Exp
      * predicate in different ways
      */
     protected Predicate onNewPredicate(Predicate predicate) {
-        return predicate;
+        if (not) {
+            return PredicateBuilder.not(predicate);
+        } else {
+            return predicate;
+        }
     }
 
     protected Expression asExpression(Object value) {

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java?rev=1144628&r1=1144627&r2=1144628&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
 Sat Jul  9 10:08:02 2011
@@ -143,6 +143,7 @@ public abstract class AssertionClause ex
         }
 
         protected Predicate onNewPredicate(Predicate predicate) {
+            predicate = super.onNewPredicate(predicate);
             addPredicate(predicate);
             return predicate;
         }

Modified: 
camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java?rev=1144628&r1=1144627&r2=1144628&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java
 (original)
+++ 
camel/trunk/camel-core/src/test/java/org/apache/camel/builder/PredicateBuilderTest.java
 Sat Jul  9 10:08:02 2011
@@ -122,6 +122,19 @@ public class PredicateBuilderTest extend
         assertDoesNotMatch(header("size").endsWith(9));
     }
 
+    public void testNot() throws Exception {
+        assertMatches(body().not().isInstanceOf(Integer.class));
+        assertMatches(header("name").not().isEqualTo("Claus"));
+        assertMatches(header("size").not().isLessThan(7));
+
+        try {
+            assertMatches(header("name").not().isEqualTo("James"));
+            fail("Should fail");
+        } catch (AssertionError e) {
+            // expected
+        }
+    }
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();


Reply via email to