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

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Sep 29 11:52:53 EDT 2008


Author: tfennelly
Date: 2008-09-29 11:52:53 -0400 (Mon, 29 Sep 2008)
New Revision: 23187

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/ServiceConfig.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/federate/notify/DeploymentDetailsNotification.java
   labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/routing/ServiceInvoker.java
   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_009/01-deployment.xml
   labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_010/01-deployment.xml
Log:
more mep stuff

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-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/DeploymentRuntime.java	2008-09-29 15:52:53 UTC (rev 23187)
@@ -40,24 +40,23 @@
 import org.jboss.esb.message.MessageProcessor;
 import org.jboss.esb.properties.ApplicationProperties;
 import org.jboss.esb.properties.PropertiesIterator;
+import org.jboss.esb.routing.MessageDispatcher;
 import org.jboss.esb.schedule.JobScheduler;
 import org.jboss.esb.schedule.SimpleSchedule;
-import org.jboss.esb.service.Service;
 import org.jboss.esb.service.ServiceName;
 import org.jboss.esb.util.AssertArgument;
-import org.jboss.esb.routing.MessageDispatcher;
 
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.UUID;
-import java.util.Collection;
-import java.util.Iterator;
 
 /**
  * JBoss ESB Runtime.
@@ -602,13 +601,20 @@
             {
                 try
                 {
+                    ServiceConfig service = getService(aggregatedDeploymentUnit, serviceName);
+
+                    if(service != null && !service.isRoutable())
+                    {
+                        throw new DeploymentException("Invalid InboundRouter configuration '" + routerConfig.getName() + "' (" + routerConfig.getRouter().getClass().getName() + "). Target Service '" + serviceName + "' is not routable.  Check Service 'mep' configuration.");
+                    }
+
                     // Deploy the processors first...
                     deployProcessors(serviceName, routerConfig.getProcessors(), routerConfig.getName());
 
                     // Create a LocalDispatcher and hook it into the DispatcherProxy...
                     LocalDispatcher dispatcher = new LocalDispatcher(context);
                     dispatcher.setServiceName(serviceName);
-                    dispatcher.setService(getService(aggregatedDeploymentUnit, serviceName));
+                    dispatcher.setService(service);
                     dispatcher.setReplyTo(routerConfig.getReplyTo());
                     dispatcher.setFaultTo(routerConfig.getFaultTo());
                     dispatcher.setProcessors(routerConfig.getProcessors());
@@ -680,12 +686,12 @@
      * @param serviceName    The ServiceName.
      * @return The Service.
      */
-    private Service getService(final DeploymentUnit deploymentUnit, final ServiceName serviceName)
+    private ServiceConfig getService(final DeploymentUnit deploymentUnit, final ServiceName serviceName)
     {
         ServiceConfig serviceConfig = deploymentUnit.getServices().get(serviceName);
         if (serviceConfig != null)
         {
-            return serviceConfig.getService();
+            return serviceConfig;
         }
         return null;
     }
@@ -791,9 +797,16 @@
         for (Map.Entry<ServiceName, List<OutboundRouterConfig>> serviceOutRouters : outRouters)
         {
             ServiceName serviceName = serviceOutRouters.getKey();
+            ServiceConfig serviceConfig = aggregatedDeploymentUnit.getServices().get(serviceName);
+
+            // Only create the Bus InRouter if the service can be routed to...
+            if(serviceConfig != null && !serviceConfig.isRoutable())
+            {
+                continue;
+            }
+            
             BusInboundRouter inRouter = new BusInboundRouter();
             BusDispatcher dispatcher = new BusDispatcher(context);
-            ServiceConfig serviceConfig = aggregatedDeploymentUnit.getServices().get(serviceName);
             List<OutboundRouterConfig> outRouterList = serviceOutRouters.getValue();
 
             busRouters.put(serviceName, inRouter);
@@ -802,7 +815,7 @@
             dispatcher.setServiceName(serviceName);
             if (serviceConfig != null)
             {
-                dispatcher.setService(serviceConfig.getService());
+                dispatcher.setService(serviceConfig);
             }
             dispatcher.setOutboundRouters(outRouterList);
         }

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/ServiceConfig.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/ServiceConfig.java	2008-09-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/config/ServiceConfig.java	2008-09-29 15:52:53 UTC (rev 23187)
@@ -123,4 +123,26 @@
     {
         this.messageExchangePattern = messageExchangePattern;
     }
+
+    /**
+     * Is this service routable.
+     * <p/>
+     * According to the Service's {@link ServiceMEP}, can/should messages be
+     * routed to this service?
+     *
+     * @return True if the service is routable, otherwise false.
+     * @see ServiceMEP
+     */
+    public final boolean isRoutable()
+    {
+        switch(messageExchangePattern)
+        {
+            case InOnly:
+            case InOut:
+                return true;
+            default:
+                // Can't be routed to...
+                return false;
+        }        
+    }
 }

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-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/AbstractDispatcher.java	2008-09-29 15:52:53 UTC (rev 23187)
@@ -25,6 +25,8 @@
 import org.jboss.esb.context.FaultContext;
 import org.jboss.esb.context.InvocationContext;
 import org.jboss.esb.deploy.config.OutboundRouterConfig;
+import org.jboss.esb.deploy.config.ServiceConfig;
+import org.jboss.esb.deploy.config.ServiceMEP;
 import org.jboss.esb.failure.DeadLetterPersistanceService;
 import org.jboss.esb.federate.bus.BusMessage;
 import org.jboss.esb.federate.bus.BusOutboundRouter;
@@ -37,7 +39,6 @@
 import org.jboss.esb.routing.OutboundRouter;
 import org.jboss.esb.routing.RoutingException;
 import org.jboss.esb.routing.ServiceInvoker;
-import org.jboss.esb.service.Service;
 import org.jboss.esb.service.ServiceException;
 import org.jboss.esb.service.ServiceName;
 
@@ -70,9 +71,9 @@
      */
     private ServiceName serviceName;
     /**
-     * The Service instance (can be null).
+     * The Service config (can be null).
      */
-    private Service service;
+    private ServiceConfig service;
     /**
      * The outbound routers, to which the message is passed after
      * Service invocation (can be null).
@@ -188,7 +189,7 @@
      */
     protected final Message dispatchToService(final Message theMessage)
     {
-        if (service != null)
+        if (service != null && service.getService() != null)
         {
             try
             {
@@ -197,7 +198,7 @@
                 Message outMessage;
 
                 // Process the message...
-                outMessage = service.process(theMessage);
+                outMessage = service.getService().process(theMessage);
                 addressingContext.setFrom(getServiceName());
 
                 // Log this processing event...
@@ -206,9 +207,16 @@
                 // If we need to send a reply, send it now...
                 if(outMessage != null && replyTo != null)
                 {
-                    // We make a shallow clone in case it's a local service
-                    // invocation...
-                    serviceInvoker.send((Message) outMessage.clone(), replyTo);
+                    if(service.getMessageExchangePattern() == ServiceMEP.InOut)
+                    {
+                        // We make a shallow clone in case it's a local service
+                        // invocation...
+                        serviceInvoker.send((Message) outMessage.clone(), replyTo);
+                    }
+                    else
+                    {
+                        logger.debug("Not sending reply to '" + replyTo + "'.  Service '" + serviceName + "' does not support 'replyTo'. Service MEP is '" + service.getMessageExchangePattern() + "'.");
+                    }
                 }
 
                 return outMessage;
@@ -422,7 +430,7 @@
      *
      * @return The Service.
      */
-    public final Service getService()
+    public final ServiceConfig getService()
     {
         return service;
     }
@@ -432,7 +440,7 @@
      *
      * @param service The Service.
      */
-    public final void setService(final Service service)
+    public final void setService(final ServiceConfig service)
     {
         this.service = service;
     }

Modified: labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/federate/notify/DeploymentDetailsNotification.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/federate/notify/DeploymentDetailsNotification.java	2008-09-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/federate/notify/DeploymentDetailsNotification.java	2008-09-29 15:52:53 UTC (rev 23187)
@@ -21,9 +21,11 @@
 
 import org.jboss.esb.deploy.DeploymentRuntime;
 import org.jboss.esb.deploy.config.DeploymentUnit;
+import org.jboss.esb.deploy.config.ServiceConfig;
 import org.jboss.esb.federate.DeploymentServiceSets;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 /**
@@ -103,7 +105,14 @@
         {
             if (deploymentUnit.getServices() != null)
             {
-                notification.serviceSet.getServices().addAll(deploymentUnit.getServices().keySet());
+                Collection<ServiceConfig> services = deploymentUnit.getServices().values();
+                for (ServiceConfig service : services)
+                {
+                    if(service.isRoutable())
+                    {
+                        notification.serviceSet.getServices().add(service.getServiceName());
+                    }
+                }
             }
             if (deploymentUnit.getOutboundRouters() != null)
             {

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-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/routing/ServiceInvoker.java	2008-09-29 15:52:53 UTC (rev 23187)
@@ -25,6 +25,7 @@
 import org.jboss.esb.context.InvocationContext;
 import org.jboss.esb.deploy.DeploymentRuntime;
 import org.jboss.esb.deploy.DeploymentUtil;
+import org.jboss.esb.deploy.config.ServiceConfig;
 import org.jboss.esb.federate.DeploymentCoordinator;
 import org.jboss.esb.federate.DeploymentMonitor;
 import org.jboss.esb.federate.bus.BusInboundRouter;
@@ -113,14 +114,9 @@
 
         // Work out whether or not the target service is local,
         // or on another deployment...
-        boolean isLocalService = false;
-        if(DeploymentUtil.getService(addressing.getTo(), deploymentRuntime) != null)
+        ServiceConfig localServiceDeployment = DeploymentUtil.getService(addressing.getTo(), deploymentRuntime);
+        if(localServiceDeployment != null && localServiceDeployment.isRoutable())
         {
-            isLocalService = true;
-        }
-
-        if(isLocalService)
-        {
             return routeLocal(message, addressing);
         }
         else
@@ -129,7 +125,6 @@
         }
     }
 
-
     /**
      * Route the message to a local Service.
      * @param message The message.

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-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_008/02-deployment.xml	2008-09-29 15:52:53 UTC (rev 23187)
@@ -1,7 +1,7 @@
 <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" />
+        <service serviceCategory="Service" serviceName="A" serviceDescription="A Service" class="org.jboss.esb.TestService" mep="In-Out" />
     </services>
 
     <routing>

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_009/01-deployment.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_009/01-deployment.xml	2008-09-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_009/01-deployment.xml	2008-09-29 15:52:53 UTC (rev 23187)
@@ -1,7 +1,7 @@
 <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" />
+        <service serviceCategory="Service" serviceName="A" serviceDescription="A Service" class="org.jboss.esb.TestService" mep="In-Out" />
     </services>
 
     <routing>

Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_010/01-deployment.xml
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_010/01-deployment.xml	2008-09-29 14:35:24 UTC (rev 23186)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/routing/scenario_010/01-deployment.xml	2008-09-29 15:52:53 UTC (rev 23187)
@@ -1,7 +1,7 @@
 <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" />
+        <service serviceCategory="Service" serviceName="A" serviceDescription="A Service" class="org.jboss.esb.TestService" mep="In-Out" />
         <service serviceCategory="Service" serviceName="B" serviceDescription="B Service" class="org.jboss.esb.TestService" />
     </services>
 




More information about the jboss-svn-commits mailing list