[jboss-svn-commits] JBL Code SVN: r6812 - labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Oct 15 19:25:10 EDT 2006


Author: estebanschifman
Date: 2006-10-15 19:25:08 -0400 (Sun, 15 Oct 2006)
New Revision: 6812

Modified:
   labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java
   labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java
Log:
Still under construction

Modified: labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java	2006-10-15 22:49:28 UTC (rev 6811)
+++ labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/ActionProcessingPipeline.java	2006-10-15 23:25:08 UTC (rev 6812)
@@ -2,11 +2,9 @@
 
 import java.lang.reflect.*;
 
-import javax.enterprise.deploy.spi.exceptions.ConfigurationException;
-
 import org.apache.log4j.Logger;
 
-import org.jboss.remoting.samples.chat.exceptions.InvalidArgumentException;
+import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.actions.ActionUtils;
 import org.jboss.soa.esb.helpers.ConfigTree;
@@ -28,7 +26,7 @@
      * @param message Message - The initial message to be run through the action class chain
      */
     public ActionProcessingPipeline(Message message)
-    	throws InvalidArgumentException, ConfigurationException
+    	throws ConfigurationException
     {
     	if (null==_message)
     		throw new IllegalArgumentException("Message must be not null");
@@ -38,7 +36,7 @@
     		throw new IllegalArgumentException("Configuration needed for action classes");
     	_actionList = _config.getChildren("action");
     	if (null==_actionList || _actionList.length<1)
-    		throw new ConfigurationException("No ");
+    		throw new ConfigurationException("No actions in list");
     }
     
     /**

Modified: labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java
===================================================================
--- labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java	2006-10-15 22:49:28 UTC (rev 6811)
+++ labs/jbossesb/workspace/eschifman/trunk/product/core/listeners/src/org/jboss/soa/esb/message/listeners/JmsQueueListener.java	2006-10-15 23:25:08 UTC (rev 6812)
@@ -37,20 +37,61 @@
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.helpers.AppServerContext;
 import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.actions.ActionUtils;
 import org.jboss.soa.esb.addressing.helpers.JMSEpr;
 
-public class JmsQueueListener 
+/**
+ * Esb Message aware JMS queue listener.
+ * <p/> Expects an Object message whose getObject() method returns an org.jboss.soa.esb.message.Message
+ * <br/>Clones the 'static' ConfigTree with which this listener was created, and stores the cloned tree 
+ * inside the Message (to enable all actions in the chain to use the configuration)  
+ * <br/>Instantiates and runs a new ActionProcessingPipeline on the received esb Message (augmented with 
+ * ConfigTree) that will in turn instantiate and run all action classes in the chain 
+ * 
+ * @author <a href="mailto:schifest at heuristica.com.ar">schifest at heuristica.com.ar</a>
+ * @since Version 4.0
+ */
+
+public class JmsQueueListener implements Runnable 
 {
     public JmsQueueListener(EsbListenerController controller, ConfigTree config) 
     	throws Exception 
     {
     	_controller			= controller;
     	_config				= config;
-    	_iSleepForThreads	= 3;
+    	_iSleepForRetry		= 3;
     	checkMyParms();
-    } // __________________________________
+    } // _______________________________
 
     /**
+     * Loops until controlling process determines
+     * <br/>Waits for JMS Object messages containing ESB messages
+     * <br/>When one is received, instantiates an action processing pipeline to process it
+     * <br/>Pipeline is started in new Thread
+     */
+    public void run()
+    {
+        while (_controller.continueLooping())
+        {
+        	org.jboss.soa.esb.message.Message message = receiveEsbMessage(_controller.millisToWait());
+        	if (null!=message)
+        	{	
+        		ActionUtils.setConfigTree(message,_config);
+        		ActionProcessingPipeline chain = null;
+
+        		try	{ chain = new ActionProcessingPipeline(message); }
+        		catch (IllegalArgumentException e)	
+        			{	_logger.error(e); 	continue; }
+        		catch (ConfigurationException e)
+    				{	_logger.error(e); 	continue; }
+
+ // TODO  Take care of thread pooling and (eventually) maximum child threads
+        		new Thread(chain).start();
+        	}
+        }
+    } // _______________________________
+
+    /**
      * Check for mandatory and optional attributes in parameter tree
      * 
      * @throws Exception -
@@ -100,7 +141,7 @@
         		catch (Exception e)
         		{
         			_logger.error("Reconnecting to Queue", e);
-        			try {	Thread.sleep(_iSleepForThreads); }
+        			try {	Thread.sleep(_iSleepForRetry); }
         			catch (InterruptedException e1)
         			{ // Just return after logging
         				_logger.error("Unexpected thread interupt exception.", e);
@@ -162,7 +203,7 @@
     protected QueueSession		_oQsess;
     protected Queue 			_oQueue;
     protected String 			_sSelector;
-    protected int				_iSleepForThreads;
+    protected int				_iSleepForRetry;
 
     protected static transient Logger _logger = Logger.getLogger(JmsQueueListener.class);
 } 




More information about the jboss-svn-commits mailing list