[jboss-svn-commits] JBL Code SVN: r23078 - in labs/jbossesb/workspace/skeagh/runtime/src: main/java/org/jboss/esb/deploy/config and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Sep 25 11:37:22 EDT 2008


Author: tfennelly
Date: 2008-09-25 11:37:22 -0400 (Thu, 25 Sep 2008)
New Revision: 23078

Added:
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_02.xml
Modified:
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/DeploymentRuntime.java
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/InboundRouterConfig.java
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/AbstractDispatcher.java
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/LocalDispatcher.java
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/federate/DeploymentMonitor.java
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/routing/ServiceInvoker.java
   labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/inrouters-smooks.xml
   labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/jbossesb-5.0.xsd
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/TestService.java
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/DefaultConfigurationDigesterTest.java
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/lifecycle/UndeployDispatcherDelayTest.java
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/01-deployment.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/02-deployment.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/03-deployment.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/RoutingTest.java
Log:
Routing and replyto tests and mods.

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/DeploymentRuntime.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/DeploymentRuntime.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/DeploymentRuntime.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -609,6 +609,8 @@
                     LocalDispatcher dispatcher = new LocalDispatcher(context);
                     dispatcher.setServiceName(serviceName);
                     dispatcher.setService(getService(aggregatedDeploymentUnit, serviceName));
+                    dispatcher.setReplyTo(routerConfig.getReplyTo());
+                    dispatcher.setFaultTo(routerConfig.getFaultTo());
                     dispatcher.setTransformers(routerConfig.getTransformers());
                     dispatcher.setOutboundRouters(aggregatedDeploymentUnit.getOutboundRouters().get(serviceName));
 

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/InboundRouterConfig.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/InboundRouterConfig.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/InboundRouterConfig.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -22,6 +22,7 @@
 import org.jboss.esb.message.MessageTransformer;
 import org.jboss.esb.routing.InboundRouter;
 import org.jboss.esb.routing.MessageDispatcher;
+import org.jboss.esb.service.ServiceName;
 
 import java.util.List;
 
@@ -48,6 +49,14 @@
      * Router transformers.
      */
     private List<MessageTransformer> transformers;
+    /**
+     * "replyTo" address for all messages dispatched from this router.
+     */
+    private ServiceName replyTo;
+    /**
+     * "faultTo" address for all messages dispatched from this router.
+     */
+    private ServiceName faultTo;
 
     /**
      * Get the router configuration name.
@@ -91,6 +100,7 @@
 
     /**
      * Get the {@link MessageDispatcher} associated with this router config.
+     *
      * @return The DispatcherProxy instance.
      */
     public final MessageDispatcher getDispatcher()
@@ -100,6 +110,7 @@
 
     /**
      * Get the {@link MessageDispatcher} associated with this router config.
+     *
      * @param dispatcher The DispatcherProxy instance.
      */
     public final void setDispatcher(final MessageDispatcher dispatcher)
@@ -126,4 +137,48 @@
     {
         this.transformers = transformers;
     }
+
+    /**
+     * Get the "replyTo" address for messages generated out of this
+     * inrouter.
+     *
+     * @return The replyTo Service name.
+     */
+    public final ServiceName getReplyTo()
+    {
+        return replyTo;
+    }
+
+    /**
+     * Set the "replyTo" address for messages generated out of this
+     * inrouter.
+     *
+     * @param replyTo The replyTo Service name.
+     */
+    public final void setReplyTo(final ServiceName replyTo)
+    {
+        this.replyTo = replyTo;
+    }
+
+    /**
+     * Get the "faultTo" address for messages generated out of this
+     * inrouter.
+     *
+     * @return The faultTo Service name.
+     */
+    public final ServiceName getFaultTo()
+    {
+        return faultTo;
+    }
+
+    /**
+     * Set the "faultTo" address for messages generated out of this
+     * inrouter.
+     *
+     * @param faultTo The replyTo Service name.
+     */
+    public final void setFaultTo(final ServiceName faultTo)
+    {
+        this.faultTo = faultTo;
+    }
 }

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/AbstractDispatcher.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/AbstractDispatcher.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/AbstractDispatcher.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -192,12 +192,23 @@
         {
             try
             {
-                Message outMessage = service.process(theMessage);
-                AddressingContext.getContext().setFrom(getServiceName());
+                AddressingContext addressingContext = AddressingContext.getContext();
+                ServiceName replyTo = addressingContext.getReplyTo();
+                Message outMessage;
 
+                // Process the message...
+                outMessage = service.process(theMessage);
+                addressingContext.setFrom(getServiceName());
+
                 // Log this processing event...
                 ProcessingEventLog.getEventLog().logEvent(new ServiceProcessingEvent(getServiceName()));
 
+                // If we need to send a reply, send it now...
+                if(outMessage != null && replyTo != null)
+                {
+                    serviceInvoker.send(outMessage, replyTo);
+                }
+
                 return outMessage;
             }
             catch (ServiceException e)
@@ -282,25 +293,25 @@
                     }
                 }
 
-                // Create a clone of the message in case there's an error or
-                // there are multiple outrouters with transformers on them...
-                Message clone = (Message) outMessage.clone();
-                
                 for (OutboundRouterConfig outboundRouterConfig : outboundRouters)
                 {
+                    // Create a shallow clone of the message in case there's an error or
+                    // there are multiple outrouters with transformers on them...
+                    Message clone = (Message) outMessage.clone();
                     OutboundRouter outRouter = outboundRouterConfig.getRouter();
+
                     if (outRouter instanceof BusOutboundRouter)
                     {
                         if (!((BusOutboundRouter) outRouter).hasService(serviceName))
                         {
                             try
                             {
-                                outRouter.route(outMessage);
+                                outRouter.route(clone);
                             }
                             catch (Throwable t)
                             {
                                 logger.error("Exception routing message to remote OutboundRouter for Service '" + addressContext.getTo() + "' via OutboundRouter.  Router Configuration '" + outboundRouterConfig.getName() + "'.  Routing to Dead Letter Service '" + DeadLetterPersistanceService.SERVICE_NAME + "'.", t);
-                                routeToDeadLetterService(outMessage, t);
+                                routeToDeadLetterService(clone, t);
                             }
                         }
                     }
@@ -308,7 +319,7 @@
                     {
                         try
                         {
-                            applyOutboundTransformers(outMessage, outboundRouterConfig.getTransformers());
+                            applyOutboundTransformers(clone, outboundRouterConfig.getTransformers());
                         }
                         catch (Throwable t)
                         {
@@ -316,10 +327,11 @@
                             // We route the clone because it's unmodified... allows us to
                             // start from scratch again...
                             routeToDeadLetterService(clone, t);
+                            continue;
                         }
                         try
                         {
-                            outRouter.route(outMessage);
+                            outRouter.route(clone);
 
                             // Log this processing event...
                             ProcessingEventLog.getEventLog().logEvent(new OutboundRouterProcessingEvent(outboundRouterConfig.getName()));
@@ -331,15 +343,6 @@
                             // start from scratch again...
                             routeToDeadLetterService(clone, t);
                         }
-                        finally
-                        {
-                            // Reset the message contents in case there are multiple
-                            // outrouters.  They may have transformers that modified
-                            // the original message...
-                            outMessage.setPayload(clone.getPayload());
-                            outMessage.getAttachments().clear();
-                            outMessage.getAttachments().putAll(clone.getAttachments());
-                        }
                     }
                 }
             }

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/LocalDispatcher.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/LocalDispatcher.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/LocalDispatcher.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -26,6 +26,7 @@
 import org.jboss.esb.message.Message;
 import org.jboss.esb.util.AssertArgument;
 import org.jboss.esb.history.ProcessingEventLog;
+import org.jboss.esb.service.ServiceName;
 
 /**
  * Local message dispatcher.
@@ -38,6 +39,14 @@
      * Logger.
      */
     private static Logger logger = Logger.getLogger(LocalDispatcher.class);
+    /**
+     * ReplyTo Address.
+     */
+    private ServiceName replyTo;
+    /**
+     * FaultTo Address.
+     */
+    private ServiceName faultTo;
 
     /**
      * Public constructor.
@@ -51,6 +60,24 @@
     }
 
     /**
+     * Set the "replyTo" address.
+     * @param replyTo The "replyTo" address.
+     */
+    public final void setReplyTo(final ServiceName replyTo)
+    {
+        this.replyTo = replyTo;
+    }
+
+    /**
+     * Set the "faultTo" address.
+     * @param faultTo The "faultTo" address.
+     */
+    public final void setFaultTo(final ServiceName faultTo)
+    {
+        this.faultTo = faultTo;
+    }
+
+    /**
      * Dispatch method.
      * <p/>
      * Receives a message, applies the set of transforms to it, passes it to
@@ -72,6 +99,9 @@
             AddressingContext addressingContext = new AddressingContext();
 
             addressingContext.setTo(getServiceName());
+            addressingContext.setReplyTo(replyTo);
+            addressingContext.setFaultTo(faultTo);
+
             AddressingContext.setContext(addressingContext);
             try
             {

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/federate/DeploymentMonitor.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/federate/DeploymentMonitor.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/federate/DeploymentMonitor.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -25,8 +25,8 @@
 import org.jboss.esb.failure.DeadLetterPersistanceService;
 import org.jboss.esb.federate.bus.Bus;
 import org.jboss.esb.federate.bus.BusMessage;
+import org.jboss.esb.history.ProcessingEventLog;
 import org.jboss.esb.history.events.BusRouterProcessingEvent;
-import org.jboss.esb.history.ProcessingEventLog;
 import org.jboss.esb.message.Message;
 import org.jboss.esb.routing.ServiceInvoker;
 import org.jboss.esb.service.ServiceName;

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/routing/ServiceInvoker.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/routing/ServiceInvoker.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/routing/ServiceInvoker.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -154,7 +154,10 @@
 
                 if(eventLog.propagate())
                 {
-                    ProcessingEventLog.setEventLog(eventLog, dispatchInvocationContext);
+                    ProcessingEventLog newEventLog = new ProcessingEventLog(true);
+
+                    newEventLog.getProcessingEvents().addAll(eventLog.getProcessingEvents());
+                    ProcessingEventLog.setEventLog(newEventLog, dispatchInvocationContext);
                 }
 
                 // And dispatch the message...

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/inrouters-smooks.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/inrouters-smooks.xml	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/inrouters-smooks.xml	2008-09-25 15:37:22 UTC (rev 23078)
@@ -38,6 +38,8 @@
     <jb:bindings beanId="inRouterConfig" class="org.jboss.esb.deploy.config.InboundRouterConfig" createOnElement="inRouter">
         <jb:wiring property="router" beanIdRef="inRouter" />
         <jb:wiring property="transformers" beanIdRef="transformers" />
+        <jb:wiring property="replyTo" beanIdRef="replyTo" />
+        <jb:wiring property="faultTo" beanIdRef="faultTo" />
         <jb:value property="name" data="inRouter/@name" />
     </jb:bindings>
 
@@ -54,4 +56,52 @@
         <param name="nameAttrib">name</param>
     </resource-config>
 
+    <!--
+        "replyTo" Service Name...
+    -->
+
+    <resource-config selector="replyTo">
+        <resource>org.jboss.esb.deploy.config.digest.CreateObject</resource>
+        <param name="beanId">replyTo</param>
+        <param name="className">org.jboss.esb.service.ServiceName</param>
+    </resource-config>
+
+    <resource-config selector="replyTo">
+        <resource>org.jboss.esb.deploy.config.digest.SetProperty</resource>
+        <param name="beanId">replyTo</param> <!-- Created above. -->
+        <param name="property">category</param>
+        <param name="valueAttrib">serviceCategory</param>
+    </resource-config>
+
+    <resource-config selector="replyTo">
+        <resource>org.jboss.esb.deploy.config.digest.SetProperty</resource>
+        <param name="beanId">replyTo</param> <!-- Created above. -->
+        <param name="property">name</param>
+        <param name="valueAttrib">serviceName</param>
+    </resource-config>
+
+    <!--
+        "faultTo" Service Name...
+    -->
+
+    <resource-config selector="faultTo">
+        <resource>org.jboss.esb.deploy.config.digest.CreateObject</resource>
+        <param name="beanId">faultTo</param>
+        <param name="className">org.jboss.esb.service.ServiceName</param>
+    </resource-config>
+
+    <resource-config selector="faultTo">
+        <resource>org.jboss.esb.deploy.config.digest.SetProperty</resource>
+        <param name="beanId">faultTo</param> <!-- Created above. -->
+        <param name="property">category</param>
+        <param name="valueAttrib">serviceCategory</param>
+    </resource-config>
+
+    <resource-config selector="faultTo">
+        <resource>org.jboss.esb.deploy.config.digest.SetProperty</resource>
+        <param name="beanId">faultTo</param> <!-- Created above. -->
+        <param name="property">name</param>
+        <param name="valueAttrib">serviceName</param>
+    </resource-config>
+
 </smooks-resource-list>
\ No newline at end of file

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/jbossesb-5.0.xsd
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/jbossesb-5.0.xsd	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/resources/META-INF/jbossesb/xsd/jbossesb-5.0.xsd	2008-09-25 15:37:22 UTC (rev 23078)
@@ -116,6 +116,11 @@
         </xs:sequence>
     </xs:complexType>
 
+    <xs:complexType name="address">
+        <xs:attribute name="serviceCategory" use="required" type="xs:string"/>
+        <xs:attribute name="serviceName" use="required" type="xs:string"/>
+    </xs:complexType>
+
     <!--
         In Routing...
     -->
@@ -141,6 +146,8 @@
             <xs:complexContent>
                 <xs:extension base="abstractInRouter">
                     <xs:sequence>
+                        <xs:element name="replyTo" type="address" minOccurs="0" maxOccurs="1"/>
+                        <xs:element name="faultTo" type="address" minOccurs="0" maxOccurs="1"/>
                         <xs:element name="property" type="property" minOccurs="0" maxOccurs="unbounded"/>
                     </xs:sequence>
                     <xs:attribute name="class" type="xs:string" use="required" />

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/TestService.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/TestService.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/TestService.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -33,6 +33,7 @@
 public class TestService implements Service
 {
     private String message;
+    private String messageAppendage;
     public static InvocationContext invocationContext;
     public static AddressingContext addressingContext;
     public static DeploymentContext deploymentContext;
@@ -60,6 +61,11 @@
         return message;
     }
 
+    public void setMessageAppendage(String messageAppendage)
+    {
+        this.messageAppendage = messageAppendage;
+    }
+
     public void setSleep(long sleep)
     {
         this.sleep = sleep;

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/DefaultConfigurationDigesterTest.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/DefaultConfigurationDigesterTest.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/DefaultConfigurationDigesterTest.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -19,26 +19,24 @@
  */
 package org.jboss.esb.deploy.config;
 
+import org.jboss.esb.deploy.DeploymentException;
+import org.jboss.esb.deploy.config.digest.DefaultConfigurationDigester;
+import org.jboss.esb.deploy.config.digest.DigestUtil;
+import org.jboss.esb.message.MessageTransformer;
+import org.jboss.esb.service.ServiceName;
+import org.junit.After;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
+import org.junit.Test;
+import org.milyn.SmooksException;
 
 import java.io.IOException;
 import java.net.URI;
 import java.util.List;
 import java.util.Map;
 
-import org.jboss.esb.deploy.DeploymentException;
-import org.jboss.esb.deploy.config.digest.DefaultConfigurationDigester;
-import org.jboss.esb.deploy.config.digest.DigestUtil;
-import org.jboss.esb.message.MessageTransformer;
-import org.jboss.esb.service.ServiceName;
-import org.junit.After;
-import org.junit.Ignore;
-import org.junit.Test;
-import org.milyn.SmooksException;
-
 /**
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  */
@@ -85,6 +83,33 @@
         test_outrouters(configUnit);
     }
 
+    @Test
+    public void test_inrouters_02() throws DeploymentException, IOException
+    {
+        DeploymentUnit configUnit = digest("jbossesb-inrouters_02.xml");
+        Map<ServiceName, List<InboundRouterConfig>> inRouters = configUnit.getInboundRouters();
+        InboundRouterConfig routerConfig;
+
+        List<InboundRouterConfig> cRouterConfigs = inRouters.get(new ServiceName("service-cat", "service-c"));
+        assertEquals(4, cRouterConfigs.size());
+
+        routerConfig = cRouterConfigs.get(0);
+        assertEquals(new ServiceName("cat", "s1"), routerConfig.getReplyTo());
+        assertEquals(null, routerConfig.getFaultTo());
+
+        routerConfig = cRouterConfigs.get(1);
+        assertEquals(null, routerConfig.getReplyTo());
+        assertEquals(new ServiceName("cat", "s2"), routerConfig.getFaultTo());
+
+        routerConfig = cRouterConfigs.get(2);
+        assertEquals(new ServiceName("cat", "s3"), routerConfig.getReplyTo());
+        assertEquals(new ServiceName("cat", "s4"), routerConfig.getFaultTo());
+
+        routerConfig = cRouterConfigs.get(3);
+        assertEquals(null, routerConfig.getReplyTo());
+        assertEquals(null, routerConfig.getFaultTo());
+    }
+
     private void test_inrouters(String config) throws IOException, DeploymentException
     {
         DeploymentUnit configUnit = digest(config);

Copied: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_02.xml (from rev 23074, labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_01.xml)
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_02.xml	                        (rev 0)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_02.xml	2008-09-25 15:37:22 UTC (rev 23078)
@@ -0,0 +1,21 @@
+<jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
+
+    <routing>
+
+        <!-- Test the replyTo and faultTo -->
+        <inRouters serviceCategory="service-cat" serviceName="service-c">
+            <inRouter name="inrouter5" class="org.jboss.esb.deploy.config.MyInRouter">
+                <replyTo serviceCategory="cat" serviceName="s1"/>
+            </inRouter>
+            <inRouter name="inrouter6" class="org.jboss.esb.deploy.config.MyInRouter">
+                <faultTo serviceCategory="cat" serviceName="s2"/>
+            </inRouter>
+            <inRouter name="inrouter7" class="org.jboss.esb.deploy.config.MyInRouter">
+                <replyTo serviceCategory="cat" serviceName="s3"/>
+                <faultTo serviceCategory="cat" serviceName="s4"/>
+            </inRouter>
+            <inRouter name="inrouter8" class="org.jboss.esb.deploy.config.MyInRouter" />
+        </inRouters>
+    </routing>
+    
+</jbossesb>
\ No newline at end of file


Property changes on: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/jbossesb-inrouters_02.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:mergeinfo
   + 
Name: svn:eol-style
   + native

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/lifecycle/UndeployDispatcherDelayTest.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/lifecycle/UndeployDispatcherDelayTest.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/lifecycle/UndeployDispatcherDelayTest.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -89,9 +89,14 @@
                                 Thread.sleep(10);
                             }
 
+                            long start = System.currentTimeMillis();
+
+                            // Wait another fraction, just to make sure the services get into
+                            // their sleep states...
+                            Thread.sleep(100);
+
                             // Run the undeploy... they should wait until all messages have
                             // been processed...
-                            long start = System.currentTimeMillis();
                             inrouterDeployment.undeploy();
                             serviceADeployment.undeploy();
                             serviceBDeployment.undeploy();

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/01-deployment.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/01-deployment.xml	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/01-deployment.xml	2008-09-25 15:37:22 UTC (rev 23078)
@@ -1,34 +1,11 @@
 <jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
-    
+
     <routing>
         <inRouters serviceCategory="Service" serviceName="A">
-            <inRouter name="inrouter" class="org.jboss.esb.TestInboundRouter" />
+            <inRouter name="inrouter" class="org.jboss.esb.TestInboundRouter">
+                <replyTo serviceCategory="Service" serviceName="B" />
+            </inRouter>
         </inRouters>
-
-        <!--
-            Route the message from A to B....
-        -->
-        <outRouters serviceCategory="Service" serviceName="A">
-            <outRouter name="A_to_B_router" class="org.jboss.esb.routing.ServiceRouter">
-                <property name="toCategory">Service</property>
-                <property name="toService">B</property>
-            </outRouter>
-        </outRouters>
-        <!--
-            Route the message from B to C....
-        -->
-        <outRouters serviceCategory="Service" serviceName="B">
-            <outRouter name="B_to_C_router" class="org.jboss.esb.routing.ServiceRouter">
-                <property name="toCategory">Service</property>
-                <property name="toService">C</property>
-            </outRouter>
-        </outRouters>
     </routing>
 
-    <services>
-        <service serviceCategory="Service" serviceName="A" serviceDescription="A Service" class="org.jboss.esb.TestService" />
-        <service serviceCategory="Service" serviceName="B" serviceDescription="B Service" class="org.jboss.esb.TestService" />
-        <service serviceCategory="Service" serviceName="F" serviceDescription="F Service" class="org.jboss.esb.TestService" />
-    </services>
-
 </jbossesb>
\ No newline at end of file

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/02-deployment.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/02-deployment.xml	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/02-deployment.xml	2008-09-25 15:37:22 UTC (rev 23078)
@@ -1,29 +1,16 @@
 <jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
 
+    <services>
+        <service serviceCategory="Service" serviceName="A" serviceDescription="A Service" class="org.jboss.esb.TestService" />
+    </services>
+
     <routing>
-        <!--
-            Route the message from C to D....
-        -->
-        <outRouters serviceCategory="Service" serviceName="C">
-            <outRouter name="C_to_D_router" class="org.jboss.esb.routing.ServiceRouter">
-                <property name="toCategory">Service</property>
-                <property name="toService">D</property>
-            </outRouter>
+        <outRouters serviceCategory="Service" serviceName="A">
+            <!--
+                And route it out altogether...
+            -->
+            <outRouter name="outrouter" class="org.jboss.esb.TestOutboundRouter" />
         </outRouters>
-        <!--
-            Route the message from E to F....
-        -->
-        <outRouters serviceCategory="Service" serviceName="E">
-            <outRouter name="E_to_F_router" class="org.jboss.esb.routing.ServiceRouter">
-                <property name="toCategory">Service</property>
-                <property name="toService">F</property>
-            </outRouter>
-        </outRouters>
     </routing>
 
-    <services>
-        <service serviceCategory="Service" serviceName="C" serviceDescription="C Service" class="org.jboss.esb.TestService" />
-        <service serviceCategory="Service" serviceName="E" serviceDescription="E Service" class="org.jboss.esb.TestService" />
-    </services>
-
 </jbossesb>
\ No newline at end of file

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/03-deployment.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/03-deployment.xml	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/03-deployment.xml	2008-09-25 15:37:22 UTC (rev 23078)
@@ -1,19 +1,7 @@
 <jbossesb xmlns="http://www.jboss.org/jbossesb/xsd/jbossesb-5.0.xsd">
 
     <services>
-        <service serviceCategory="Service" serviceName="D" serviceDescription="D Service" class="org.jboss.esb.TestService" />
+        <service serviceCategory="Service" serviceName="B" serviceDescription="B Service" class="org.jboss.esb.TestService" />
     </services>
 
-    <routing>
-        <!--
-            Route the message from D to E....
-        -->
-        <outRouters serviceCategory="Service" serviceName="D">
-            <outRouter name="D_to_E_router" class="org.jboss.esb.routing.ServiceRouter">
-                <property name="toCategory">Service</property>
-                <property name="toService">E</property>
-            </outRouter>
-        </outRouters>
-    </routing>
-    
 </jbossesb>
\ No newline at end of file

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/RoutingTest.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/RoutingTest.java	2008-09-25 13:58:59 UTC (rev 23077)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/RoutingTest.java	2008-09-25 15:37:22 UTC (rev 23078)
@@ -25,6 +25,7 @@
 import org.jboss.esb.jms.JMSTestRunner;
 import org.jboss.esb.TestInboundRouter;
 import org.jboss.esb.TestService;
+import org.jboss.esb.TestOutboundRouter;
 import org.jboss.esb.service.ServiceName;
 
 /**
@@ -34,11 +35,10 @@
 {
 
     /*
-     * The message should go (across the 3 deployments and back):
-     *      [inrouter_ServiceA -> ServiceA -> ServiceB] -> [ServiceC] -> [ServiceD]
-     *                                                                        |
-     *                                                                       \|/
-     *      [               ServiceF                  ] -> [ServiceE] <-------
+     * The message should go (across the 3 deployments):
+     *      [inrouter_ServiceA] -> [ServiceA] -|
+     *                                         |-> [replyTo{ServiceB}]
+     *                                         |-> [outrouter_ServiceA]
      */
     public void test() throws Exception
     {
@@ -46,7 +46,7 @@
             public void test() throws Exception
             {
                 ServiceName serviceNameA = new ServiceName("Service", "A");
-                ServiceName serviceNameF = new ServiceName("Service", "F");
+                ServiceName serviceNameB = new ServiceName("Service", "B");
                 DeploymentRuntime deployment1 = DeploymentUtil.createRuntime(getClass().getResourceAsStream("01-deployment.xml"));
 
                 deployment1.setDeploymentName("deployment1");
@@ -70,30 +70,32 @@
                         try
                         {
                             TestInboundRouter inrouter = (TestInboundRouter) DeploymentUtil.getInboundRouter(serviceNameA, "inrouter", deployment1).getRouter();
-                            TestService serviceA = (TestService) DeploymentUtil.getService(serviceNameA, deployment1).getService();
-                            TestService serviceF = (TestService) DeploymentUtil.getService(serviceNameF, deployment1).getService();
+                            TestService serviceA = (TestService) DeploymentUtil.getService(serviceNameA, deployment2).getService();
+                            TestService serviceB = (TestService) DeploymentUtil.getService(serviceNameB, deployment3).getService();
+                            TestOutboundRouter outrouter = (TestOutboundRouter) DeploymentUtil.getOutboundRouter(serviceNameA, "outrouter", deployment2).getRouter();
 
-                            // Force propagation of the event log...
                             inrouter.sendMessage("Hi there!!", true);
-                            Thread.sleep(1000); // Allow the message to be delivered
+                            Thread.sleep(300); // Allow the message to be delivered
 
                             // Check that the message has been routed across deployments, from the inrouter
                             // to the service instance and then to the outrouter...
                             assertEquals("Hi there!!", serviceA.getMessage());
-                            assertEquals("Hi there!!", serviceF.getMessage());
+                            assertEquals("Hi there!!", serviceB.getMessage());
+                            assertEquals("Hi there!!", outrouter.getMessage());
 
                             assertEquals("Message Processing Event Log:\n" +
-                                    "\t1.   [deployment1-Id:deployment1] ServiceProcessingEvent: service='Service:A'\n" +
-                                    "\t2.   [deployment1-Id:deployment1] ServiceProcessingEvent: service='Service:B'\n" +
-                                    "\t3.   [deployment1-Id:deployment1] BusRouterProcessingEvent: to='Service:C', targetDeploymentId='deployment2-Id:deployment2', busType='JMSBus'\n" +
-                                    "\t4.   [deployment2-Id:deployment2] ServiceProcessingEvent: service='Service:C'\n" +
-                                    "\t5.   [deployment2-Id:deployment2] BusRouterProcessingEvent: to='Service:D', targetDeploymentId='deployment3-Id:deployment3', busType='JMSBus'\n" +
-                                    "\t6.   [deployment3-Id:deployment3] ServiceProcessingEvent: service='Service:D'\n" +
-                                    "\t7.   [deployment3-Id:deployment3] BusRouterProcessingEvent: to='Service:E', targetDeploymentId='deployment2-Id:deployment2', busType='JMSBus'\n" +
-                                    "\t8.   [deployment2-Id:deployment2] ServiceProcessingEvent: service='Service:E'\n" +
-                                    "\t9.   [deployment2-Id:deployment2] BusRouterProcessingEvent: to='Service:F', targetDeploymentId='deployment1-Id:deployment1', busType='JMSBus'\n" +
-                                    "\t10.  [deployment1-Id:deployment1] ServiceProcessingEvent: service='Service:F'",
-                                    serviceF.getEventLog().toString().trim());
+                                    "\t1.   [deployment1-Id:deployment1] BusRouterProcessingEvent: to='Service:A', targetDeploymentId='deployment2-Id:deployment2', busType='JMSBus'\n" +
+                                    "\t2.   [deployment2-Id:deployment2] ServiceProcessingEvent: service='Service:A'\n" +
+                                    "\t3.   [deployment2-Id:deployment2] BusRouterProcessingEvent: to='Service:B', targetDeploymentId='deployment3-Id:deployment3', busType='JMSBus'\n" +
+                                    "\t4.   [deployment3-Id:deployment3] ServiceProcessingEvent: service='Service:B'",
+                                    serviceB.getEventLog().toString().trim());
+
+                            assertEquals("Message Processing Event Log:\n" +
+                                    "\t1.   [deployment1-Id:deployment1] BusRouterProcessingEvent: to='Service:A', targetDeploymentId='deployment2-Id:deployment2', busType='JMSBus'\n" +
+                                    "\t2.   [deployment2-Id:deployment2] ServiceProcessingEvent: service='Service:A'\n" +
+                                    "\t3.   [deployment2-Id:deployment2] BusRouterProcessingEvent: to='Service:B', targetDeploymentId='deployment3-Id:deployment3', busType='JMSBus'\n" +
+                                    "\t4.   [deployment2-Id:deployment2] OutboundRouterProcessingEvent: config='outrouter'",
+                                    outrouter.getEventLog().toString().trim());
                         }
                         finally
                         {




More information about the jboss-svn-commits mailing list