1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| public class SetExchangePatternTest extends ContextTestSupport {
@Test public void testInOut() throws Exception { assertMessageReceivedWithPattern("direct:testInOut", ExchangePattern.InOut); }
@Test public void testInOnly() throws Exception { assertMessageReceivedWithPattern("direct:testInOnly", ExchangePattern.InOnly); }
@Test public void testSetToInOnlyThenTo() throws Exception { assertMessageReceivedWithPattern("direct:testSetToInOnlyThenTo", ExchangePattern.InOnly); }
@Test public void testSetToInOutThenTo() throws Exception { assertMessageReceivedWithPattern("direct:testSetToInOutThenTo", ExchangePattern.InOut); }
@Test public void testToWithInOnlyParam() throws Exception { assertMessageReceivedWithPattern("direct:testToWithInOnlyParam", ExchangePattern.InOnly); }
@Test public void testToWithInOutParam() throws Exception { assertMessageReceivedWithPattern("direct:testToWithInOutParam", ExchangePattern.InOut); }
@Test public void testSetExchangePatternInOnly() throws Exception { assertMessageReceivedWithPattern("direct:testSetExchangePatternInOnly", ExchangePattern.InOnly); }
@Test public void testPreserveOldMEPInOut() throws Exception { getMockEndpoint("mock:result").expectedMessageCount(1); getMockEndpoint("mock:result").message(0).exchangePattern().isEqualTo(ExchangePattern.InOut);
Exchange out = template.send("direct:testInOut", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setBody("Hello World"); exchange.setPattern(ExchangePattern.InOnly); } });
assertNotNull(out); assertEquals(ExchangePattern.InOnly, out.getPattern());
assertMockEndpointsSatisfied(); }
@Test public void testPreserveOldMEPInOnly() throws Exception { getMockEndpoint("mock:result").expectedMessageCount(1); getMockEndpoint("mock:result").message(0).exchangePattern().isEqualTo(ExchangePattern.InOnly);
Exchange out = template.send("direct:testInOnly", new Processor() { @Override public void process(Exchange exchange) throws Exception { exchange.getIn().setBody("Hello World"); exchange.setPattern(ExchangePattern.InOut); } });
assertNotNull(out); assertEquals(ExchangePattern.InOut, out.getPattern());
assertMockEndpointsSatisfied(); }
protected void assertMessageReceivedWithPattern(String sendUri, ExchangePattern expectedPattern) throws InterruptedException { ExchangePattern sendPattern; switch (expectedPattern) { case InOut: sendPattern = ExchangePattern.InOnly; break; case InOnly: sendPattern = ExchangePattern.InOut; break; default: sendPattern = ExchangePattern.InOnly; }
MockEndpoint resultEndpoint = getMockEndpoint("mock:result"); String expectedBody = "InOnlyMessage"; resultEndpoint.expectedBodiesReceived(expectedBody); resultEndpoint.expectedHeaderReceived("foo", "bar");
template.sendBodyAndHeader(sendUri, sendPattern, expectedBody, "foo", "bar"); resultEndpoint.assertIsSatisfied(); ExchangePattern actualPattern = resultEndpoint.getExchanges().get(0).getPattern(); assertEquals(actualPattern, expectedPattern, "received exchange pattern"); }
@Override protected RouteBuilder createRouteBuilder() { return new RouteBuilder() { public void configure() { from("direct:testInOut").to(ExchangePattern.InOut, "mock:result");
from("direct:testInOnly").to(ExchangePattern.InOnly, "mock:result");
from("direct:testSetToInOnlyThenTo").setExchangePattern(ExchangePattern.InOnly).to("mock:result"); from("direct:testSetToInOutThenTo").setExchangePattern(ExchangePattern.InOut).to("mock:result");
from("direct:testToWithInOnlyParam").to(ExchangePattern.InOnly, "mock:result"); from("direct:testToWithInOutParam").to(ExchangePattern.InOut, "mock:result");
from("direct:testSetExchangePatternInOnly").setExchangePattern(ExchangePattern.InOnly).to("mock:result"); } }; } }
|