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() {