[jboss-svn-commits] JBL Code SVN: r10459 - labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Mar 22 17:13:38 EDT 2007
Author: rex.sheridan
Date: 2007-03-22 17:13:38 -0400 (Thu, 22 Mar 2007)
New Revision: 10459
Added:
labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/BeanConfigActionProcessor.java
Modified:
labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessorMethodInfo.java
labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/OverriddenActionProcessor.java
Log:
Updates to action processing pipeline for handling bean-configured actions.
Modified: labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java 2007-03-22 21:13:09 UTC (rev 10458)
+++ labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java 2007-03-22 21:13:38 UTC (rev 10459)
@@ -30,6 +30,7 @@
import org.jboss.soa.esb.actions.ActionLifecycle;
import org.jboss.soa.esb.actions.ActionPipelineProcessor;
import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.actions.BeanConfiguredAction;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.listeners.ListenerTagNames;
import org.jboss.soa.esb.message.Message;
@@ -101,8 +102,16 @@
}
final ActionPipelineProcessor processor ;
- if (ActionPipelineProcessor.class.isAssignableFrom(actionClass))
+ if (BeanConfiguredAction.class.isAssignableFrom(actionClass))
{
+ if (LOGGER.isDebugEnabled())
+ {
+ LOGGER.debug("Using bean config action lifecycle processor for " + actionClassTag) ;
+ }
+ processor = new BeanConfigActionProcessor(actionConfig, actionClass) ;
+ }
+ else if (ActionPipelineProcessor.class.isAssignableFrom(actionClass))
+ {
final ActionPipelineProcessor currentProcessor = (ActionPipelineProcessor)ActionProcessorMethodInfo.getActionClassInstance(actionConfig, actionClass) ;
if (ActionProcessorMethodInfo.checkOverridden(actionConfig))
{
Modified: labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessorMethodInfo.java
===================================================================
--- labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessorMethodInfo.java 2007-03-22 21:13:09 UTC (rev 10458)
+++ labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessorMethodInfo.java 2007-03-22 21:13:38 UTC (rev 10459)
@@ -313,25 +313,6 @@
}
/**
- * Get the no-argument constructor for the action class.
- * @param actionClass The action class.
- * @return The constructor of the action class.
- * @throws ConfigurationException For errors during instantiation.
- */
- static Constructor getNoArgActionClassConstructor(final Class actionClass)
- throws ConfigurationException
- {
- try
- {
- return actionClass.getConstructor(new Class[] {}) ;
- }
- catch (final NoSuchMethodException nsme)
- {
- throw new ConfigurationException("Action " + actionClass.getName() + " does not have no-arg constructor") ;
- }
- }
-
- /**
* Get an instance of the action class.
* @param actionConfig The action class configuration.
* @param actionClass The action class.
Added: labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/BeanConfigActionProcessor.java
===================================================================
--- labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/BeanConfigActionProcessor.java (rev 0)
+++ labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/BeanConfigActionProcessor.java 2007-03-22 21:13:38 UTC (rev 10459)
@@ -0,0 +1,95 @@
+package org.jboss.soa.esb.listeners.message;
+
+import java.lang.reflect.Constructor;
+
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.actions.ActionLifecycleException;
+import org.jboss.soa.esb.actions.ActionPipelineProcessor;
+import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.util.BeanConfigurator;
+
+public class BeanConfigActionProcessor implements ActionPipelineProcessor {
+
+ /** Config tree for processor */
+ private final ConfigTree config;
+
+ private final Constructor constructor;
+
+ /** Method info on action class */
+ private final ActionProcessorMethodInfo methodInfo;
+
+ /**
+ * Construct the overridden action processor.
+ *
+ * @param config The action config.
+ * @param actionClass The action class.
+ * @throws ConfigurationException for errors during configuration.
+ */
+ BeanConfigActionProcessor(final ConfigTree config, final Class actionClass)
+ throws ConfigurationException {
+ this.config = config;
+ try {
+ this.constructor = actionClass.getConstructor();
+ } catch (SecurityException e) {
+ throw new ConfigurationException(e);
+ } catch (NoSuchMethodException e) {
+ throw new ConfigurationException(e);
+ }
+ this.methodInfo = ActionProcessorMethodInfo.getMethodInfo(config, actionClass);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.soa.esb.actions.ActionPipelineProcessor#process(org.jboss.soa.esb.message.Message)
+ */
+ public Message process(Message message) throws ActionProcessingException {
+ if (methodInfo.hasProcessMethods()) {
+ try {
+ Object instance = constructor.newInstance();
+ BeanConfigurator configurator = new ActionBeanConfigurator(config, instance);
+ configurator.configure();
+ return methodInfo.processMethods(instance, message);
+ } catch (Exception e) {
+ throw new ActionProcessingException(e);
+ }
+ } else {
+ return message;
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.soa.esb.actions.ActionPipelineProcessor#processException(org.jboss.soa.esb.message.Message,
+ * java.lang.Throwable)
+ */
+ public void processException(Message message, Throwable th) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.soa.esb.actions.ActionPipelineProcessor#processSuccess(org.jboss.soa.esb.message.Message)
+ */
+ public void processSuccess(Message message) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.soa.esb.actions.ActionLifecycle#destroy()
+ */
+ public void destroy() throws ActionLifecycleException {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.soa.esb.actions.ActionLifecycle#initialise()
+ */
+ public void initialise() throws ActionLifecycleException {
+ }
+}
\ No newline at end of file
Modified: labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/OverriddenActionProcessor.java
===================================================================
--- labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/OverriddenActionProcessor.java 2007-03-22 21:13:09 UTC (rev 10458)
+++ labs/jbossesb/workspace/rsheridan/s360/core/listeners/src/org/jboss/soa/esb/listeners/message/OverriddenActionProcessor.java 2007-03-22 21:13:38 UTC (rev 10459)
@@ -32,7 +32,6 @@
import org.jboss.soa.esb.actions.ActionProcessingException;
import org.jboss.soa.esb.helpers.ConfigTree;
import org.jboss.soa.esb.message.Message;
-import org.jboss.soa.esb.util.BeanConfigurator;
/**
* Instance of ActionPipelineProcessor to allow dynamic specification of the methods
@@ -41,23 +40,15 @@
*/
final class OverriddenActionProcessor implements ActionPipelineProcessor
{
-
/**
* The method info.
*/
private final ActionProcessorMethodInfo methodInfo ;
-
/**
* The action constructor.
*/
private final Constructor constructor ;
-
/**
- * The no-argument constructor used as a fallback.
- */
- private final Constructor noArgConstructor;
-
- /**
* The action config.
*/
private final ConfigTree config ;
@@ -78,7 +69,6 @@
{
this.config = config ;
constructor = ActionProcessorMethodInfo.getActionClassConstructor(actionClass) ;
- noArgConstructor = ActionProcessorMethodInfo.getNoArgActionClassConstructor(actionClass);
methodInfo = ActionProcessorMethodInfo.getMethodInfo(config, actionClass) ;
}
@@ -95,22 +85,14 @@
{
if (methodInfo.hasProcessMethods())
{
- Object instance = null;
+ final Object instance ;
try
{
instance = ActionProcessorMethodInfo.getActionClassInstance(config, constructor) ;
}
catch (final ConfigurationException ce)
{
- // If there is no constructor that takes a ConfigTree as an argument,
- // attempt to configure by injecting bean fields from ConfigTree.
- try {
- instance = noArgConstructor.newInstance(new Object[] {});
- BeanConfigurator configurator = new ActionBeanConfigurator(config, instance);
- configurator.configure();
- } catch (Exception e) {
- throw new ActionProcessingException("Unable to fall back to bean configuration.", e);
- }
+ throw new ActionProcessingException("Unexpected exception creating action class instance") ;
}
messageInstanceMap.put(message, instance) ;
More information about the jboss-svn-commits
mailing list