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