[jboss-svn-commits] JBL Code SVN: r22308 - in labs/jbossesb/workspace/skeagh: commons/src/main/java/org/jboss/esb/classpath and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Sep 2 06:49:52 EDT 2008
Author: tfennelly
Date: 2008-09-02 06:49:51 -0400 (Tue, 02 Sep 2008)
New Revision: 22308
Modified:
labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/AddressingContext.java
labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/DeploymentContext.java
labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/InvocationContext.java
labs/jbossesb/workspace/skeagh/commons/src/main/java/org/jboss/esb/classpath/ClassUtil.java
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/dispatch/LocalDispatcher.java
labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyInRouter.java
labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyResource.java
labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloInboundRouter.java
labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloOutboundRouter.java
labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloWorldService.java
labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/LocalDispatcherTest.java
labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/RestStringTransformer.java
Log:
Scoped contexts.
Modified: labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/AddressingContext.java
===================================================================
--- labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/AddressingContext.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/AddressingContext.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -47,16 +47,33 @@
* "FaultTo" ServiceName for the message associated with the current context.
*/
private ServiceName faultTo;
+ /**
+ * Context ThreadLocal.
+ */
+ private static ThreadLocal<AddressingContext> contextTL = new ThreadLocal<AddressingContext>();
/**
+ * Set the {@link AddressingContext} associated with the current thread.
+ * @param context The {@link AddressingContext} associated with the current thread.
+ */
+ public static void setContext(final AddressingContext context)
+ {
+ if(context != null) {
+ contextTL.set(context);
+ } else {
+ contextTL.remove();
+ }
+ }
+
+ /**
* Get the {@link AddressingContext} associated with the message currently
* being processed.
* @return The {@link AddressingContext} associated with the message currently
* being processed.
*/
- public static AddressingContext getAddressingContext()
+ public static AddressingContext getContext()
{
- return null;
+ return contextTL.get();
}
/**
Modified: labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/DeploymentContext.java
===================================================================
--- labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/DeploymentContext.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/DeploymentContext.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -57,16 +57,20 @@
* Set the {@link DeploymentContext} associated with the current thread.
* @param context The {@link DeploymentContext} associated with the current thread.
*/
- public static void setDeploymentContext(final DeploymentContext context)
+ public static void setContext(final DeploymentContext context)
{
- contextTL.set(context);
+ if(context != null) {
+ contextTL.set(context);
+ } else {
+ contextTL.remove();
+ }
}
/**
* Get the {@link DeploymentContext} associated with the current thread.
* @return The {@link DeploymentContext} associated with the current thread.
*/
- public static DeploymentContext getDeploymentContext()
+ public static DeploymentContext getContext()
{
return contextTL.get();
}
Modified: labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/InvocationContext.java
===================================================================
--- labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/InvocationContext.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/api/service/src/main/java/org/jboss/esb/context/InvocationContext.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -36,21 +36,37 @@
*/
public class InvocationContext implements ESBContext
{
-
/**
* Context Data Map.
*/
private Map<Object, Object> contextMap = new LinkedHashMap<Object, Object>();
+ /**
+ * Context ThreadLocal.
+ */
+ private static ThreadLocal<InvocationContext> contextTL = new ThreadLocal<InvocationContext>();
/**
+ * Set the {@link InvocationContext} associated with the current thread.
+ * @param context The {@link InvocationContext} associated with the current thread.
+ */
+ public static void setContext(final InvocationContext context)
+ {
+ if(context != null) {
+ contextTL.set(context);
+ } else {
+ contextTL.remove();
+ }
+ }
+
+ /**
* Get the {@link InvocationContext} associated with the message currently
* being processed.
* @return The {@link InvocationContext} associated with the message currently
* being processed.
*/
- public static InvocationContext getInvocationContext()
+ public static InvocationContext getContext()
{
- return null;
+ return contextTL.get();
}
/**
Modified: labs/jbossesb/workspace/skeagh/commons/src/main/java/org/jboss/esb/classpath/ClassUtil.java
===================================================================
--- labs/jbossesb/workspace/skeagh/commons/src/main/java/org/jboss/esb/classpath/ClassUtil.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/commons/src/main/java/org/jboss/esb/classpath/ClassUtil.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -330,12 +330,12 @@
/**
* Set the field value on the specified object instance.
*
- * @param field The field to set.
- * @param instance The object instance on which to set.
- * @param value The object value.
+ * @param field The field to set.
+ * @param targetObject The object instance on which to set.
+ * @param value The object value.
* @throws IllegalAccessException cannot access field.
*/
- public static void setFieldValue(final Field field, final Object instance, final Object value) throws IllegalAccessException
+ public static void setFieldValue(final Field field, final Object targetObject, final Object value) throws IllegalAccessException
{
boolean isAccessible = field.isAccessible();
@@ -346,10 +346,52 @@
try
{
- field.set(instance, value);
+ field.set(targetObject, value);
} finally
{
field.setAccessible(isAccessible);
}
}
+
+ /**
+ * Set the target object {@link java.lang.reflect.Field} anywhere it's declared.
+ *
+ * @param targetObject The object on which to set the value.
+ * @param value The value to be set on the field.
+ * @param fieldName The field name.
+ * @throws IllegalAccessException Unable to access the object field.
+ */
+ public static void setFieldValue(final Object targetObject, final String fieldName, final Object value) throws IllegalAccessException
+ {
+ setFieldValue(targetObject, fieldName, value, value.getClass());
+ }
+
+ /**
+ * Set the target object {@link java.lang.reflect.Field} anywhere it's declared.
+ *
+ * @param targetObject The object on which to set the value.
+ * @param value The value to be set on the field.
+ * @param fieldName The field name.
+ * @param hierarchyClass The class hierarchy on which to check for fields.
+ * @throws IllegalAccessException Unable to access the object field.
+ */
+ private static void setFieldValue(final Object targetObject, final String fieldName, final Object value, final Class hierarchyClass) throws IllegalAccessException
+ {
+ // Check all the fields in this class...
+ Field[] fields = targetObject.getClass().getDeclaredFields();
+ for (Field field : fields)
+ {
+ if (field.getType() == value.getClass() && field.getName().equals(fieldName))
+ {
+ setFieldValue(field, targetObject, value);
+ }
+ }
+
+ // Iterate up the inheritance hierarchy...
+ Class superClass = hierarchyClass.getSuperclass();
+ if (superClass != null)
+ {
+ setFieldValue(targetObject, fieldName, value, superClass);
+ }
+ }
}
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-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/deploy/DeploymentRuntime.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -34,7 +34,6 @@
import org.jboss.esb.service.ServiceName;
import org.jboss.esb.util.AssertArgument;
-import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.*;
@@ -222,9 +221,12 @@
{
ClassUtil.execAnnotatedMethod(object, Uninitialize.class);
undeployedObjects.add(object);
+ } catch (InvocationTargetException e)
+ {
+ logger.error("Error while undeploying '" + deploymentSet[i].getKey() + "' (" + deploymentSet[i].getValue().getClass().getName() + ").", e.getCause());
} catch (Throwable t)
{
- logger.debug("Error while undeploying '" + deploymentSet[i].getKey() + "' (" + deploymentSet[i].getValue().getClass().getName() + ").");
+ logger.error("Error while undeploying '" + deploymentSet[i].getKey() + "' (" + deploymentSet[i].getValue().getClass().getName() + ").", t);
}
}
}
@@ -249,7 +251,7 @@
{
try
{
- deployObject(resource.getValue());
+ deployObject(resource.getValue(), null);
logger.debug("Deployed resource '" + resource.getKey() + "' (" + resource.getValue().getClass().getName() + ").");
deployedObjects.put(resource.getKey(), resource.getValue());
deployedResources.put(resource.getKey(), resource.getValue());
@@ -283,7 +285,7 @@
{
try
{
- deployObject(service.getValue().getService());
+ deployObject(service.getValue().getService(), service.getKey());
logger.debug("Deployed service '" + service.getKey() + "' (" + service.getValue().getClass().getName() + ").");
deployedObjects.put(service.getKey(), service.getValue().getService());
} catch (InvocationTargetException e)
@@ -319,10 +321,10 @@
try
{
// Deploy the transformers first...
- deployTransformers(routerConfig.getTransformers(), routerConfig.getName());
+ deployTransformers(serviceName, routerConfig.getTransformers(), routerConfig.getName());
// Create a dispatcher and hook it into the inRouter...
- LocalDispatcher dispatcher = new LocalDispatcher();
+ LocalDispatcher dispatcher = new LocalDispatcher(context);
dispatcher.setServiceName(serviceName);
dispatcher.setService(getService(configurationUnit, serviceName));
dispatcher.setTransformers(routerConfig.getTransformers());
@@ -331,7 +333,7 @@
routerConfig.getRouter().setDispatcher(dispatcher);
// Now deploy the router...
- deployObject(routerConfig.getRouter());
+ deployObject(routerConfig.getRouter(), serviceName);
logger.debug("Deployed InboundRouter '" + routerConfig.getName() + "' (" + routerConfig.getRouter().getClass().getName() + ").");
deployedObjects.put(routerConfig.getName(), routerConfig.getRouter());
} catch (InvocationTargetException e)
@@ -383,10 +385,10 @@
try
{
// Deploy the transformers first...
- deployTransformers(routerConfig.getTransformers(), routerConfig.getName());
+ deployTransformers(routerConfigMap.getKey(), routerConfig.getTransformers(), routerConfig.getName());
// Now deploy the router...
- deployObject(routerConfig.getRouter());
+ deployObject(routerConfig.getRouter(), routerConfigMap.getKey());
logger.debug("Deployed OutboundRouter '" + routerConfig.getName() + "' (" + routerConfig.getRouter().getClass().getName() + ").");
deployedObjects.put(routerConfig.getName(), routerConfig.getRouter());
} catch (InvocationTargetException e)
@@ -404,11 +406,11 @@
/**
* Deploy the transformers.
*
+ * @param serviceName The service with which the transformer set is associated.
* @param transformers The transformer list.
- * @param routerConfigName The name of the owning router.
- * @throws DeploymentException Error deploying transformers.
+ * @param routerConfigName The name of the owning router. @throws DeploymentException Error deploying transformers.
*/
- private void deployTransformers(final List<MessageTransformer> transformers, final String routerConfigName) throws DeploymentException
+ private void deployTransformers(ServiceName serviceName, final List<MessageTransformer> transformers, final String routerConfigName) throws DeploymentException
{
if (transformers != null)
{
@@ -416,7 +418,7 @@
{
try
{
- deployObject(transformer);
+ deployObject(transformer, serviceName);
logger.debug("Deployed transformer for router '" + routerConfigName + "' (" + transformer.getClass().getName() + ").");
deployedObjects.put(transformer, transformer);
} catch (InvocationTargetException e)
@@ -437,38 +439,16 @@
* @throws InvocationTargetException Exception during object deployment.
* @throws IllegalAccessException Unable to invoke initialize method on object.
*/
- private void deployObject(final Object object) throws InvocationTargetException, IllegalAccessException
+ private void deployObject(final Object object, final ServiceName serviceName) throws InvocationTargetException, IllegalAccessException
{
// Set the deployment context on the object, if specified...
- setContext(object, object.getClass());
- ClassUtil.execAnnotatedMethod(object, Initialize.class);
- }
-
- /**
- * Set the DeploymentContext anywhere it's declared.
- *
- * @param object The object on which to set the context.
- * @param hierarchyClass The class hierarchy on which to check for fields.
- * @throws IllegalAccessException Unable to access the object field.
- */
- private void setContext(final Object object, final Class hierarchyClass) throws IllegalAccessException
- {
- // Check all the fields in this class...
- Field[] fields = object.getClass().getDeclaredFields();
- for (Field field : fields)
+ ClassUtil.setFieldValue(object, "deploymentContext", context);
+ if (serviceName != null)
{
- if (field.getType() == DeploymentContext.class)
- {
- ClassUtil.setFieldValue(field, object, context);
- }
+ // If supplied, set the ServiceName on the object...
+ ClassUtil.setFieldValue(object, "serviceName", serviceName);
}
-
- // Iterate up the inheritance hierarchy...
- Class superClass = hierarchyClass.getSuperclass();
- if (superClass != null)
- {
- setContext(object, superClass);
- }
+ ClassUtil.execAnnotatedMethod(object, Initialize.class);
}
/**
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-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/main/java/org/jboss/esb/dispatch/LocalDispatcher.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -19,6 +19,9 @@
*/
package org.jboss.esb.dispatch;
+import org.jboss.esb.context.DeploymentContext;
+import org.jboss.esb.context.InvocationContext;
+import org.jboss.esb.context.AddressingContext;
import org.jboss.esb.deploy.config.OutboundRouterConfig;
import org.jboss.esb.message.Message;
import org.jboss.esb.message.MessageTransformationException;
@@ -39,6 +42,10 @@
public class LocalDispatcher implements MessageDispatcher
{
/**
+ * The associated deployment context.
+ */
+ private DeploymentContext deploymentContext;
+ /**
* Inbound transformers to be applied before invoking
* the service (can be null).
*/
@@ -62,6 +69,17 @@
private boolean cloneOnOutboundTransforms = false;
/**
+ * Public constructor.
+ *
+ * @param deploymentContext The deployment context with which this
+ * dispatcher is associated.
+ */
+ public LocalDispatcher(final DeploymentContext deploymentContext)
+ {
+ this.deploymentContext = deploymentContext;
+ }
+
+ /**
* Initialize the dispatcher.
*/
public final void initialize()
@@ -78,7 +96,8 @@
}
// If we have multiple outbound routers performing transforms
// on the message before routing, we need to clone the message,
- // otherwise the message will be corrupted...
+ // otherwise the message will be corrupted between routing
+ // operations...
cloneOnOutboundTransforms = (numTransformationSets > 1);
}
}
@@ -97,9 +116,34 @@
{
Message outMessage;
- applyInboundTransforms(message);
- outMessage = dispatchToService(message);
- applyOutboundRouters(outMessage);
+ DeploymentContext.setContext(deploymentContext);
+ try
+ {
+ AddressingContext addressingContext = new AddressingContext();
+
+ addressingContext.setTo(serviceName);
+ AddressingContext.setContext(addressingContext);
+ try
+ {
+ // TODO: The inbound router should have access to the InvocationContext
+ InvocationContext.setContext(new InvocationContext());
+ try
+ {
+ applyInboundTransforms(message);
+ outMessage = dispatchToService(message);
+ applyOutboundRouters(outMessage);
+ } finally
+ {
+ InvocationContext.setContext(null);
+ }
+ } finally
+ {
+ AddressingContext.setContext(null);
+ }
+ } finally
+ {
+ DeploymentContext.setContext(null);
+ }
}
/**
@@ -161,7 +205,7 @@
{
for (OutboundRouterConfig outboundRouter : outboundRouters)
{
- // TODO: Use the cloneOnOutboundTransforms
+ // TODO: cloneOnOutboundTransforms
applyOutboundTransformers(outMessage, outboundRouter.getTransformers());
outboundRouter.getRouter().route(outMessage);
}
@@ -171,7 +215,7 @@
/**
* Apply the supplied set of transformers on the supplied message.
*
- * @param outMessage The message.
+ * @param outMessage The message.
* @param outboundTransformers The transformers to be applied.
* @throws RoutingException Error applying transformer.
*/
Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyInRouter.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyInRouter.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyInRouter.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -23,12 +23,16 @@
import org.jboss.esb.routing.MessageDispatcher;
import org.jboss.esb.annotations.Initialize;
import org.jboss.esb.annotations.Uninitialize;
+import org.jboss.esb.service.ServiceName;
+import junit.framework.TestCase;
/**
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
*/
public class MyInRouter implements InboundRouter
{
+ private ServiceName serviceName;
+
private String myparam;
private int myOtherParam;
public static Exception exception;
@@ -41,6 +45,7 @@
@Initialize
public void initialise() throws Exception
{
+ TestCase.assertNotNull("'serviceName' should have been initialised on router.", serviceName);
if(exception != null) {
throw exception;
}
Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyResource.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyResource.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/deploy/config/MyResource.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -29,12 +29,12 @@
*/
public class MyResource
{
- private DeploymentContext context;
+ private DeploymentContext deploymentContext;
public static boolean initialised = false;
@Initialize
public void initialise() {
- TestCase.assertNotNull("Deployment context should have been initialised in resource.", context);
+ TestCase.assertNotNull("Deployment context should have been initialised in resource.", deploymentContext);
initialised = true;
}
Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloInboundRouter.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloInboundRouter.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloInboundRouter.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -23,6 +23,9 @@
import org.jboss.esb.routing.MessageDispatcher;
import org.jboss.esb.routing.RoutingException;
import org.jboss.esb.message.Message;
+import org.jboss.esb.context.InvocationContext;
+import org.jboss.esb.context.AddressingContext;
+import org.jboss.esb.context.DeploymentContext;
/**
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloOutboundRouter.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloOutboundRouter.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloOutboundRouter.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -24,6 +24,9 @@
import org.jboss.esb.routing.RoutingException;
import org.jboss.esb.routing.OutboundRouter;
import org.jboss.esb.message.Message;
+import org.jboss.esb.context.InvocationContext;
+import org.jboss.esb.context.AddressingContext;
+import org.jboss.esb.context.DeploymentContext;
/**
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
@@ -31,10 +34,16 @@
public class HelloOutboundRouter implements OutboundRouter
{
private String helloMessage;
+ public static InvocationContext invocationContext;
+ public static AddressingContext addressingContext;
+ public static DeploymentContext deploymentContext;
public void route(Message message) throws RoutingException
{
helloMessage = (String) message.getPayload();
+ invocationContext = InvocationContext.getContext();
+ addressingContext = AddressingContext.getContext();
+ deploymentContext = DeploymentContext.getContext();
}
public String getHelloMessage()
Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloWorldService.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloWorldService.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/HelloWorldService.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -22,6 +22,9 @@
import org.jboss.esb.service.Service;
import org.jboss.esb.service.ServiceException;
import org.jboss.esb.message.Message;
+import org.jboss.esb.context.InvocationContext;
+import org.jboss.esb.context.AddressingContext;
+import org.jboss.esb.context.DeploymentContext;
/**
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
@@ -29,10 +32,16 @@
public class HelloWorldService implements Service
{
private String helloMessage;
+ public static InvocationContext invocationContext;
+ public static AddressingContext addressingContext;
+ public static DeploymentContext deploymentContext;
public Message process(Message message) throws ServiceException
{
helloMessage = (String) message.getPayload();
+ invocationContext = InvocationContext.getContext();
+ addressingContext = AddressingContext.getContext();
+ deploymentContext = DeploymentContext.getContext();
return message;
}
Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/LocalDispatcherTest.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/LocalDispatcherTest.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/LocalDispatcherTest.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -28,6 +28,8 @@
import org.jboss.esb.routing.RoutingException;
import java.io.IOException;
+import java.util.Set;
+import java.util.HashSet;
/**
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
@@ -107,6 +109,24 @@
assertEquals("Goodbye World!", helloService.getHelloMessage());
// Passed thru to the outrouter untransformed......
assertEquals("Goodbye World!", outRouter.getHelloMessage());
+
+ // Make sure the contexts get set on the invocation thread
+ // and make sure it's consistent across all components on the
+ // call stack...
+ Set conetxtSet = new HashSet();
+ conetxtSet.add(RestStringTransformer.invocationContext);
+ conetxtSet.add(RestStringTransformer.deploymentContext);
+ conetxtSet.add(RestStringTransformer.addressingContext);
+ conetxtSet.add(HelloWorldService.invocationContext);
+ conetxtSet.add(HelloWorldService.deploymentContext);
+ conetxtSet.add(HelloWorldService.addressingContext);
+ conetxtSet.add(HelloOutboundRouter.invocationContext);
+ conetxtSet.add(HelloOutboundRouter.deploymentContext);
+ conetxtSet.add(HelloOutboundRouter.addressingContext);
+ assertEquals(3, conetxtSet.size());
+ assertTrue(conetxtSet.contains(RestStringTransformer.invocationContext));
+ assertTrue(conetxtSet.contains(RestStringTransformer.deploymentContext));
+ assertTrue(conetxtSet.contains(RestStringTransformer.addressingContext));
} finally {
runtime.undeploy();
}
Modified: labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/RestStringTransformer.java
===================================================================
--- labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/RestStringTransformer.java 2008-09-02 10:49:25 UTC (rev 22307)
+++ labs/jbossesb/workspace/skeagh/runtime/src/test/java/org/jboss/esb/dispatch/RestStringTransformer.java 2008-09-02 10:49:51 UTC (rev 22308)
@@ -22,6 +22,10 @@
import org.jboss.esb.message.MessageTransformer;
import org.jboss.esb.message.Message;
import org.jboss.esb.message.MessageTransformationException;
+import org.jboss.esb.context.InvocationContext;
+import org.jboss.esb.context.AddressingContext;
+import org.jboss.esb.context.DeploymentContext;
+import junit.framework.TestCase;
/**
* @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
@@ -29,9 +33,15 @@
public class RestStringTransformer implements MessageTransformer
{
private String newString;
+ public static InvocationContext invocationContext;
+ public static AddressingContext addressingContext;
+ public static DeploymentContext deploymentContext;
public void transform(Message message) throws MessageTransformationException
{
+ invocationContext = InvocationContext.getContext();
+ addressingContext = AddressingContext.getContext();
+ deploymentContext = DeploymentContext.getContext();
message.setPayload(newString);
}
}
More information about the jboss-svn-commits
mailing list