[jboss-svn-commits] JBL Code SVN: r7800 - in labs/jbossesb/trunk/product/core/listeners: src/org/jboss/soa/esb/actions/converters tests/src/org/jboss/soa/esb/actions/converters

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 23 12:12:22 EST 2006


Author: tfennelly
Date: 2006-11-23 12:12:17 -0500 (Thu, 23 Nov 2006)
New Revision: 7800

Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java
Log:
Changed to look for the message payload in the Message Body "Contents" if not set as a named object on the body.

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-23 15:18:42 UTC (rev 7799)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/SmooksTransformer.java	2006-11-23 17:12:17 UTC (rev 7800)
@@ -152,9 +152,19 @@
      */
     public Message process(Message message) throws ActionProcessingException {
     	Object payload = ActionUtils.getTaskObject(message);
+    	boolean wasPayloadOnTaskObject = (payload != null);
     	
     	try {
-	        if(payload instanceof String) {
+        	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");
+        	}
+        	
+        	if(payload instanceof String) {
 	            byte[] messageBytes = null;
 	            String transformedMessage;
 	        	String messageUseragent;
@@ -192,7 +202,11 @@
 	            if(beanHash != null && setPayloadToBeanHash) {
 	            	ActionUtils.setTaskObject(message, beanHash);
 	            } else {
-	            	ActionUtils.setTaskObject(message, transformedMessage);
+	            	// Always set result in the message "contents"...
+            		message.getBody().setContents(transformedMessage.getBytes("UTF-8"));
+	            	if(wasPayloadOnTaskObject) {
+		            	ActionUtils.setTaskObject(message, transformedMessage);
+	            	}
 	            }
 	        } else {
 	        	String sClass = (null==payload) ? "<null>" : payload.getClass().getName();
@@ -210,7 +224,7 @@
     }
 
 	/**
-	 * Register the Message Flow as a useragent within Smooks.
+	 * Register the Message Exchange as a useragent within Smooks.
 	 * @param message The message.
 	 * @return The Smooks "usragent" string that uniquely identifies the message flow associated
 	 * with the message.
@@ -238,7 +252,7 @@
 		messageToType = (String)message.getProperties().getProperty(TO_TYPE, defaultMessageToType);
 		
 		// Construct the message useragent string for use with Smooks.  This is basically the 
-		// name of the Message Flow on which transformations are to be performed...
+		// name of the Message Exchange on which transformations are to be performed...
         messageUseragent = getMessageUseragentString(messageFromType, messageFrom, messageToType, messageTo);
         
         // Register this message flow if it isn't already registered...

Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java	2006-11-23 15:18:42 UTC (rev 7799)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/converters/SmooksTransformerUnitTest.java	2006-11-23 17:12:17 UTC (rev 7800)
@@ -79,21 +79,45 @@
     }
     
     private String transform(String stringMessage, String fromType, String from, String to, String toType) throws ActionProcessingException, ConfigurationException, URISyntaxException {
-        Message oMsg = MessageFactory.getInstance().getMessage();
         ConfigTree properties = new ConfigTree("name");
 
         // Set the message properties in order to trigger the appropriate transformations
         // on the message...
         properties.setAttribute(SmooksTransformer.FROM_TYPE, fromType);
         properties.setAttribute(SmooksTransformer.TO_TYPE, toType);
+
+    	// The smooks-cdr.lst and device-profile.xml files are located in the root of the 
+        // test src folder.  You need to look at these to see how this works...
+        SmooksTransformer transformer = new SmooksTransformer(properties);
+        Message message;
         
+        // Perform the transformation by setting the payload on the task object.
+        message = createNewMessage(fromType, from, to, toType);
+        ActionUtils.setTaskObject(message, stringMessage);
+        message = transformer.process(message);
+        String resultThroughTaskObj = (String) ActionUtils.getTaskObject(message);
+        assertEquals(resultThroughTaskObj, new String(message.getBody().getContents()));
+        
+        // Perform the transformation by setting the payload on the body "contents".
+        message = createNewMessage(fromType, from, to, toType);
+        message.getBody().setContents(stringMessage.getBytes());
+        message = transformer.process(message);
+        assertEquals(resultThroughTaskObj, new String(message.getBody().getContents()));
+        
+        return resultThroughTaskObj;
+    }
+
+	private Message createNewMessage(String fromType, String from, String to, String toType) {
+		Message message;
+		message = MessageFactory.getInstance().getMessage();
+        
         Call call = new Call();
         EPR fromEPR = new EPR();
         EPR toEPR = new EPR();
         PortReference fromAddr = new PortReference();
         PortReference toAddr = new PortReference();
         
-        oMsg.getHeader().setCall(call);
+        message.getHeader().setCall(call);
 
         call.setFrom(fromEPR);
         fromEPR.setAddr(fromAddr);
@@ -102,16 +126,9 @@
         call.setTo(toEPR);
         toEPR.setAddr(toAddr);
         toAddr.setAddress(to);
-
-        // The smooks-cdr.lst and device-profile.xml files are located in the root of the 
-        // test src folder.  You need to look at these to see how this works...
-        SmooksTransformer transformer = new SmooksTransformer(properties);
         
-        ActionUtils.setTaskObject(oMsg, stringMessage);
-        oMsg = transformer.process(oMsg);
-        
-        return (String) ActionUtils.getTaskObject(oMsg);
-    }
+		return message;
+	}
 
     private void assertConfigException(ConfigTree properties, String expectedException) {
         try {




More information about the jboss-svn-commits mailing list