[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
+ * "<<i>output-location</i>><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