[jboss-svn-commits] JBL Code SVN: r8230 - in labs/jbossesb/trunk: product/core/listeners/src/org/jboss/soa/esb/actions product/core/listeners/src/org/jboss/soa/esb/actions/converters product/core/listeners/src/org/jboss/soa/esb/actions/routing product/core/listeners/src/org/jboss/soa/esb/listeners/gateway product/core/listeners/src/org/jboss/soa/esb/listeners/message product/samples/quickstarts/helloworld_embedded_reg qa/junit/src/org/jboss/soa/esb/actions

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Dec 11 13:01:00 EST 2006


Author: tfennelly
Date: 2006-12-11 13:00:49 -0500 (Mon, 11 Dec 2006)
New Revision: 8230

Added:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/AbstractRouter.java
Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
   labs/jbossesb/trunk/product/samples/quickstarts/helloworld_embedded_reg/log4j.xml
   labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/actions/CbrProxyActionUnitTest.java
Log:
Some action processor updates.

Router still needs to be genericised and brought in line with arch.

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ActionUtils.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -44,7 +44,13 @@
      */
     public static Object getTaskObject(Message message)
     {
-    	return (null==message)? null : message.getBody().get(CURRENT_OBJECT);
+    	Object payload = (null==message)? null : message.getBody().get(CURRENT_OBJECT);
+    	
+    	if(payload == null) {
+    		payload = message.getBody().getContents();
+    	}
+    	
+    	return payload;
     }
     /**
      * Obtain previous 'current object' from standard spot within message 
@@ -77,8 +83,14 @@
     public static Object setTaskObject(Message message, Object obj)
     {
     	Object oRet = message.getBody().remove(CURRENT_OBJECT);
-    	if (null!=obj)
+    	
+    	if (null!=obj) {
     		message.getBody().add(CURRENT_OBJECT,obj);
+    	}
+    	if(obj instanceof byte[]) {
+    		message.getBody().setContents((byte[])obj);
+    	}
+    	
     	return oRet;
     }	
 

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ByteArrayToString.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -29,6 +29,7 @@
 import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.actions.ActionProcessor;
 import org.jboss.soa.esb.actions.ActionUtils;
+import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.message.Message;
 
@@ -50,6 +51,14 @@
     
     /**
      * Public constructor.
+     * @param properties Action properties.
+     */
+    public ByteArrayToString(ConfigTree properties) {
+    	this("ByteArrayToString", properties.attributesAsList());
+    }
+    
+    /**
+     * Public constructor.
      * @param actionName Processing action name.
      * @param properties Action properties.
      */

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToCSVString.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -32,6 +32,7 @@
 import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.actions.ActionProcessor;
 import org.jboss.soa.esb.actions.ActionUtils;
+import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.message.Message;
 
@@ -63,6 +64,15 @@
     
     /**
      * Public constructor.
+     * @param properties Action Properties.
+     * @throws ConfigurationException Action not properly configured.
+     */
+    public ObjectToCSVString(ConfigTree properties) throws ConfigurationException {
+    	this("ObjectToCSVString", properties.attributesAsList());
+    }
+    
+    /**
+     * Public constructor.
      * @param actionName Action name.
      * @param properties Action Properties.
      * @throws ConfigurationException Action not properly configured.

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectToXStream.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -29,6 +29,7 @@
 import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.actions.ActionProcessor;
 import org.jboss.soa.esb.actions.ActionUtils;
+import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
 import org.jboss.soa.esb.message.Message;
 
@@ -60,6 +61,15 @@
     
     /**
      * Public constructor.
+     * @param properties Action Properties.
+     * @throws ConfigurationException Action not properly configured.
+     */
+    public ObjectToXStream(ConfigTree properties) {
+    	this("ObjectToXStream", properties.attributesAsList());
+    }
+    
+    /**
+     * Public constructor.
      * @param actionName Action name.
      * @param properties Action Properties.
      * @throws ConfigurationException Action not properly configured.

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -149,14 +149,8 @@
      */
     public Message process(Message message) throws ActionProcessingException {
     	Object payload = ActionUtils.getTaskObject(message);
-    	boolean wasPayloadOnTaskObject = (payload != null);
     	
     	try {
-        	if(!wasPayloadOnTaskObject) {
-            	logger.debug("Message payload not set as message 'Task Object'.  Will try using the message body 'contents'.");
-        		payload = message.getBody().getContents();
-        	}
-
         	if(payload instanceof byte[]) {
         		payload = new String((byte[])payload, "UTF-8");
         	}
@@ -199,11 +193,8 @@
 	            if(beanHash != null && setPayloadToBeanHash) {
 	            	ActionUtils.setTaskObject(message, beanHash);
 	            } else {
-	            	// Always set result in the message "contents"...
-            		message.getBody().setContents(transformedMessage.getBytes("UTF-8"));
-	            	if(wasPayloadOnTaskObject) {
-		            	ActionUtils.setTaskObject(message, transformedMessage);
-	            	}
+	            	ActionUtils.setTaskObject(message, transformedMessage);
+	            	message.getBody().setContents(transformedMessage.getBytes("UTF-8"));
 	            }
 	        } else {
 	        	String sClass = (null==payload) ? "<null>" : payload.getClass().getName();
@@ -211,7 +202,7 @@
 	            		+ sClass + "].  Returning message untransformed.");
 	        }
     	} catch(Throwable thrown) {
-    		throw new ActionProcessingException("Message transformation failed.", thrown);
+    		throw new ActionProcessingException("Message transformation failed. Message [" + payload + "].", thrown);
     	}
         
         // TODO: Cater for more message input types e.g. InputStream, DOM Document...
@@ -252,9 +243,11 @@
         } catch(UnknownDeviceException e) {
         	String[] profiles = getMessageUseragentProfiles(messageFromType, messageFrom, messageToType, messageTo);
         	
-	        // Register the message flow within the Smooks context....
-        	logger.info("Registering message-flow useragent: [" + messageUseragent + "].  Profiles: [" + Arrays.asList(profiles) + "]");
-	        smooks.registerUseragent(messageUseragent, profiles);
+            synchronized (SmooksTransformer.class) {
+		        // Register the message flow within the Smooks context....
+	        	logger.info("Registering message-flow useragent: [" + messageUseragent + "].  Profiles: [" + Arrays.asList(profiles) + "]");
+		        smooks.registerUseragent(messageUseragent, profiles);
+            }
         }
         
 		return messageUseragent;
@@ -347,6 +340,7 @@
         synchronized (SmooksTransformer.class) {
             if(smooks == null) {
                 String cpPrefix;
+                SmooksStandalone localSmooksRef;
 
                 // The "cpPrefix" property is "private" and only here in order to make unit testing easier.
                 // It allows us to force a "bad" config location for the smooks-cdr.lst file....
@@ -361,15 +355,22 @@
                     throw new ConfigurationException("Failed to locate Smooks configuration list file [" + SMOOKS_CDR_LST + "].  The folder containing this file must be located at " + cpPrefix + " relative to the root of the classpath.");
                 }
            
-                smooks = new SmooksStandalone("UTF-8");
+                localSmooksRef = new SmooksStandalone("UTF-8");
                 
                 try {
                     BufferedReader configReader = new BufferedReader(new InputStreamReader(configListStream));
-                    smooks.getContext().getStore().load(configReader);
+                    localSmooksRef.getContext().getStore().load(configReader);
                 } catch (Exception e) {
-                    smooks = null;
+                	localSmooksRef = null;
                     throw new ConfigurationException("Smooks configuration load failed.", e);
                 }
+                
+                logger.info("All Smooks configurations are now loaded.");
+                
+                // Purposely not initialising the "smooks" static member until the very end.  This will stop other threads
+                // falling through this classes constructor while the Smooks configurations are still being
+                // loaded.  See the constructor.
+                smooks = localSmooksRef;
             }
         }
     }

Added: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/AbstractRouter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/AbstractRouter.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/AbstractRouter.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated 
+ * by the @authors tag. All rights reserved. 
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors. 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+
+package org.jboss.soa.esb.actions.routing;
+
+import java.util.List;
+
+import javax.jms.JMSException;
+import javax.naming.NamingException;
+
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.actions.ActionProcessingException;
+import org.jboss.soa.esb.actions.ActionProcessor;
+import org.jboss.soa.esb.actions.ActionUtils;
+import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.message.Message;
+
+/**
+ * Abstract router.
+ * <p/>
+ * Handles unwrapping of the message payload (if required) before routing.  To turn on
+ * unwrapping, supply an "unwrap" property with a value of "true" (default "false").
+ * 
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public abstract class AbstractRouter implements ActionProcessor {
+
+	/**
+	 * Unwrap the message payload before routing. 
+	 */
+	public boolean unwrap = false;
+	
+    /**
+     * Public constructor.
+     * @param actionName Action name.
+     * @param properties Action properties.
+     * @throws ConfigurationException Queue name not configured.
+     * @throws JMSException Unable to configure JMS destination.
+     * @throws NamingException Unable to configure JMS destination.
+     */
+    public AbstractRouter(String actionName, List<KeyValuePair> properties) throws ConfigurationException {
+    	unwrap = KeyValuePair.getBooleanValue("unwrap", properties, false); 
+    }
+
+    /* (non-Javadoc)
+     * @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
+     */
+    public final Message process(Message message) throws ActionProcessingException {
+    	if(unwrap) {
+    		route(ActionUtils.getTaskObject(message));
+    	} else {
+    		route(message);
+    	}
+    	
+    	return message;
+    }
+    
+    /**
+     * Route the message or message payload.
+     * <p/>
+     * If the message is to be unwrapped, it will have been unwrapped at this stage.
+     * @param object The object to route.
+     * @throws ActionProcessingException Exception during routing operation.
+     */
+    public abstract void route(Object object) throws ActionProcessingException;
+}

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/routing/JMSRouter.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -25,6 +25,7 @@
 import java.io.Serializable;
 import java.util.List;
 
+import javax.jms.BytesMessage;
 import javax.jms.JMSException;
 import javax.jms.Message;
 import javax.jms.MessageProducer;
@@ -40,29 +41,31 @@
 import org.apache.log4j.Logger;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.actions.ActionProcessingException;
-import org.jboss.soa.esb.actions.ActionProcessor;
-import org.jboss.soa.esb.actions.ActionUtils;
 import org.jboss.soa.esb.common.Configuration;
 import org.jboss.soa.esb.helpers.NamingContext;
+import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.jboss.soa.esb.util.Util;
 
 /**
  * JSM Routing Action Processor.
  * <p/>
  * Sample Action Configuration:
  * <pre>
- * &lt;Action name="Route-To-Invoicing" processor="JMSRouter"&gt;
- *     &lt;property name="jndiName" value="queue/A" /&gt;
- *     &lt;property name="message-prop:jms-selector" value="incoming-invoice" /&gt;
- * &lt;/Action&gt;
+ * &lt;action class="org.jboss.soa.esb.actions.routing.JMSRouter"&gt;
+ *     jndiName="queue/A"
+ *     message-prop-<i>&gt;prop-name&lt;</i>="<i>&gt;prop-value&lt;</i>" &gt;!-- (Optional)--&lt; 
+ *     unwrap="true/false" &gt;!-- (Optional - default false)--&lt;
+ * /&gt;
  * </pre>
- * Note how properties to be set on the message are prefixed with "message-prop:".
+ * Note how properties to be set on the message are prefixed with "message-prop-".
  * <p/>
+ * To unwrap the message payload from the message before routing, set the "unwrap" property to "true".
  * TODO: Add support for JMS Topic destinations.
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  * @since Version 4.0
  */
-public class JMSRouter implements ActionProcessor {
+public class JMSRouter extends AbstractRouter {
     /**
      * Logger.
      */
@@ -75,6 +78,17 @@
      * JMS Queue setup.
      */
     private JMSSendQueueSetup queueSetup;
+    
+    /**
+     * Public constructor.
+     * @param propertiesTree Action properties.
+     * @throws ConfigurationException Queue name not configured.
+     * @throws JMSException Unable to configure JMS destination.
+     * @throws NamingException Unable to configure JMS destination.
+     */
+    public JMSRouter(ConfigTree propertiesTree) throws ConfigurationException, NamingException, JMSException {
+    	this("JMSRouter", propertiesTree.attributesAsList());
+    }
 
     /**
      * Public constructor.
@@ -84,59 +98,78 @@
      * @throws JMSException Unable to configure JMS destination.
      * @throws NamingException Unable to configure JMS destination.
      */
-    public JMSRouter(String actionName, List<KeyValuePair> properties) throws ConfigurationException, NamingException, JMSException {
+    public JMSRouter(String actionName, List<KeyValuePair> properties) throws ConfigurationException {
+    	super(actionName, properties);
+    	
         this.properties = properties;
         
         String queueName = KeyValuePair.getValue("jndiName", properties);
         if(queueName == null) {
             throw new ConfigurationException("JMSRouter must specify a 'jndiName' property.");
         }
-        queueSetup = new JMSSendQueueSetup(queueName);
+        try {
+			queueSetup = new JMSSendQueueSetup(queueName);
+		} catch (Throwable t) {
+			new ConfigurationException("Failed to configure JMS Queue for routing.", t);
+		}
         this.properties = properties;
     }
 
     /* (non-Javadoc)
-     * @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
+     * @see org.jboss.soa.esb.actions.routing.AbstractRouter#route(java.lang.Object)
      */
-    public org.jboss.soa.esb.message.Message 
-    	process(org.jboss.soa.esb.message.Message message) throws ActionProcessingException {
+    public void route(Object message) throws ActionProcessingException {
     	
-    	Object oCurr = ActionUtils.getTaskObject(message);
-        if(!(oCurr instanceof Serializable)) {
-            throw new ActionProcessingException("Cannot send Object [" + oCurr.getClass().getName() + "] to destination [" + queueSetup.queueName + "]. Object must be serializable.");
+        if(!(message instanceof Serializable) && !(message instanceof org.jboss.soa.esb.message.Message)) {
+            throw new ActionProcessingException("Cannot send Object [" + message.getClass().getName() + "] to destination [" + queueSetup.queueName + "]. Object must be serializable.");
         }
         
         try {
-            // Send a Text or Object message to the queue...
-            if (oCurr instanceof String) {
-                TextMessage oMsg = queueSetup.jmsSession.createTextMessage();
+        	Message jmsMessage = null;
+        	
+            // Send the message to the queue...
+            if (message instanceof org.jboss.soa.esb.message.Message) {
+            	message = Util.serialize((org.jboss.soa.esb.message.Message)message);
+            	jmsMessage = createObjectMessage(message);
+            } else if(message instanceof String) {
+            	jmsMessage = queueSetup.jmsSession.createTextMessage();
     
                 if(logger.isDebugEnabled()) {
-                    logger.debug("Sending Text message: [" + oCurr + "] to destination [" + queueSetup.queueName + "].");
+                    logger.debug("Sending Text message: [" + message + "] to destination [" + queueSetup.queueName + "].");
                 }
-                oMsg.setText((String)oCurr);
-                setStringProperties(oMsg);
-                queueSetup.jmsProducer.send(oMsg);
-            } else {
-                ObjectMessage oMsg = queueSetup.jmsSession.createObjectMessage();
+                ((TextMessage)jmsMessage).setText((String)message);
+            } else if(message instanceof byte[]) {
+            	jmsMessage = queueSetup.jmsSession.createBytesMessage();
                 
                 if(logger.isDebugEnabled()) {
-                    logger.debug("Sending Object message: [" + oCurr + "] to destination [" + queueSetup.queueName + "].");
+                    logger.debug("Sending byte[] message: [" + message + "] to destination [" + queueSetup.queueName + "].");
                 }
-                oMsg.setObject((Serializable) oCurr);
-                setStringProperties(oMsg);
-                queueSetup.jmsProducer.send(oMsg);
+                ((BytesMessage)jmsMessage).writeBytes((byte[])message);
+            } else {
+            	jmsMessage = createObjectMessage(message);
             }
-            return message;
+            setStringProperties(jmsMessage);
+            queueSetup.jmsProducer.send(jmsMessage);
         } catch(Exception e) {
-            String errorMessage = "Exception while sending message [" + oCurr + "] to destination [" + queueSetup.queueName + "].";
+            String errorMessage = "Exception while sending message [" + message + "] to destination [" + queueSetup.queueName + "].";
             logger.error(errorMessage, e);
             throw new ActionProcessingException(errorMessage, e);
         }
     }
 
+	private Message createObjectMessage(Object message) throws JMSException {
+		Message jmsMessage;
+		jmsMessage = queueSetup.jmsSession.createObjectMessage();
+		
+		if(logger.isDebugEnabled()) {
+		    logger.debug("Sending Object message: [" + message + "] to destination [" + queueSetup.queueName + "].");
+		}
+		((ObjectMessage)jmsMessage).setObject((Serializable) message);
+		return jmsMessage;
+	}
+
     private void setStringProperties(Message msg) throws JMSException {
-        String messagePropPrefix = "message-prop:";
+        String messagePropPrefix = "message-prop-";
 
         for(KeyValuePair property : properties) {
             String key = property.getKey();

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -109,7 +109,7 @@
         		}
         		catch (ClassCastException e)
         		{
-        			_logger.error("Action class method <"+_processMethod.getName()+"> returned a non Message object");
+        			_logger.error("Action class method <"+_processMethod.getName()+"> returned a non Message object", e);
         			continue;
         		}
         		catch (CourierException e)
@@ -118,7 +118,7 @@
         				"Courier <"+_courier.getClass().getName()+".deliver(Message) FAILED"
         			:
         				"NULL courier can't deliver Message";
-        			_logger.error(text);
+        			_logger.error(text, e);
         			continue;
         		}
             	continue;

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -209,5 +209,18 @@
 	 */
 	public boolean isProcessingComplete() {
 		return processingComplete;
-	}		
+	}
+	
+	/**
+	 * Wait until processing is complete.
+	 */
+	public void waitUntilComplete() {
+		while(!processingComplete) {
+			try {
+				Thread.sleep(50);
+			} catch (InterruptedException e) {
+				_logger.error("Thread Interrupted.", e);
+			}
+		}
+	}
 }

Modified: labs/jbossesb/trunk/product/samples/quickstarts/helloworld_embedded_reg/log4j.xml
===================================================================
--- labs/jbossesb/trunk/product/samples/quickstarts/helloworld_embedded_reg/log4j.xml	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/product/samples/quickstarts/helloworld_embedded_reg/log4j.xml	2006-12-11 18:00:49 UTC (rev 8230)
@@ -55,7 +55,7 @@
       <priority value="WARN"/>
    </category>
    <category name="org.jboss.soa.esb">
-      <priority value="ERROR"/>
+      <priority value="INFO"/>
    </category>
    <category name="org.jboss.internal.soa.esb">
       <priority value="ERROR"/>

Modified: labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/actions/CbrProxyActionUnitTest.java
===================================================================
--- labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/actions/CbrProxyActionUnitTest.java	2006-12-11 17:44:40 UTC (rev 8229)
+++ labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/actions/CbrProxyActionUnitTest.java	2006-12-11 18:00:49 UTC (rev 8230)
@@ -89,8 +89,9 @@
 		}
 		Thread t = new Thread(chain);
 		t.start();
-		//give the CBR some time to finish
-		t.join(5000);
+
+		// Wait for processing to complte...
+		chain.waitUntilComplete();
     }
 	
 	@Test
@@ -113,8 +114,10 @@
 		}
 		Thread t = new Thread(chain);
 		t.start();
-		//give the CBR some time to finish
-		t.join(5000);
+
+		// Wait for processing to complte...
+		chain.waitUntilComplete();
+
 		//The message coming should have the Collection of destinationServices as a property.
 		Collection destinationServices = (Collection) chain.getMessage().getProperties().getProperty(MessageRouter.ROUTING_DESTINATION_SERVICE_LIST);
 		assertNotNull("Destination service list is null", destinationServices);




More information about the jboss-svn-commits mailing list