You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2008/12/11 11:48:33 UTC
svn commit: r725652 -
/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetExchangePatternTest.java
Author: jstrachan
Date: Thu Dec 11 02:48:32 2008
New Revision: 725652
URL: http://svn.apache.org/viewvc?rev=725652&view=rev
Log:
added a few more tests and examples to CAMEL-1171
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetExchangePatternTest.java
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetExchangePatternTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetExchangePatternTest.java?rev=725652&r1=725651&r2=725652&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetExchangePatternTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SetExchangePatternTest.java Thu Dec 11 02:48:32 2008
@@ -17,67 +17,82 @@
package org.apache.camel.processor;
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
-import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
public class SetExchangePatternTest extends ContextTestSupport {
-
- private void sendMessage(String uri, final ExchangePattern ep, final String message) {
- template.send(uri, new Processor() {
- public void process(Exchange exchange) throws Exception {
- exchange.setPattern(ep);
- exchange.getIn().setBody(message);
- }
-
- });
+
+ public void testInvokeWithInOut() throws Exception {
+ assertMessageReceivedWithPattern("direct:invokeWithInOut", ExchangePattern.InOut);
+ }
+
+ public void testInvokeWithInOnly() throws Exception {
+ assertMessageReceivedWithPattern("direct:invokeWithInOnly", ExchangePattern.InOnly);
}
-
+
public void testSetInOut() throws Exception {
- MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
- resultEndpoint.expectedBodiesReceived("InOnlyMessage");
- sendMessage("direct:inOnly", ExchangePattern.InOnly, "InOnlyMessage");
- resultEndpoint.assertIsSatisfied();
- assertEquals("The exchange pattern should be InOut", resultEndpoint.getExchanges().get(0).getPattern(), ExchangePattern.InOut);
+ assertMessageReceivedWithPattern("direct:inOnly", ExchangePattern.InOut);
}
-
+
+ public void testSetInOutAsToParam() throws Exception {
+ assertMessageReceivedWithPattern("direct:inOnlyAsToParam", ExchangePattern.InOnly);
+ }
+
public void testSetInOnly() throws Exception {
- MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
- resultEndpoint.expectedBodiesReceived("InOutMessage");
- sendMessage("direct:inOut", ExchangePattern.InOut, "InOutMessage");
- resultEndpoint.assertIsSatisfied();
- assertEquals("The exchange pattern should be InOnly", resultEndpoint.getExchanges().get(0).getPattern(), ExchangePattern.InOnly);
+ assertMessageReceivedWithPattern("direct:inOut", ExchangePattern.InOnly);
}
public void testSetRobustInOnly() throws Exception {
- MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
- resultEndpoint.expectedBodiesReceived("InOutMessage");
- sendMessage("direct:inOut1", ExchangePattern.InOut, "InOutMessage");
- resultEndpoint.assertIsSatisfied();
- assertEquals("The exchange pattern should be InOnly", resultEndpoint.getExchanges().get(0).getPattern(), ExchangePattern.RobustInOnly);
+ assertMessageReceivedWithPattern("direct:inOut1", ExchangePattern.RobustInOnly);
}
public void testSetInOnly2() throws Exception {
- MockEndpoint resultEndpoint = resolveMandatoryEndpoint("mock:result", MockEndpoint.class);
- resultEndpoint.expectedBodiesReceived("InOutMessage");
- sendMessage("direct:inOut2", ExchangePattern.InOut, "InOutMessage");
+ assertMessageReceivedWithPattern("direct:inOut2", ExchangePattern.InOnly);
+ }
+
+
+ protected void assertMessageReceivedWithPattern(String sendUri, ExchangePattern expectedPattern) throws InterruptedException {
+ ExchangePattern sendPattern;
+ switch (expectedPattern) {
+ case InOut:
+ sendPattern = ExchangePattern.InOnly;
+ break;
+ case InOnly:
+ case RobustInOnly:
+ sendPattern = ExchangePattern.InOut;
+ break;
+ default:
+ sendPattern = ExchangePattern.InOnly;
+ }
+
+ MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
+ String expectedBody = "InOnlyMessage";
+ resultEndpoint.expectedBodiesReceived(expectedBody);
+ template.sendBody(sendUri, sendPattern, expectedBody);
resultEndpoint.assertIsSatisfied();
- assertEquals("The exchange pattern should be InOnly", resultEndpoint.getExchanges().get(0).getPattern(), ExchangePattern.InOnly);
+ ExchangePattern actualPattern = resultEndpoint.getExchanges().get(0).getPattern();
+ assertEquals("received exchange pattern", actualPattern, expectedPattern);
}
-
+
+
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
// START SNIPPET: example
- //Set the exchange pattern to InOut, then send it from direct:inOnly to mock:result endpoint
+ // Send to an endpoint using InOut
+ from("direct:invokeWithInOut").inOut("mock:result");
+ // Send to an endpoint using InOut
+ from("direct:invokeWithInOnly").inOnly("mock:result");
+ // Set the exchange pattern to InOut, then send it from direct:inOnly to mock:result endpoint
from("direct:inOnly").inOut().to("mock:result");
- //Set the exchange pattern to InOut, then send it from direct:inOut to mock:result endpoint
+ // Or we can pass the pattern as a parameter
+ from("direct:inOnlyAsToParam").to(ExchangePattern.InOnly, "mock:result");
+ // Set the exchange pattern to InOut, then send it from direct:inOut to mock:result endpoint
from("direct:inOut").setExchangePattern(ExchangePattern.InOnly).to("mock:result");
- //Send the exchange from direct:inOut1 to mock:result with setting the exchange pattern to be RobustInOnly
+ // Send the exchange from direct:inOut1 to mock:result with setting the exchange pattern to be RobustInOnly
from("direct:inOut1").to(ExchangePattern.RobustInOnly, "mock:result");
- //Send the exchange from direct:inOut2 to mock:result with setting the exchange pattern to be InOnly
+ // Send the exchange from direct:inOut2 to mock:result with setting the exchange pattern to be InOnly
from("direct:inOut2").inOnly("mock:result");
// END SNIPPET: example
}