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>
     


Reply via email to