You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2010/02/18 08:54:52 UTC

svn commit: r911274 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/NotifyBuilder.java test/java/org/apache/camel/builder/NotifyBuilderTest.java

Author: davsclaus
Date: Thu Feb 18 07:54:51 2010
New Revision: 911274

URL: http://svn.apache.org/viewvc?rev=911274&view=rev
Log:
CAMEL-2483: Added a reset method on NotifyBuilder.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java?rev=911274&r1=911273&r2=911274&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/NotifyBuilder.java Thu Feb 18 07:54:51 2010
@@ -59,7 +59,7 @@
     private final List<EventPredicateHolder> predicates = new ArrayList<EventPredicateHolder>();
 
     // latch to be used to signal predicates matches
-    private final CountDownLatch latch = new CountDownLatch(1);
+    private CountDownLatch latch = new CountDownLatch(1);
 
     // the current state while building an event predicate where we use a stack and the operation
     private final Stack<EventPredicate> stack = new Stack<EventPredicate>();
@@ -190,6 +190,11 @@
             }
 
             @Override
+            public void reset() {
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 return "whenReceived(" + number + ")";
             }
@@ -230,6 +235,11 @@
             }
 
             @Override
+            public void reset() {
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 return "whenDone(" + number + ")";
             }
@@ -264,6 +274,11 @@
             }
 
             @Override
+            public void reset() {
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 return "whenCompleted(" + number + ")";
             }
@@ -295,6 +310,11 @@
             }
 
             @Override
+            public void reset() {
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 return "whenFailed(" + number + ")";
             }
@@ -331,6 +351,11 @@
             }
 
             @Override
+            public void reset() {
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 return "whenExactlyDone(" + number + ")";
             }
@@ -362,6 +387,11 @@
             }
 
             @Override
+            public void reset() {
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 return "whenExactlyCompleted(" + number + ")";
             }
@@ -390,6 +420,11 @@
             }
 
             @Override
+            public void reset() {
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 return "whenExactlyFailed(" + number + ")";
             }
@@ -450,6 +485,11 @@
             }
 
             @Override
+            public void reset() {
+                matches = false;
+            }
+
+            @Override
             public String toString() {
                 if (received) {
                     return "whenAnyReceivedMatches(" + predicate + ")";
@@ -514,6 +554,11 @@
             }
 
             @Override
+            public void reset() {
+                matches = true;
+            }
+
+            @Override
             public String toString() {
                 if (received) {
                     return "whenAllReceivedMatches(" + predicate + ")";
@@ -561,7 +606,6 @@
 
     private NotifyBuilder doWhenSatisfied(final MockEndpoint mock, final boolean received) {
         stack.push(new EventPredicateSupport() {
-
             private Producer producer;
 
             @Override
@@ -609,6 +653,11 @@
             }
 
             @Override
+            public void reset() {
+                mock.reset();
+            }
+
+            @Override
             public String toString() {
                 if (received) {
                     return "whenReceivedSatisfied(" + mock + ")";
@@ -704,6 +753,11 @@
             }
 
             @Override
+            public void reset() {
+                mock.reset();
+            }
+
+            @Override
             public String toString() {
                 if (received) {
                     return "whenReceivedNotSatisfied(" + mock + ")";
@@ -828,6 +882,12 @@
             }
 
             @Override
+            public void reset() {
+                matches = false;
+                current = 0;
+            }
+
+            @Override
             public String toString() {
                 if (received) {
                     return "" + (exact ? "whenExactBodiesReceived(" : "whenBodiesReceived(") + bodies + ")";
@@ -839,7 +899,6 @@
         return this;
     }
 
-
     /**
      * Prepares to append an additional expression using the <i>and</i> operator.
      *
@@ -912,6 +971,17 @@
         return matches();
     }
 
+    /**
+     * Resets the notifier.
+     */
+    public void reset() {
+        for (EventPredicateHolder predicate : predicates) {
+            predicate.reset();
+        }
+        latch = new CountDownLatch(1);
+        matches = false;
+    }
+
     @Override
     public String toString() {
         StringBuilder sb = new StringBuilder();
@@ -1049,6 +1119,11 @@
         boolean matches();
 
         /**
+         * Resets the predicate
+         */
+        void reset();
+
+        /**
          * Callback for {@link Exchange} lifecycle
          *
          * @param exchange the exchange
@@ -1075,6 +1150,10 @@
 
     private abstract class EventPredicateSupport implements EventPredicate {
 
+        public void reset() {
+            // noop
+        }
+
         public boolean onExchangeCreated(Exchange exchange) {
             return onExchange(exchange);
         }
@@ -1112,6 +1191,10 @@
             return predicate;
         }
 
+        public void reset() {
+            predicate.reset();
+        }
+
         @Override
         public String toString() {
             return operation.name() + "()." + predicate;
@@ -1138,6 +1221,12 @@
             return true;
         }
 
+        public void reset() {
+            for (EventPredicate predicate : predicates) {
+                predicate.reset();
+            }
+        }
+
         public boolean onExchangeCreated(Exchange exchange) {
             for (EventPredicate predicate : predicates) {
                 if (!predicate.onExchangeCreated(exchange)) {

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java?rev=911274&r1=911273&r2=911274&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/builder/NotifyBuilderTest.java Thu Feb 18 07:54:51 2010
@@ -742,6 +742,48 @@
         assertEquals(false, notify.matches());
     }
 
+    public void testReset() throws Exception {
+        NotifyBuilder notify = new NotifyBuilder(context)
+                .whenExactlyDone(1)
+                .create();
+
+        template.sendBody("direct:foo", "Hello World");
+        assertEquals(true, notify.matches());
+
+        template.sendBody("direct:foo", "Bye World");
+        assertEquals(false, notify.matches());
+
+        // reset
+        notify.reset();
+        assertEquals(false, notify.matches());
+
+        template.sendBody("direct:foo", "Hello World");
+        assertEquals(true, notify.matches());
+
+        template.sendBody("direct:foo", "Bye World");
+        assertEquals(false, notify.matches());
+    }
+
+    public void testResetBodiesReceived() throws Exception {
+        NotifyBuilder notify = new NotifyBuilder(context)
+                .whenBodiesReceived("Hello World", "Bye World")
+                .create();
+
+        template.sendBody("direct:foo", "Hello World");
+        template.sendBody("direct:foo", "Bye World");
+        assertEquals(true, notify.matches());
+
+        // reset
+        notify.reset();
+        assertEquals(false, notify.matches());
+
+        template.sendBody("direct:foo", "Hello World");
+        assertEquals(false, notify.matches());
+
+        template.sendBody("direct:foo", "Bye World");
+        assertEquals(true, notify.matches());
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {