[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