[jboss-svn-commits] JBL Code SVN: r7649 - in labs/jbossesb/trunk/product: console/resources/WEB-INF/lib core/listeners/src/org/jboss/soa/esb/actions/converters lib/ext

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 16 11:15:46 EST 2006


Author: tfennelly
Date: 2006-11-16 11:15:32 -0500 (Thu, 16 Nov 2006)
New Revision: 7649

Added:
   labs/jbossesb/trunk/product/console/resources/WEB-INF/lib/commons-lang-2.1.jar
   labs/jbossesb/trunk/product/lib/ext/milyn-smooks-javabean-0.1.1.jar
Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java
Log:
added an extra jar - trying to get a demo running for Burr

Added: labs/jbossesb/trunk/product/console/resources/WEB-INF/lib/commons-lang-2.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/console/resources/WEB-INF/lib/commons-lang-2.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

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-11-16 15:50:54 UTC (rev 7648)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java	2006-11-16 16:15:32 UTC (rev 7649)
@@ -24,11 +24,13 @@
 
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
+import java.io.CharArrayWriter;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 
 import org.apache.log4j.Logger;
@@ -45,7 +47,10 @@
 import org.jboss.soa.esb.services.transform.TransformationException;
 import org.jboss.soa.esb.services.transform.TransformationService;
 import org.milyn.SmooksStandalone;
+import org.milyn.container.standalone.StandaloneContainerRequest;
 import org.milyn.device.ident.UnknownDeviceException;
+import org.milyn.javabean.BeanAccessor;
+import org.w3c.dom.Node;
 
 /**
  * Smooks Transformer.
@@ -60,6 +65,17 @@
 
 public class SmooksTransformer implements TransformationService, ActionProcessor {
 
+	/**
+	 * Key for storing/accessing any potential message Body bean HashMaps as populated
+	 * by the Smooks Javabean Cartridge.
+	 */
+	public static final String EXTRACTED_BEANS_HASH = "EXTRACTED_BEANS_HASH";
+	/**
+	 * Config property key for setting a true/false flag to indicate whether or not
+	 * a bean hashs should be set as the message payload before exiting the process method.
+	 */
+	public static final String SET_BEANHASH_TO_PAYLOAD = "set-beanhash-to-payload";
+		
 	public static final String FROM_EPR = "from-epr";
 	public static final String FROM_TYPE = "from-type";
 	public static final String TO_EPR = "to-epr";
@@ -72,6 +88,7 @@
     private String defaultMessageFromEPR;
     private String defaultMessageToType;
     private String defaultMessageToEPR;
+    private boolean setPayloadToBeanHash = false;
     
     /**
      * Public constructor.
@@ -93,6 +110,7 @@
 	public SmooksTransformer(ConfigTree propertiesTree) throws ConfigurationException {
 		List<KeyValuePair> properties = propertiesTree.attributesAsList();
 
+		// Get the message flow properties...
 		defaultMessageFromType = KeyValuePair.getValue(FROM_TYPE, properties);
 		if(defaultMessageFromType != null && defaultMessageFromType.trim().equals("")) {
 			throw new ConfigurationException("Empty '" + FROM_TYPE + "' config attribute supplied.");
@@ -109,6 +127,9 @@
 		if(defaultMessageToEPR != null && defaultMessageToEPR.trim().equals("")) {
 			throw new ConfigurationException("Empty '" + TO_EPR + "' config attribute supplied.");
 		}
+		
+		// Get the set-beanhash-to-payload property...
+		setPayloadToBeanHash = KeyValuePair.getBooleanValue(SET_BEANHASH_TO_PAYLOAD, properties, false);
         
         if(smooks == null) {
         	initSmooks(properties);
@@ -144,13 +165,35 @@
                 messageBytes = ((String)payload).getBytes("UTF-8");
 	
 	            long start = System.currentTimeMillis();
-	            transformedMessage = smooks.filterAndSerialize(messageUseragent, new ByteArrayInputStream(messageBytes));
+	            StandaloneContainerRequest request;
+	            Node filterResult;
+	            CharArrayWriter serializeBuffer = new CharArrayWriter(((String)payload).length());
+	            
+	            // Filter and Serialise...
+	            request = smooks.createRequest(messageUseragent, null);
+	            filterResult = smooks.filter(request, new ByteArrayInputStream(messageBytes));
+	            smooks.serialize(request, filterResult, serializeBuffer);
+	            
+	            transformedMessage = serializeBuffer.toString();
+	            
+	            // Javabean cartridge resources may have extract data from the message and populated some beans.
+	            // Get them and stick them on the message - so they can be accessed by downstream actions...
+	            HashMap beanHash = BeanAccessor.getBeans(request);
+	            if(beanHash != null) {
+	            	message.getBody().add(EXTRACTED_BEANS_HASH, beanHash);
+	            }
+	            
 	            if(logger.isDebugEnabled()) {
 	            	long timeTaken = System.currentTimeMillis() - start;
 	            	logger.debug("Transformed message for useragent [" + messageUseragent + "]. Time taken: " 
 	            			+ timeTaken + ".  Message in:\n[" + payload.toString()+ "].  \nMessage out:\n[" + transformedMessage + "].");
 	            }
-	            ActionUtils.setTaskObject(message,transformedMessage);
+	            
+	            if(beanHash != null && setPayloadToBeanHash) {
+	            	ActionUtils.setTaskObject(message, beanHash);
+	            } else {
+	            	ActionUtils.setTaskObject(message, transformedMessage);
+	            }
 	        } else {
 	        	String sClass = (null==payload) ? "<null>" : payload.getClass().getName();
 	            logger.warn("String message types only supported.  Input message was [" 

Added: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-javabean-0.1.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-javabean-0.1.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list