[jboss-svn-commits] JBL Code SVN: r15207 - in labs/jbossesb/trunk/product: services/smooks/src/main/java/org/jboss/soa/esb/actions/converters and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Sep 18 11:51:52 EDT 2007


Author: tfennelly
Date: 2007-09-18 11:51:52 -0400 (Tue, 18 Sep 2007)
New Revision: 15207

Added:
   labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/XClass.java
   labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/smooks-conf.xml
Modified:
   labs/jbossesb/trunk/product/docs/MessageActionGuide.odt
   labs/jbossesb/trunk/product/services/smooks/src/main/java/org/jboss/soa/esb/actions/converters/SmooksTransformer.java
   labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java
Log:
Make the Message.Body location to which SmooksTransformer binds Java objects configurable: http://jira.jboss.com/jira/browse/JBESB-773

Modified: labs/jbossesb/trunk/product/docs/MessageActionGuide.odt
===================================================================
(Binary files differ)

Modified: labs/jbossesb/trunk/product/services/smooks/src/main/java/org/jboss/soa/esb/actions/converters/SmooksTransformer.java
===================================================================
--- labs/jbossesb/trunk/product/services/smooks/src/main/java/org/jboss/soa/esb/actions/converters/SmooksTransformer.java	2007-09-18 14:40:35 UTC (rev 15206)
+++ labs/jbossesb/trunk/product/services/smooks/src/main/java/org/jboss/soa/esb/actions/converters/SmooksTransformer.java	2007-09-18 15:51:52 UTC (rev 15207)
@@ -115,6 +115,10 @@
  * <p/>
  * From a Java code perspective, setting and getting on the "{@link Body#DEFAULT_LOCATION defaultEntry}"
  * is done simply by calling the no-name-arg {@link Body#add(Object)} and {@link Body#get()} methods.
+ * <p/>
+ * Smooks transforms may also be designed to populate Java objects from the input message (bind to
+ * java objects).  These Java objects are bound (a {@link Map}) to the message under the key
+ * "&lt;<i>output-location</i>&gt;<b>-java</b>".
  *
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  * @since Version 4.0
@@ -131,11 +135,6 @@
 	 * 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";
     /**
      * Action config Smooks configuration key.
      */
@@ -164,14 +163,12 @@
     private String defaultMessageFrom;
     private String defaultMessageToType;
     private String defaultMessageTo;
-    private boolean setPayloadToBeanHash = false;
-    
+
     private SmooksMessageCounter smooksMessageCounter;
 
     /**
      * Public constructor.
      * @param propertiesTree Action Properties.
-     * @throws ConfigurationException 
      * @throws ConfigurationException Action not properly configured.
      */
 	public SmooksTransformer(ConfigTree propertiesTree) throws ConfigurationException {
@@ -201,9 +198,6 @@
 		}
 		smooksMessageCounter = new SmooksMessageCounter(propertiesTree);
 		smooksMessageCounter.registerMBean();
-		
-        // Get the set-beanhash-to-payload property...
-		setPayloadToBeanHash = KeyValuePair.getBooleanValue(SET_BEANHASH_TO_PAYLOAD, properties, false);
 
         actionConfig = propertiesTree;
     }
@@ -289,8 +283,9 @@
         if(payload == null) {
             payload = message.getBody().get(ActionUtils.POST_ACTION_DATA);
             
-            if (payload == null)
-        	payload = message.getBody().get(BytesBody.BYTES_LOCATION);
+            if (payload == null) {
+        	    payload = message.getBody().get(BytesBody.BYTES_LOCATION);
+            }
         }
     	
         try {
@@ -326,8 +321,12 @@
 	            // Get them and stick them on the message - so they can be accessed by downstream actions...
 	            HashMap beanHash = BeanAccessor.getBeans(executionContext);
 	            if(beanHash != null) {
-	            	message.getBody().add(EXTRACTED_BEANS_HASH, beanHash);
-	            }
+	            	message.getBody().add(EXTRACTED_BEANS_HASH, beanHash); // Backward compatibility.
+                    message.getBody().add(outputLocation + "-java", beanHash);
+	            } else {
+                    message.getBody().remove(EXTRACTED_BEANS_HASH); // Backward compatibility.
+                    message.getBody().remove(outputLocation + "-java");
+                }
 	            
 	            if(logger.isDebugEnabled()) {
 	            	long timeTaken = System.currentTimeMillis() - start;
@@ -335,15 +334,8 @@
 	            			+ timeTaken + ".  Message in:\n[" + payload.toString()+ "].  \nMessage out:\n[" + transformedMessage + "].");
 	            }
 
-                Object outputPayload;
-                if(beanHash != null && setPayloadToBeanHash) {
-	            	outputPayload = beanHash;
-	            } else {
-	        	message.getBody().add(ActionUtils.POST_ACTION_DATA, transformedMessage);
-	            	outputPayload = transformedMessage;
-	            }
-
-                message.getBody().add(outputLocation, outputPayload);
+                message.getBody().add(ActionUtils.POST_ACTION_DATA, transformedMessage);
+                message.getBody().add(outputLocation, transformedMessage);
             } else {
 	            logger.warn("Only java.lang.String payload types supported.  Input message was of type [" + payload.getClass().getName() + "].  Returning message untransformed.");
 	        }

Modified: labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java	2007-09-18 14:40:35 UTC (rev 15206)
+++ labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java	2007-09-18 15:51:52 UTC (rev 15207)
@@ -33,6 +33,7 @@
 import org.jboss.soa.esb.actions.ActionUtils;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.Body;
 import org.jboss.soa.esb.message.body.content.BytesBody;
 import org.jboss.soa.esb.message.format.MessageFactory;
 
@@ -75,6 +76,24 @@
         assertEquals("<x><c>value</c></x>", transRes);
     }
 
+    public void test_javabeans() throws ConfigurationException, ActionLifecycleException, ActionProcessingException {
+        ConfigTree properties = new ConfigTree("smooks-config");
+        SmooksTransformer transformer;
+        Message message;
+
+        properties.setAttribute(SmooksTransformer.RESOURCE_CONFIG, "/org/jboss/soa/esb/actions/converters/smooks-conf.xml");
+        transformer = new SmooksTransformer(properties);
+        transformer.initialise();
+
+        // Perform the transformation by setting the payload on the task object...
+        message = MessageFactory.getInstance().getMessage();
+        message.getBody().add("<x xprop='xval' />");
+
+        assertNull(message.getBody().get(Body.DEFAULT_LOCATION + "-java"));
+        message = transformer.process(message);
+        assertNotNull(message.getBody().get(Body.DEFAULT_LOCATION + "-java"));
+    }
+
     private String transform(String stringMessage, String fromType, String from, String to, String toType) throws ActionProcessingException, ConfigurationException, URISyntaxException, ActionLifecycleException {
         ConfigTree properties = createConfig01(from, fromType, to, toType);
         SmooksTransformer transformer = new SmooksTransformer(properties);
@@ -115,6 +134,8 @@
         return resultThroughTaskObj;
     }
 
+
+
     private ConfigTree createConfig01(String from, String fromType, String to, String toType) {
         ConfigTree properties = new ConfigTree("name");
 

Added: labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/XClass.java
===================================================================
--- labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/XClass.java	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/XClass.java	2007-09-18 15:51:52 UTC (rev 15207)
@@ -0,0 +1,16 @@
+package org.jboss.soa.esb.actions.converters;
+
+/**
+ * @author
+ */
+public class XClass {
+    private String xprop;
+
+    public String getXprop() {
+        return xprop;
+    }
+
+    public void setXprop(String xprop) {
+        this.xprop = xprop;
+    }
+}


Property changes on: labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/XClass.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/smooks-conf.xml
===================================================================
--- labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/smooks-conf.xml	                        (rev 0)
+++ labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/smooks-conf.xml	2007-09-18 15:51:52 UTC (rev 15207)
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.0.xsd">
+
+    <resource-config selector="x">
+        <resource>org.milyn.javabean.BeanPopulator</resource>
+        <param name="beanId">orderHeader</param>
+		<param name="beanClass">org.jboss.soa.esb.actions.converters.XClass</param>
+        <param name="bindings">
+            <binding property="xprop" selector="x @xprop" />
+        </param>
+    </resource-config>
+
+</smooks-resource-list>
\ No newline at end of file


Property changes on: labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/actions/converters/smooks-conf.xml
___________________________________________________________________
Name: svn:mime-type
   + text/xml
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list