[jboss-svn-commits] JBL Code SVN: r6415 - in labs/jbossesb/trunk/product: core/common/tests/resources core/listeners/src/org/jboss/soa/esb/actions core/listeners/tests/src/org/jboss/soa/esb/actions lib/ext
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 25 12:15:25 EDT 2006
Author: tfennelly
Date: 2006-09-25 12:15:09 -0400 (Mon, 25 Sep 2006)
New Revision: 6415
Added:
labs/jbossesb/trunk/product/core/common/tests/resources/device-profile.xml
labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.1.jar
Removed:
labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.jar
Modified:
labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java
labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/smooks-test.cdrl
labs/jbossesb/trunk/product/lib/ext/milyn-commons-0.7.jar
labs/jbossesb/trunk/product/lib/ext/milyn-smooks-core-0.7.2-SNAPSHOT.jar
labs/jbossesb/trunk/product/lib/ext/milyn-smooks-javabean-0.1.1.jar
labs/jbossesb/trunk/product/lib/ext/milyn-smooks-misc-0.1.1.jar
labs/jbossesb/trunk/product/lib/ext/milyn-smooks-templating-0.2.jar
Log:
SmooksTransformer
Added: labs/jbossesb/trunk/product/core/common/tests/resources/device-profile.xml
===================================================================
--- labs/jbossesb/trunk/product/core/common/tests/resources/device-profile.xml 2006-09-25 13:16:27 UTC (rev 6414)
+++ labs/jbossesb/trunk/product/core/common/tests/resources/device-profile.xml 2006-09-25 16:15:09 UTC (rev 6415)
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<!DOCTYPE device-profiles PUBLIC "-//MILYN//DTD TINAK 1.0//EN" "http://www.milyn.org/dtd/device-profile-1.0.dtd">
+
+<device-profiles>
+ <device-profile name="type:Acme-Order-XML" list="profile1,profile2"/>
+ <device-profile name="from:Acme" list="profile23,profile24"/>
+ <device-profile name="to:AcmePartner" list="profile55,profile56"/>
+
+ <device-profile name="profile1" list="A"/>
+ <device-profile name="profile2" list="B"/>
+ <device-profile name="profile23" list="C"/>
+ <device-profile name="profile24" list="D"/>
+ <device-profile name="profile55" list="E"/>
+ <device-profile name="profile56" list="E"/>
+</device-profiles>
Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java 2006-09-25 13:16:27 UTC (rev 6414)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java 2006-09-25 16:15:09 UTC (rev 6415)
@@ -23,11 +23,14 @@
package org.jboss.soa.esb.actions;
import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Serializable;
+import java.io.UnsupportedEncodingException;
import java.util.List;
+import org.apache.log4j.Logger;
import org.jboss.soa.esb.ConfigurationException;
import org.jboss.soa.esb.helpers.KeyValuePair;
import org.milyn.SmooksStandalone;
@@ -57,6 +60,7 @@
public class SmooksTransformer implements ActionProcessor {
+ private static Logger logger = Logger.getLogger(SmooksTransformer.class);
private static final String SMOOKS_CDR_LST = "smooks-cdr.lst";
private static SmooksStandalone smooks;
private String messageType;
@@ -87,6 +91,12 @@
throw new ConfigurationException("Action configuration 'message-to' not specified.");
}
messageEnc = KeyValuePair.getValue("message-encoding", properties, "UTF-8");
+ // Test the configured encoding
+ try {
+ "astring".getBytes(messageEnc);
+ } catch (UnsupportedEncodingException e) {
+ throw new ConfigurationException("Invalid character encoding [" + messageEnc + "] on action configuration [" + name + "].", e);
+ }
// The "cpPrefix" property is "private" and only here in order to make unit testing easier.
// It allows us to force a "bad" config location for the smooks-cdr.lst file....
@@ -105,16 +115,30 @@
// statically configured against these profiles in the device-profiles.xml file. This is a bit
// of a hack but is fine for now just to get the ball rolling...
smooks.registerUseragent(messageUseragent, new String[] {"type:" + messageType, "from:" + messageFrom, "to:" + messageTo});
+ // TODO: Recurcively expand out the profiles supplied here using smooks.getContext().getProfileStore(). Do this inside SmooksStandalone
}
/* (non-Javadoc)
* @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
*/
public Object process(Object message) {
-
- // TODO: add the actual Smooks calling code
-
- return message;
+ if(message instanceof String) {
+ byte[] messageBytes = null;
+
+ try {
+ messageBytes = ((String)message).getBytes(messageEnc);
+ } catch (UnsupportedEncodingException e) {
+ // Can't happen - encoding was already tested in the constructor.
+ }
+
+ // TODO: Cater for more message input types e.g. InputStream, DOM Document...
+ // TODO: Cater for more message output types e.g. InputStream, DOM Document...
+
+ return smooks.filterAndSerialize(messageUseragent, new ByteArrayInputStream(messageBytes));
+ } else {
+ logger.warn("String message types only supported. Input message was [" + message.getClass().getName() + "]. Returning message untransformed.");
+ return message;
+ }
}
/* (non-Javadoc)
@@ -147,8 +171,8 @@
throw new ConfigurationException("Failed to locate Smooks configuration list file [" + SMOOKS_CDR_LST + "]. This file must be located at " + cpPrefix + " relative to the root of the classpath.");
}
- // TODO: There's a potential issue here if to SmooksTransformer action configs specify and require
- // different encodings because they're all sharing the same static SmooksStandalone instance!!
+ // TODO: There's a potential issue here if two SmooksTransformer action configs specify and require
+ // different encodings. This is because they're all sharing the same static SmooksStandalone instance!!
// This should eventually be solveable by creating a proper Smooks container impl for the ESB.
smooks = new SmooksStandalone(messageEnc);
@@ -156,6 +180,7 @@
BufferedReader configReader = new BufferedReader(new InputStreamReader(configListStream));
smooks.getContext().getStore().load(configReader);
} catch (Exception e) {
+ smooks = null;
throw new ConfigurationException("Smooks configuration load failed.", e);
}
}
@@ -167,7 +192,7 @@
* <p/>
* Clears the internal static smooks instance.
*/
- public void reset() {
+ public static void reset() {
synchronized (SmooksTransformer.class) {
smooks = null;
}
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java 2006-09-25 13:16:27 UTC (rev 6414)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java 2006-09-25 16:15:09 UTC (rev 6415)
@@ -37,6 +37,11 @@
*/
public class SmooksTransformerUnitTest extends TestCase {
+ @Override
+ protected void setUp() throws Exception {
+ SmooksTransformer.reset();
+ }
+
public void test_bad_config() {
List<KeyValuePair> properties = new ArrayList<KeyValuePair>();
@@ -54,19 +59,37 @@
}
public void test_trans() throws ConfigurationException {
+ String message;
+ String transRes;
+
+ // Very basic test! Just illustrates profile based resource selection.
+ // Read the smooks-test.cdrl config file in this package!!
+
+ // Initialise the acme order message...
+ message = "<a><ddd>value</ddd></a>";
+
+ // Transform the order message going to "AcmePartner1"...
+ transRes = transform(message, "Acme-Order-XML", "Acme", "AcmePartner1");
+ assertEquals("<x><b>value</b></x>", transRes);
+
+ // Transform the order message going to "AcmePartner2"...
+ transRes = transform(message, "Acme-Order-XML", "Acme", "AcmePartner2");
+ assertEquals("<x><c>value</c></x>", transRes);
+ }
+
+ private String transform(String message, String type, String from, String to) throws ConfigurationException {
List<KeyValuePair> properties = new ArrayList<KeyValuePair>();
// Set the message properties in order to trigger the appropriate transformations
// on the message...
- properties.add(new KeyValuePair("message-type", "Acme-Order-XML"));
- properties.add(new KeyValuePair("message-from", "Acme"));
- properties.add(new KeyValuePair("message-to", "AcmePartner"));
+ properties.add(new KeyValuePair("message-type", type));
+ properties.add(new KeyValuePair("message-from", from));
+ properties.add(new KeyValuePair("message-to", to));
// The smooks-cdr.lst and device-profile.xml files are located in the root of the
// test src folder...
SmooksTransformer transformer = new SmooksTransformer("trans", properties);
-
- // TODO: Add the transformation....
+ return (String) transformer.process(message);
}
private void assertConfigException(List<KeyValuePair> properties, String expectedException) {
Modified: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/smooks-test.cdrl
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/smooks-test.cdrl 2006-09-25 13:16:27 UTC (rev 6414)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/smooks-test.cdrl 2006-09-25 16:15:09 UTC (rev 6415)
@@ -1,16 +1,28 @@
<?xml version='1.0'?>
<!DOCTYPE smooks-resource-list PUBLIC '-//MILYN//DTD SMOOKS 1.0//EN' 'http://milyn.org/dtd/smooksres-list-1.0.dtd'>
-<smooks-resource-list default-selector='b' default-useragent='yyy' default-path='y.txt' default-namespace='http://milyn.codehaus.org/smooks-default'>
+<smooks-resource-list>
- <!-- Overriding the defaults -->
- <smooks-resource selector='a' useragent='xxx' path='x.txt' namespace='http://milyn.codehaus.org/smooks'/>
+ <!--
+ "Acme-Order-XML" messages going from "Acme" to "AcmePartner1"
+ -->
+ <smooks-resource useragent="type:Acme-Order-XML AND from:Acme AND to:AcmePartner1" selector="ddd" path="org.milyn.cdres.trans.RenameElementTU">
+ <param name="replacementElement">b</param>
+ </smooks-resource>
- <!-- Inheriting the defaults -->
- <smooks-resource>
- <param name='param1'>param1Val</param>
- <param name='param2'>true</param>
- <param name='param3'>false</param>
+ <!--
+ "Acme-Order-XML" messages going from "Acme" to "AcmePartner2"
+ -->
+ <smooks-resource useragent="type:Acme-Order-XML AND from:Acme AND to:AcmePartner2" selector="ddd" path="org.milyn.cdres.trans.RenameElementTU">
+ <param name="replacementElement">c</param>
</smooks-resource>
+
+ <!--
+ "Acme-Order-XML" messages going from "Acme" to anywhere
+ -->
+ <smooks-resource useragent="type:Acme-Order-XML AND from:Acme" selector="a" path="org.milyn.cdres.trans.RenameElementTU">
+ <param name="replacementElement">x</param>
+ </smooks-resource>
+
</smooks-resource-list>
Modified: labs/jbossesb/trunk/product/lib/ext/milyn-commons-0.7.jar
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-core-0.7.2-SNAPSHOT.jar
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-javabean-0.1.1.jar
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-misc-0.1.1.jar
===================================================================
(Binary files differ)
Modified: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-templating-0.2.jar
===================================================================
(Binary files differ)
Added: labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.1.jar
===================================================================
(Binary files differ)
Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Deleted: labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.jar
===================================================================
(Binary files differ)
More information about the jboss-svn-commits
mailing list