Author: gertv
Date: Mon Nov 23 12:18:56 2009
New Revision: 883316
URL: http://svn.apache.org/viewvc?rev=883316&view=rev
Log:
SMXCOMP-680: Add an example unit test for the dynamic recipient list
Added:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiDynamicRecipientListTest.java
- copied, changed from r835983,
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelExceptionsTest.java
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su12-src/camel-context.xml
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml
Copied:
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiDynamicRecipientListTest.java
(from r835983,
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelExceptionsTest.java)
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiDynamicRecipientListTest.java?p2=servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiDynamicRecipientListTest.java&p1=servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelExceptionsTest.java&r1=835983&r2=883316&rev=883316&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiCamelExceptionsTest.java
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/java/org/apache/servicemix/camel/JbiDynamicRecipientListTest.java
Mon Nov 23 12:18:56 2009
@@ -21,39 +21,39 @@
import javax.jbi.messaging.InOut;
import javax.xml.namespace.QName;
+import org.apache.camel.CamelContext;
+import org.apache.camel.Consume;
+import org.apache.camel.RecipientList;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.converter.jaxp.StringSource;
+import org.apache.camel.impl.DefaultCamelContext;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.util.jndi.JndiContext;
import org.apache.servicemix.client.DefaultServiceMixClient;
import org.apache.servicemix.client.ServiceMixClient;
/**
- * Tests on conveying a simple exception thrown by a bean in the camel route
+ * Tests on using the Dynamic Recipient List pattern inside servicemix-camel
*/
-public class JbiCamelExceptionsTest extends JbiCamelErrorHandlingTestSupport {
+public class JbiDynamicRecipientListTest extends
JbiCamelErrorHandlingTestSupport {
- public void testInOnlyConveysException() throws Exception {
- ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
- InOnly exchange = client.createInOnlyExchange();
- exchange.setService(new QName("urn:test", "service"));
- exchange.getInMessage().setContent(new StringSource("<request>I would
like a NPE, please!</request>"));
- client.sendSync(exchange);
- assertEquals(ExchangeStatus.ERROR, exchange.getStatus());
+ public void testInOnlyDynamicRecipientListException() throws Exception {
+ MockEndpoint a = getMockEndpoint("mock:a");
+ a.expectedMessageCount(1);
- assertTrue("A NullPointerException was expected", exchange.getError()
instanceof NullPointerException);
- }
+ MockEndpoint b = getMockEndpoint("mock:b");
+ b.expectedMessageCount(1);
- public void testInOutHandlingBusinessException() throws Exception {
ServiceMixClient client = new DefaultServiceMixClient(jbiContainer);
- InOut exchange = client.createInOutExchange();
- exchange.setService(new QName("urn:test", "failsafe"));
- exchange.getInMessage().setContent(new StringSource("<request>I would
like to do business, please!</request>"));
+ InOnly exchange = client.createInOnlyExchange();
+ exchange.setService(new QName("urn:test", "recipientlist"));
+ exchange.getInMessage().setContent(new StringSource("<request>Please
forward this to the recipients</request>"));
client.sendSync(exchange);
- assertEquals(ExchangeStatus.ACTIVE, exchange.getStatus());
-
- client.done(exchange);
+ assertEquals(ExchangeStatus.DONE, exchange.getStatus());
- // let's wait a moment to make sure that the last DONE MessageExchange
is handled
- Thread.sleep(500);
+ a.assertIsSatisfied();
+ b.assertIsSatisfied();
}
@Override
@@ -63,32 +63,37 @@
public void configure() throws Exception {
errorHandler(noErrorHandler());
- from("jbi:endpoint:urn:test:failsafe:endpoint")
- .doTry()
- .to("jbi:endpoint:urn:test:service:endpoint")
- .doCatch(BusinessException.class)
- .setBody(constant("<response>We handled that pretty
well, didn't we?</response>"));
+ from("jbi:endpoint:urn:test:recipientlist:endpoint")
+ .beanRef("annotated-pojo", "route");
- from("jbi:endpoint:urn:test:service:endpoint").bean(new
MyPojo());
+ from("jbi:endpoint:urn:test:a:endpoint").to("mock:a");
+ from("jbi:endpoint:urn:test:b:endpoint").to("mock:b");
}
};
}
- public class MyPojo {
-
- public void handle(String message) {
- if (message.contains("NPE")) {
- throw new NullPointerException("You asked for a NPE, you got
it!");
- } else {
- throw new BusinessException("Something went wrong, but we can
still recover, can't we?");
- }
+ @Override
+ protected CamelContext createCamelContext() {
+ try {
+ JndiContext context = new JndiContext();
+ context.bind("annotated-pojo", new MyDynamicRecipientListPojo());
+ JndiRegistry registry = new JndiRegistry(context);
+ return new DefaultCamelContext(registry);
+ } catch (Exception e) {
+ fail(e.getMessage());
}
-
+ return null;
}
- private class BusinessException extends RuntimeException {
- public BusinessException(String message) {
- super(message);
+
+ protected final class MyDynamicRecipientListPojo {
+
+ @RecipientList
+ public String[] route(String message) {
+ return new String[] {
+ "jbi:endpoint:urn:test:a:endpoint",
+ "jbi:endpoint:urn:test:b:endpoint"
+ };
}
}
}
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su12-src/camel-context.xml
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su12-src/camel-context.xml?rev=883316&r1=883315&r2=883316&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su12-src/camel-context.xml
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su12-src/camel-context.xml
Mon Nov 23 12:18:56 2009
@@ -58,7 +58,7 @@
<bean id="deadLetterErrorHandler"
class="org.apache.camel.builder.DeadLetterChannelBuilder">
<property name="logger" ref="logger" />
- <property name="deadLetterUri" value="log:dlc?showBody=false,log:dlc"/>
+ <property name="deadLetterUri" value="log:dlc"/>
<property name="redeliveryPolicy" ref="redeliveryPolicyConfig" />
</bean>
Modified:
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml
URL:
http://svn.apache.org/viewvc/servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml?rev=883316&r1=883315&r2=883316&view=diff
==============================================================================
---
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml
(original)
+++
servicemix/components/engines/servicemix-camel/trunk/src/test/resources/org/apache/servicemix/camel/su9-src/camel-context.xml
Mon Nov 23 12:18:56 2009
@@ -58,7 +58,7 @@
<bean id="deadLetterErrorHandler"
class="org.apache.camel.builder.DeadLetterChannelBuilder">
<property name="logger" ref="logger" />
- <property name="deadLetterUri" value="log:dlc?showBody=false,log:dlc"/>
+ <property name="deadLetterUri" value="log:dlc"/>
<property name="redeliveryPolicy" ref="redeliveryPolicyConfig" />
</bean>