[jboss-svn-commits] JBL Code SVN: r6374 - in labs/jbossesb/trunk/product: core/listeners core/listeners/src/org/jboss/soa/esb/actions core/listeners/src/org/jboss/soa/esb/listeners core/listeners/tests/src 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
Fri Sep 22 12:42:09 EDT 2006


Author: tfennelly
Date: 2006-09-22 12:40:48 -0400 (Fri, 22 Sep 2006)
New Revision: 6374

Added:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/device-profile.xml
   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/core/listeners/tests/src/smooks-cdr.lst
   labs/jbossesb/trunk/product/lib/ext/commons-lang-2.1.jar
   labs/jbossesb/trunk/product/lib/ext/dtdparser-1.21.jar
   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
   labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.jar
   labs/jbossesb/trunk/product/lib/ext/xercesImpl-2.7.1.jar
   labs/jbossesb/trunk/product/lib/ext/xml-apis-1.3.02.jar
Removed:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformActionHandler.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformAction-Config-01.xml
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionFuncTest.java
   labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionUnitTest.java
Modified:
   labs/jbossesb/trunk/product/core/listeners/build.xml
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/FileCopier.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/JMSRouter.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToFileWriter.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToXStream.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/JmsQueueListener.java
Log:
Added initial Smooks integration code.  SmooksTransformer implemented as an ActionProcessor

Modified: labs/jbossesb/trunk/product/core/listeners/build.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/build.xml	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/build.xml	2006-09-22 16:40:48 UTC (rev 6374)
@@ -15,7 +15,7 @@
 	</condition>
 	
 	<path id="org.jboss.esb.listeners.base.classpath">
-        <fileset dir="${org.jboss.esb.ext.lib.dir}" includes="activation.jar jbossall-client.jar log4j.jar mail.jar xstream-1.1.3.jar"/>
+        <fileset dir="${org.jboss.esb.ext.lib.dir}" includes="activation.jar jbossall-client.jar log4j.jar mail.jar xstream-1.1.3.jar milyn*.jar"/>
     </path>
 
 	<path id="org.jboss.esb.listeners.default.classpath">

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/FileCopier.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/FileCopier.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/FileCopier.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -32,6 +32,7 @@
 import java.util.List;
 
 import org.apache.log4j.Logger;
+import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.helpers.*;
 import org.jboss.soa.esb.listeners.DirectoryPoller.WorkingFile;
 
@@ -64,6 +65,12 @@
     private File outputDir;
     private String copyToSuffix;
 
+    /**
+     * Public constructor.
+     * @param actionName Action name.
+     * @param properties Action Properties.
+     * @throws ConfigurationException Action not properly configured.
+     */
     public FileCopier(String actionName, List<KeyValuePair> properties) throws URISyntaxException {
         String outputDirParam = KeyValuePair.getValue(PARMS_OUTDIR, properties);
         

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/JMSRouter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/JMSRouter.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/JMSRouter.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -78,8 +78,8 @@
      * @param actionName Action name.
      * @param properties Action properties.
      * @throws ConfigurationException Queue name not configured.
-     * @throws JMSException 
-     * @throws NamingException 
+     * @throws JMSException Unable to configure JMS destination.
+     * @throws NamingException Unable to configure JMS destination.
      */
     public JMSRouter(String actionName, List<KeyValuePair> properties) throws ConfigurationException, NamingException, JMSException {
         this.properties = properties;

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToFileWriter.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToFileWriter.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToFileWriter.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -74,6 +74,12 @@
     private String ext;
     private String encoding;
     
+    /**
+     * Public constructor.
+     * @param actionName Action name.
+     * @param properties Action Properties.
+     * @throws ConfigurationException Action not properly configured.
+     */
     public ObjectToFileWriter(String actionName, List<KeyValuePair> properties) throws ConfigurationException {
         String fileName = KeyValuePair.getValue(FILE_NAME, properties);
         

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToXStream.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToXStream.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/ObjectToXStream.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -25,6 +25,7 @@
 import java.io.Serializable;
 import java.util.List;
 
+import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.actions.ActionProcessor;
 import org.jboss.soa.esb.helpers.KeyValuePair;
@@ -42,6 +43,7 @@
  *     &lt;property name="class-alias" value="Customer" /&gt; &lt;!-- Class alias used in call to <a href="http://xstream.codehaus.org/javadoc/com/thoughtworks/xstream/XStream.html">XStream.alias(String, Class)</a> prior to serialisation. --&gt;
  *     &lt;property name="exclude-package" value="false" /&gt; &lt;!-- Default "true".  Not applicable if a "class-alias" is specified. --&gt;
  * &lt;/Action&gt;
+ * </pre>
  * <p/>
  * The XML root element is either set from the "class-alias" property or the classes full name.  In the later case, the class package is
  * excluded unless "exclude-package" is set to "false"/"no". 
@@ -54,6 +56,12 @@
     private String classAlias;
     private boolean excludePackage;
     
+    /**
+     * Public constructor.
+     * @param actionName Action name.
+     * @param properties Action Properties.
+     * @throws ConfigurationException Action not properly configured.
+     */
     public ObjectToXStream(String actionName, List<KeyValuePair> properties) {
         classAlias = KeyValuePair.getValue("class-alias", properties);
         excludePackage = KeyValuePair.getBooleanValue("exclude-package", properties, true);

Deleted: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformActionHandler.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformActionHandler.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformActionHandler.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -1,63 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-
-package org.jboss.soa.esb.actions;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.jboss.soa.esb.helpers.KeyValuePair;
-
-/**
- * 
- * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
- * @since Version 4.0
- */
-
-public class SmooksTransformActionHandler implements ActionProcessor {
-
-	public SmooksTransformActionHandler(String name, List<KeyValuePair> properties) {
-		System.out.println("Instantiate action handler: " + name);
-	}
-
-    /* (non-Javadoc)
-     * @see org.jboss.soa.esb.actions.ActionProcessor#process(java.lang.Object)
-     */
-    public Object process(Object message) {
-        System.out.println("processAction: " + message);
-        return message;
-    }
-
-    /* (non-Javadoc)
-     * @see org.jboss.soa.esb.actions.ActionProcessor#getOkNotification(java.lang.Object)
-     */
-    public Serializable getOkNotification(Object message) {
-        return null;
-    }
-
-    /* (non-Javadoc)
-     * @see org.jboss.soa.esb.actions.ActionProcessor#getErrorNotification(java.lang.Object)
-     */
-    public Serializable getErrorNotification(Object message) {
-        return null;
-    }
-}

Added: 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-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/SmooksTransformer.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -0,0 +1,175 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.soa.esb.actions;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Serializable;
+import java.util.List;
+
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.helpers.KeyValuePair;
+import org.milyn.SmooksStandalone;
+
+/**
+ * Smooks Transformer.
+ * <p/>
+ * This processor hooks the <a href="http://milyn.codehaus.org/Smooks">Milyn Smooks</a>
+ * XML Transformation/Processing Engine into a message processing pipeline to support
+ * XML message transformations.  
+ * <p/>
+ * Sample Action Configuration:
+ * <pre>
+ * &lt;Action name="Order_Xml-FROM_Acme-TO_AcmePartner" processor="SmooksTransformer"&gt;
+ *     &lt;property name="message-type" value="Order" /&gt; &lt;!-- REQUIRED. --&gt;
+ *     &lt;property name="message-from" value="Acme" /&gt; &lt;!-- REQUIRED. --&gt;
+ *     &lt;property name="message-to" value="AcmePartner" /&gt; &lt;!-- REQUIRED. --&gt;
+ *     &lt;property name="message-encoding" value="UTF-8" /&gt; &lt;!-- OPTIONAL. Default "UTF-8" --&gt;
+ * &lt;/Action&gt;
+ * </pre>
+ * Eventually, all the message properties defined on the action will come from the message metadata.  This will
+ * happen once we have a proper "normalized" message format with message headers etc.
+ * 
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ * @since Version 4.0
+ */
+
+public class SmooksTransformer implements ActionProcessor {
+
+    private static final String SMOOKS_CDR_LST = "smooks-cdr.lst";
+    private static SmooksStandalone smooks;
+    private String messageType;
+    private String messageFrom;
+    private String messageTo;
+    private String messageEnc;
+    private String messageUseragent;
+    private String cpPrefix;
+    
+    /**
+     * Public constructor.
+     * @param actionName Action name.
+     * @param properties Action Properties.
+     * @throws ConfigurationException 
+     * @throws ConfigurationException Action not properly configured.
+     */
+	public SmooksTransformer(String name, List<KeyValuePair> properties) throws ConfigurationException {
+        messageType = KeyValuePair.getValue("message-type", properties);
+        if(messageType == null || messageType.equals("")) {
+            throw new ConfigurationException("Action configuration 'message-type' not specified.");
+        }
+        messageFrom = KeyValuePair.getValue("message-from", properties);
+        if(messageFrom == null || messageFrom.equals("")) {
+            throw new ConfigurationException("Action configuration 'message-from' not specified.");
+        }
+        messageTo = KeyValuePair.getValue("message-to", properties);
+        if(messageTo == null || messageTo.equals("")) {
+            throw new ConfigurationException("Action configuration 'message-to' not specified.");
+        }
+        messageEnc = KeyValuePair.getValue("message-encoding", properties, "UTF-8");
+
+        // 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....
+        cpPrefix = KeyValuePair.getValue("smooks-cdr.list-classpath-prefix", properties, "/");
+        if(!cpPrefix.startsWith("/")) {
+            cpPrefix = "/" + cpPrefix;
+        }
+        
+        initSmooks();
+        
+        // In the context of the ESB, the Smooks useragent will be defined by the message "type", where it's 
+        // coming "from" and where it's going "to"...
+        messageUseragent = messageType + "-" + messageFrom + "-" + messageTo;
+        // Register the message metadata as "profiles" within the Smooks context.  These profiles ("type",
+        // "from" and "to") should expand out inside Smooks based on subprofiles that are
+        // 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});
+	}
+
+    /* (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;
+    }
+
+    /* (non-Javadoc)
+     * @see org.jboss.soa.esb.actions.ActionProcessor#getOkNotification(java.lang.Object)
+     */
+    public Serializable getOkNotification(Object message) {
+        return null;
+    }
+
+    /* (non-Javadoc)
+     * @see org.jboss.soa.esb.actions.ActionProcessor#getErrorNotification(java.lang.Object)
+     */
+    public Serializable getErrorNotification(Object message) {
+        return null;
+    }
+
+    /**
+     * Initialise the static SmooksStandalone instance.
+     * <p/>
+     * We may need to write a Smooks Container implementation specifically for JBossESB's needs.  SmooksStandalone is
+     * fine for a start though.
+     * @throws ConfigurationException Failed to load Smooks configurations.
+     */
+    protected void initSmooks() throws ConfigurationException {
+        synchronized (SmooksTransformer.class) {
+            if(smooks == null) {
+                InputStream configListStream = getClass().getResourceAsStream(cpPrefix + SMOOKS_CDR_LST);
+                
+                if(configListStream == null) {
+                    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!!
+                // This should eventually be solveable by creating a proper Smooks container impl for the ESB.
+                smooks = new SmooksStandalone(messageEnc);
+                
+                try {
+                    BufferedReader configReader = new BufferedReader(new InputStreamReader(configListStream));
+                    smooks.getContext().getStore().load(configReader);
+                } catch (Exception e) {
+                    throw new ConfigurationException("Smooks configuration load failed.", e);
+                }
+            }
+        }
+    }
+    
+    /**
+     * Reset the transformer.
+     * <p/>
+     * Clears the internal static smooks instance.
+     */
+    public void reset() {
+        synchronized (SmooksTransformer.class) {
+            smooks = null;
+        }
+    }
+}

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/JmsQueueListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/JmsQueueListener.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/JmsQueueListener.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -26,7 +26,6 @@
 import javax.jms.*;
 
 import org.jboss.soa.esb.actions.ActionDefinitionFactory;
-import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.actions.ActionProcessor;
 import org.jboss.soa.esb.helpers.*;
 

Added: labs/jbossesb/trunk/product/core/listeners/tests/src/device-profile.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/device-profile.xml	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/device-profile.xml	2006-09-22 16:40:48 UTC (rev 6374)
@@ -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>

Deleted: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformAction-Config-01.xml
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformAction-Config-01.xml	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformAction-Config-01.xml	2006-09-22 16:40:48 UTC (rev 6374)
@@ -1,35 +0,0 @@
-<EsbConfig
-	command-queue-class="org.jboss.soa.esb.command.InMemoryCommandQueue"
-	command-queue-name="test-queue"
->
-	
-	<ListenerConfig
-		listenerClass="org.jboss.soa.esb.util.MockPoller"
-		actions="X12N837-to-HL7V3, Process-HL7V3-Claim, HL7V3-to-X12N837, Route-to-Claims"
-		maxThreads="1"
-	>
-	</ListenerConfig>
-
-	<Actions>
-		<!-- 
-			Under the new architecture I think these will be equivalent to "Contracts Definitions"? 
-		-->
-		<Action name="X12N837-to-HL7V3" processor="Smooks" />
-		<Action name="Process-HL7V3-Claim" processor="ClaimsProcessor" />
-		<Action name="HL7V3-to-X12N837" processor="Smooks" />
-		<Action name="Route-to-Claims" processor="SocketRouter">
-			<property name="address" value="xxxxx" />
-		</Action>
-
-		<ProcessorAliases>
-			<!-- 
-				Under the new architecture I think these will be equivalent to "Services"?  The alias "name" being like the Service URN.
-			-->
-			<Alias name="Smooks" class="org.jboss.soa.esb.actions.SmooksTransformActionProcessor" />
-			<Alias name="ClaimsProcessor" class="com.acme.health.ClaimsProcessor" />
-			<Alias name="JmsRouter" class="org.jboss.soa.esb.actions.JmsRouter" />
-			<Alias name="SocketRouter" class="org.jboss.soa.esb.actions.SocketRouter" />
-		</ProcessorAliases>
-	</Actions>
-
-</EsbConfig>

Deleted: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionFuncTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionFuncTest.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionFuncTest.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -1,18 +0,0 @@
-package org.jboss.soa.esb.actions;
-
-import org.jboss.soa.esb.helpers.DomElement;
-import org.jboss.soa.esb.listeners.GpListener;
-import org.jboss.soa.esb.util.ListenersManagerExecThread;
-
-import junit.framework.TestCase;
-
-public class SmooksTransformActionFuncTest extends TestCase {
-
-	public void test() throws Exception {
-		DomElement config = DomElement.fromInputStream(getClass().getResourceAsStream("SmooksTransformAction-Config-01.xml"));
-		GpListener listenerManager = new GpListener(config);
-		ListenersManagerExecThread execThread = new ListenersManagerExecThread(listenerManager);
-		
-		// TODO: ... Work in progress...
-	}
-}

Deleted: labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionUnitTest.java	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformActionUnitTest.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -1,10 +0,0 @@
-package org.jboss.soa.esb.actions;
-
-import junit.framework.TestCase;
-
-public class SmooksTransformActionUnitTest extends TestCase {
-
-	public void test() {
-		// TODO: ... Work in progress...
-	}
-}

Added: 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-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/SmooksTransformerUnitTest.java	2006-09-22 16:40:48 UTC (rev 6374)
@@ -0,0 +1,80 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.soa.esb.actions;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.helpers.KeyValuePair;
+
+import junit.framework.TestCase;
+
+/**
+ * SmooksTransformer unit tests.
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ * @since Version 4.0
+ */
+public class SmooksTransformerUnitTest extends TestCase {
+
+    public void test_bad_config() {
+        List<KeyValuePair> properties = new ArrayList<KeyValuePair>();
+
+        // Should get exceptions where required configs are missing...
+        assertConfigException(properties, "Action configuration 'message-type' not specified");
+        properties.add(new KeyValuePair("message-type", "111"));
+        assertConfigException(properties, "Action configuration 'message-from' not specified");
+        properties.add(new KeyValuePair("message-from", "AAA"));
+        assertConfigException(properties, "Action configuration 'message-to' not specified");
+        properties.add(new KeyValuePair("message-to", "BBB"));
+
+        // Should get an exception where the smooks-cdr.lst file is missing....
+        properties.add(new KeyValuePair("smooks-cdr.list-classpath-prefix", "/some/bad/cp/location/"));
+        assertConfigException(properties, "Failed to locate Smooks configuration list file [smooks-cdr.lst].  This file must be located at");
+    }
+
+    public void test_trans() 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"));
+
+        // 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....
+    }
+
+    private void assertConfigException(List<KeyValuePair> properties, String expectedException) {
+        try {
+            new SmooksTransformer("trans", properties);
+            fail("Expected ConfigurationException: [" + expectedException + "...]");
+        } catch(ConfigurationException e) {
+            assertTrue("Expected exception message to start with [" + expectedException + "]. Was [" + e.getMessage() + "]", e.getMessage().startsWith(expectedException));
+        }
+    }
+}

Added: 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-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/org/jboss/soa/esb/actions/smooks-test.cdrl	2006-09-22 16:40:48 UTC (rev 6374)
@@ -0,0 +1,16 @@
+<?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'>
+
+	<!-- Overriding the defaults -->
+	<smooks-resource selector='a' useragent='xxx' path='x.txt' namespace='http://milyn.codehaus.org/smooks'/>
+
+	<!-- Inheriting the defaults -->
+	<smooks-resource>
+		<param name='param1'>param1Val</param>
+		<param name='param2'>true</param>
+		<param name='param3'>false</param>
+	</smooks-resource>
+</smooks-resource-list>
+

Added: labs/jbossesb/trunk/product/core/listeners/tests/src/smooks-cdr.lst
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/tests/src/smooks-cdr.lst	2006-09-22 16:34:47 UTC (rev 6373)
+++ labs/jbossesb/trunk/product/core/listeners/tests/src/smooks-cdr.lst	2006-09-22 16:40:48 UTC (rev 6374)
@@ -0,0 +1 @@
+/org/jboss/soa/esb/actions/smooks-test.cdrl
\ No newline at end of file

Added: labs/jbossesb/trunk/product/lib/ext/commons-lang-2.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/commons-lang-2.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/dtdparser-1.21.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/dtdparser-1.21.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/milyn-commons-0.7.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-commons-0.7.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-core-0.7.2-SNAPSHOT.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-core-0.7.2-SNAPSHOT.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-javabean-0.1.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-javabean-0.1.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-misc-0.1.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-misc-0.1.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-templating-0.2.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-smooks-templating-0.2.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/milyn-tinak-0.7.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/xercesImpl-2.7.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/xercesImpl-2.7.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossesb/trunk/product/lib/ext/xml-apis-1.3.02.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossesb/trunk/product/lib/ext/xml-apis-1.3.02.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream




More information about the jboss-svn-commits mailing list