[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