[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