[jboss-svn-commits] JBL Code SVN: r20689 - in labs/jbossesb/workspace/dbevenius/ruleservice: product/rosetta/src/org/jboss/internal/soa/esb/couriers and 17 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Jun 23 04:28:09 EDT 2008


Author: beve
Date: 2008-06-23 04:28:09 -0400 (Mon, 23 Jun 2008)
New Revision: 20689

Added:
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/AbstractTestRunner.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/jbossesb-properties.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/ProfilingUnitTest.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-esb.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-smooks-01.xml
Modified:
   labs/jbossesb/workspace/dbevenius/ruleservice/
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/JmsComposer.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/message/Properties.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/listeners/InVMListenerUnitTest.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/README.html
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/build.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/jboss-esb.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/src/org/jboss/soa/esb/samples/quickstart/nativeclient/MyAction.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_EDI2XML_Groovy_XSLT/jboss-esb.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/jboss-esb.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/smooks-res.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/src/org/jboss/soa/esb/dvdstore/DVDStoreAction.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_date_manipulation/jboss-esb.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_simple/jboss-esb.xml
   labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/main/java/org/jboss/soa/esb/smooks/SmooksAction.java
   labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management-esb/src/main/resources/postgresql/create_database.sql
   labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management/src/main/resources/postgresql/monitoring-mappings.hbm.xml
Log:
Merge from main.



Property changes on: labs/jbossesb/workspace/dbevenius/ruleservice
___________________________________________________________________
Name: svnmerge-integrated
   - /labs/jbossesb/trunk:1-20636
   + /labs/jbossesb/trunk:1-20688

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/FileCourier.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -296,14 +296,6 @@
                                 else
                                         handler.renameFile(work, done);
                                 
-                                /*
-                                 * If this is fault message, then throw an exception with the contents. With the
-                                 * exception of user-defined exceptions, faults will have nothing in the body, properties etc.
-                                 */
-                                
-                                if (Type.isFaultMessage(result))
-                                    Factory.createExceptionFromFault(result);
-                                
                                 return result;
                         }
                         try

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/SqlTableCourier.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -207,15 +207,7 @@
                             }
 
                             if (result != null) {
-                                /*
-                                 * If this is fault message, then throw an exception with the contents. With the
-                                 * exception of user-defined exceptions, faults will have nothing in the body, properties etc.
-                                 */
-                                if (Type.isFaultMessage(result)) {
-                                    Factory.createExceptionFromFault(result);
-                                } else {
-                                    return result;
-                                }
+                                return result;
                             }
                         }
                     } finally {

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/TwoWayCourierImpl.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -32,6 +32,8 @@
 import org.jboss.soa.esb.couriers.*;
 import org.jboss.soa.esb.filter.FilterManager;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.util.Type;
+import org.jboss.soa.esb.listeners.message.errors.Factory;
 
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -211,9 +213,15 @@
 	public Message pickup(long waitTime) throws CourierException,
 			CourierTimeoutException
 	{
-		return pickup(waitTime, _pickupCourier);
-	}
+        Message message = pickup(waitTime, _pickupCourier);
 
+        if (message != null && Type.isFaultMessage(message)) {
+            Factory.createExceptionFromFault(message) ;
+        }
+
+        return message;
+    }
+
 	/**
 	 * @see org.jboss.soa.esb.couriers.TwoWayCourier#pickup(long waitTime, EPR
 	 *      epr).

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/JmsComposer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/JmsComposer.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/internal/soa/esb/couriers/helpers/JmsComposer.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -78,8 +78,9 @@
                 * exception of user-defined exceptions, faults will have nothing in the body, properties etc.
                 */
 
-            if (Type.isFaultMessage(composedMessage))
+            if (Type.isFaultMessage(composedMessage)) {
                 Factory.createExceptionFromFault(composedMessage) ;
+            }
 
             return composedMessage ;
         }

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -49,7 +49,9 @@
 import org.jboss.soa.esb.listeners.ha.ServiceClusterInfo;
 import org.jboss.soa.esb.listeners.ha.ServiceClusterInfoImpl;
 import org.jboss.soa.esb.listeners.message.MessageDeliverException;
+import org.jboss.soa.esb.listeners.message.errors.Factory;
 import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.util.Type;
 import org.jboss.soa.esb.services.persistence.MessageStore;
 import org.jboss.soa.esb.services.persistence.RedeliverStore;
 import org.jboss.soa.esb.services.registry.RegistryException;
@@ -315,7 +317,10 @@
             	{
 	                replyMessage = eprInvoker.attemptDelivery(message, epr);
 	                if (replyMessage != null) {
-	                    // We've delivered it, we're done!
+                        if (Type.isFaultMessage(replyMessage)) {
+                            Factory.createExceptionFromFault(replyMessage) ;
+                        }
+                        // We've delivered it, we're done!
 	                    return replyMessage;
 	                } else {
 	                    logger.info("Unresponsive EPR: " + epr+" for message: "+message.getHeader());

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/message/Properties.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/message/Properties.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/src/org/jboss/soa/esb/message/Properties.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -29,6 +29,11 @@
 
 public interface Properties
 {
+    /**
+     * Message Profile property key.
+     */
+    public static final String MESSAGE_PROFILE = "messageProfile";
+
 	/**
 	 * getProperty(name)
 	 * 

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/listeners/InVMListenerUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/listeners/InVMListenerUnitTest.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/listeners/InVMListenerUnitTest.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -21,11 +21,11 @@
 
 import junit.framework.TestCase;
 import org.jboss.soa.esb.ConfigurationException;
+import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.addressing.EPR;
 import org.jboss.soa.esb.addressing.eprs.InVMEpr;
 import org.jboss.soa.esb.client.ServiceInvoker;
 import org.jboss.soa.esb.common.Environment;
-import org.jboss.soa.esb.couriers.CourierFactory;
 import org.jboss.soa.esb.couriers.FaultMessageException;
 import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException;
 import org.jboss.soa.esb.listeners.message.MessageDeliverException;
@@ -33,10 +33,8 @@
 import org.jboss.soa.esb.message.format.MessageFactory;
 import org.jboss.soa.esb.mock.MockAction;
 import org.jboss.soa.esb.parameters.ParamRepositoryException;
-import org.jboss.soa.esb.services.registry.RegistryException;
-import org.jboss.soa.esb.services.registry.ServiceNotFoundException;
+import org.jboss.soa.esb.testutils.AbstractTestRunner;
 import org.jboss.soa.esb.testutils.ESBConfigUtil;
-import org.jboss.internal.soa.esb.couriers.InVMCourier;
 import org.xml.sax.SAXException;
 
 import java.io.IOException;
@@ -49,21 +47,17 @@
 
     protected void setUp() throws Exception {
         System.setProperty(Environment.DEFAULT_INVM_SCOPE, "GLOBAL");
+        MockAction.exception = null;
     }
 
     protected void tearDown() throws Exception {
         System.setProperty(Environment.DEFAULT_INVM_SCOPE, "NONE");
+        MockAction.exception = null;
     }
 
-    public void test_async() throws IOException, SAXException, ConfigurationException, ManagedLifecycleException, ParamRepositoryException, MessageDeliverException {
-        ESBConfigUtil esbConfig = new ESBConfigUtil(getClass().getResourceAsStream("in-listener-config-01.xml"));
-
-        esbConfig.setESBProperties(getClass().getResourceAsStream("jbossesb-properties-01.xml"));
-        try {
-            esbConfig.installRegistry();
-            try {
-                esbConfig.startController();
-
+    public void test_async() throws Exception {
+        AbstractTestRunner testRunner = new AbstractTestRunner() {
+            public void test() throws Exception {
                 ServiceInvoker invoker = new ServiceInvoker("ServiceCat", "ServiceName");
                 Message message = MessageFactory.getInstance().getMessage();
 
@@ -72,25 +66,15 @@
 
                 sleep(50);
                 assertTrue(message == MockAction.message);
-
-                esbConfig.stopController();
-            } finally {
-                esbConfig.uninstallRegistry();
             }
-        } finally {
-            esbConfig.resetESBProperties();
-        }
+        }.setServiceConfig("in-listener-config-01.xml");
+
+        testRunner.run();
     }
 
-    public void test_async_lockstep() throws IOException, SAXException, ConfigurationException, ManagedLifecycleException, ParamRepositoryException, MessageDeliverException, ServiceNotFoundException, RegistryException {
-        ESBConfigUtil esbConfig = new ESBConfigUtil(getClass().getResourceAsStream("in-listener-config-04.xml"));
-
-        esbConfig.setESBProperties(getClass().getResourceAsStream("jbossesb-properties-01.xml"));
-        try {
-            esbConfig.installRegistry();
-            try {
-                esbConfig.startController();
-
+    public void test_async_lockstep() throws Exception {
+        AbstractTestRunner testRunner = new AbstractTestRunner() {
+            public void test() throws Exception {
                 // Test that we can invoke them....
                 invokeService("ServiceCat", "Service1");
                 invokeService("ServiceCat", "Service2");
@@ -105,37 +89,15 @@
                 assertEquals(1, eprs.size());
                 assertEquals(true, ((InVMEpr)eprs.get(0)).getLockstep());
                 assertEquals(4000, ((InVMEpr)eprs.get(0)).getLockstepWaitTime());
-
-                esbConfig.stopController();
-            } finally {
-                esbConfig.uninstallRegistry();
             }
-        } finally {
-            esbConfig.resetESBProperties();
-        }
-    }
+        }.setServiceConfig("in-listener-config-04.xml");
 
-    private void invokeService(String cat, String name) throws MessageDeliverException {
-        ServiceInvoker invoker = new ServiceInvoker(cat, name);
-
-        Message message = MessageFactory.getInstance().getMessage();
-
-        message.getBody().add("Hi there!");
-        invoker.deliverAsync(message);
-
-        sleep(50);
-        assertTrue(message == MockAction.message);
+        testRunner.run();
     }
 
-    public void test_sync() throws IOException, SAXException, ConfigurationException, ManagedLifecycleException, ParamRepositoryException, MessageDeliverException, RegistryException, FaultMessageException {
-        ESBConfigUtil esbConfig = new ESBConfigUtil(getClass().getResourceAsStream("in-listener-config-01.xml"));
-
-        esbConfig.setESBProperties(getClass().getResourceAsStream("jbossesb-properties-01.xml"));
-        try {
-            esbConfig.installRegistry();
-            try {
-                esbConfig.startController();
-
+    public void test_sync_noerror() throws Exception {
+        AbstractTestRunner testRunner = new AbstractTestRunner() {
+            public void test() throws Exception {
                 ServiceInvoker invoker = new ServiceInvoker("ServiceCat", "ServiceName");
                 Message message = MessageFactory.getInstance().getMessage();
 
@@ -144,31 +106,41 @@
 
                 assertTrue(message == MockAction.message);
                 assertTrue(message == response);
-
-                esbConfig.stopController();
-            } finally {
-                esbConfig.uninstallRegistry();
             }
-        } finally {
-            esbConfig.resetESBProperties();
-        }
+        }.setServiceConfig("in-listener-config-01.xml");
+
+        testRunner.run();
     }
 
-    public void test_sync_multithreaded() throws IOException, SAXException, ConfigurationException, ManagedLifecycleException, ParamRepositoryException, MessageDeliverException, RegistryException, FaultMessageException {
-        ESBConfigUtil esbConfig = new ESBConfigUtil(getClass().getResourceAsStream("in-listener-config-03.xml"));
+    public void test_sync_error() throws Exception {
+        AbstractTestRunner testRunner = new AbstractTestRunner() {
+            public void test() throws Exception {
+                ServiceInvoker invoker = new ServiceInvoker("ServiceCat", "ServiceName");
+                Message message = MessageFactory.getInstance().getMessage();
 
-        esbConfig.setESBProperties(getClass().getResourceAsStream("jbossesb-properties-01.xml"));
-        try {
-            esbConfig.installRegistry();
-            try {
-                esbConfig.startController();
+                message.getBody().add("Hi there!");
+                MockAction.exception = new ActionProcessingException("invm_sync_error");
+                try {
+                    invoker.deliverSync(message, 2000);
+                    fail("Expected FaultMessageException.");
+                } catch(FaultMessageException e) {
+                    assertEquals("org.jboss.soa.esb.actions.ActionProcessingException: invm_sync_error", e.getMessage());
+                }
+            }
+        }.setServiceConfig("in-listener-config-01.xml");
 
+        testRunner.run();
+    }
+
+    public void test_sync_multithreaded() throws Exception {
+        AbstractTestRunner testRunner = new AbstractTestRunner() {
+            public void test() throws Exception {
                 ServiceInvoker invoker = new ServiceInvoker("ServiceCat", "ServiceName");
                 ClientInvokerThread[] clients = new ClientInvokerThread[10];
 
                 // Create the clients...
                 for (int i = 0; i < clients.length; i++) {
-                    clients[i] = new ClientInvokerThread(invoker);                    
+                    clients[i] = new ClientInvokerThread(invoker);
                 }
 
                 // Start the clients...
@@ -195,20 +167,27 @@
                         fail("Thread " + i + " was in error: " + clients[i].thrown.getMessage());
                     }
                 }
-
-                esbConfig.stopController();
-            } finally {
-                esbConfig.uninstallRegistry();
             }
-        } finally {
-            esbConfig.resetESBProperties();
+        }.setServiceConfig("in-listener-config-03.xml");
+
+        testRunner.run();
+    }
+
+    public void test_none_scoped() throws ManagedLifecycleException, SAXException, ParamRepositoryException, MessageDeliverException, IOException {
+        try {
+            new ESBConfigUtil(getClass().getResourceAsStream("in-listener-config-02.xml"));
+            fail("Expected ConfigurationException");
+        } catch (ConfigurationException e) {
+            assertEquals("Service configuration for Service 'ServiceCat:ServiceName' doesn't define a Message-Aware Listener (i.e. is-gateway='false').", e.getMessage());
         }
     }
 
     private class ClientInvokerThread extends Thread {
 
         private ServiceInvoker invoker = null;
+
         private boolean done = false;
+
         private Throwable thrown;
 
         private ClientInvokerThread(ServiceInvoker invoker) {
@@ -237,15 +216,19 @@
                 done = true;
             }
         }
+
     }
 
-    public void test_none_scoped() throws ManagedLifecycleException, SAXException, ParamRepositoryException, MessageDeliverException, IOException {
-        try {
-            new ESBConfigUtil(getClass().getResourceAsStream("in-listener-config-02.xml"));
-            fail("Expected ConfigurationException");
-        } catch (ConfigurationException e) {
-            assertEquals("Service configuration for Service 'ServiceCat:ServiceName' doesn't define a Message-Aware Listener (i.e. is-gateway='false').", e.getMessage());
-        }
+    private void invokeService(String cat, String name) throws MessageDeliverException {
+        ServiceInvoker invoker = new ServiceInvoker(cat, name);
+
+        Message message = MessageFactory.getInstance().getMessage();
+
+        message.getBody().add("Hi there!");
+        invoker.deliverAsync(message);
+
+        sleep(50);
+        assertTrue(message == MockAction.message);
     }
 
     private static void sleep(long millis) {

Copied: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/AbstractTestRunner.java (from rev 20683, labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/testutils/AbstractTestRunner.java)
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/AbstractTestRunner.java	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/AbstractTestRunner.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -0,0 +1,101 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.soa.esb.testutils;
+
+import junit.framework.TestCase;
+import org.jboss.internal.soa.esb.assertion.AssertArgument;
+import org.jboss.soa.esb.common.ModulePropertyManager;
+
+import java.io.InputStream;
+
+/**
+ * Abstract Test Runner class.
+ * 
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public abstract class AbstractTestRunner {
+
+    private InputStream serviceConfig;
+    private InputStream esbProperties;
+
+    public AbstractTestRunner setServiceConfig(InputStream serviceConfig) {
+        AssertArgument.isNotNull(serviceConfig, "serviceConfig");
+        this.serviceConfig = serviceConfig;
+        return this;
+    }
+
+    public AbstractTestRunner setServiceConfig(String serviceConfig) {
+        AssertArgument.isNotNull(serviceConfig, "serviceConfig");
+        setServiceConfig(getClass().getResourceAsStream(serviceConfig));
+        return this;
+    }
+
+    public AbstractTestRunner setEsbProperties(InputStream esbProperties) {
+        AssertArgument.isNotNull(esbProperties, "esbProperties");
+        this.esbProperties = esbProperties;
+        return this;
+    }
+
+    public AbstractTestRunner setEsbProperties(String esbProperties) {
+        AssertArgument.isNotNull(esbProperties, "esbProperties");
+        setEsbProperties(getClass().getResourceAsStream(esbProperties));
+        return this;
+    }
+
+    public abstract void test() throws Exception;
+
+    public void run() throws Exception {
+        if(serviceConfig == null) {
+            TestCase.fail("'serviceConfig' not configured.  Must call setServiceConfig().");
+        }
+
+        ESBConfigUtil esbConfig = new ESBConfigUtil(serviceConfig);
+
+        if(esbProperties != null) {
+            esbConfig.setESBProperties(esbProperties);
+        } else {
+            esbConfig.setESBProperties(AbstractTestRunner.class.getResourceAsStream("jbossesb-properties.xml"));
+        }
+
+        String installedJaxrConnectionFactoryImpl = System.getProperty( "javax.xml.registry.ConnectionFactoryClass");
+        String jaxrConnectionFactoryImpl = ModulePropertyManager.getPropertyManager("registry").getProperty("org.jboss.soa.esb.registry.factoryClass", "org.apache.ws.scout.registry.ConnectionFactoryImpl"); 
+        System.setProperty( "javax.xml.registry.ConnectionFactoryClass", jaxrConnectionFactoryImpl);
+        try {
+            esbConfig.installRegistry();
+            try {
+                esbConfig.startController();
+                try {
+                    test();
+                } finally {
+                    esbConfig.stopController();
+                }
+            } finally {
+                esbConfig.uninstallRegistry();
+            }
+        } finally {
+            if(installedJaxrConnectionFactoryImpl != null) {
+                System.setProperty("javax.xml.registry.ConnectionFactoryClass", installedJaxrConnectionFactoryImpl);
+            } else {
+                System.getProperties().remove("javax.xml.registry.ConnectionFactoryClass");
+            }
+            esbConfig.resetESBProperties();
+        }
+    }
+}

Copied: labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/jbossesb-properties.xml (from rev 20683, labs/jbossesb/trunk/product/rosetta/tests/src/org/jboss/soa/esb/testutils/jbossesb-properties.xml)
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/jbossesb-properties.xml	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/rosetta/tests/src/org/jboss/soa/esb/testutils/jbossesb-properties.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  JBoss, Home of Professional Open Source
+  Copyright 2006, JBoss Inc., and others contributors as indicated 
+  by the @authors tag. All rights reserved. 
+  See the copyright.txt in the distribution for a
+  full listing of individual contributors. 
+  This copyrighted material is made available to anyone wishing to use,
+  modify, copy, or redistribute it subject to the terms and conditions
+  of the GNU Lesser General Public License, v. 2.1.
+  This program is distributed in the hope that it will be useful, but WITHOUT A 
+  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,
+  v.2.1 along with this distribution; if not, write to the Free Software
+  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+  MA  02110-1301, USA.
+  
+  (C) 2005-2006,
+  @author JBoss Inc.
+-->
+<!-- $Id: jbossesb-unittest-properties.xml $ -->
+<!--
+  These options are described in the JBossESB manual.
+  Defaults are provided here for convenience only.
+ 
+  Please read through this file prior to using the system, and consider
+  updating the specified entries.
+-->
+<esb
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:noNamespaceSchemaLocation="jbossesb-1_0.xsd">
+    <properties name="core">
+		<property name="org.jboss.soa.esb.jndi.server.url" value="localhost"/>
+		<property name="org.jboss.soa.esb.jndi.server.context.factory" value="org.jnp.interfaces.NamingContextFactory"/>
+		<property name="org.jboss.soa.esb.jndi.server.pkg.prefix" value=""/>
+		<property name="org.jboss.soa.esb.persistence.connection.factory" 	value="org.jboss.internal.soa.esb.persistence.format.MessageStoreFactoryImpl"/>
+        <property name="jboss.esb.invm.scope.default" value="NONE"/>
+    </properties>
+    <properties name="registry">
+    	<property name="org.jboss.soa.esb.registry.queryManagerURI" value="org.apache.juddi.registry.local.InquiryService#inquire"/>
+    	<property name="org.jboss.soa.esb.registry.lifeCycleManagerURI" value="org.apache.juddi.registry.local.PublishService#publish"/>
+    	<property name="org.jboss.soa.esb.registry.implementationClass" value="org.jboss.internal.soa.esb.services.registry.JAXRRegistryImpl"/>
+    	<property name="org.jboss.soa.esb.registry.factoryClass" value="org.apache.ws.scout.registry.ConnectionFactoryImpl"/>
+    	<property name="org.jboss.soa.esb.registry.user" value="jbossesb"/>
+    	<property name="org.jboss.soa.esb.registry.password" value="password"/>
+    	<!-- the following parameter is scout specific to set the type of communication between scout and the UDDI (embedded, rmi, soap) -->
+    	<property name="org.jboss.soa.esb.scout.proxy.transportClass" value="org.apache.ws.scout.transport.LocalTransport"/>
+    </properties>
+    <properties name="transports" depends="core">
+    	<property name="org.jboss.soa.esb.mail.smtp.host" value="localhost"/>
+    	<property name="org.jboss.soa.esb.mail.smtp.user" value="jbossesb"/>
+    	<property name="org.jboss.soa.esb.mail.smtp.password" value=""/>
+    	<property name="org.jboss.soa.esb.mail.smtp.port" value="25"/>
+    </properties>
+    <properties name="connection">
+    	<property name="min-pool-size" value="5"/>
+    	<property name="max-pool=size" value="10"/>
+    	<property name="blocking-timeout-millis" value="5000"/>
+    	<property name="abandoned-connection-timeout" value="10000"/>
+    	<property name="abandoned-connection-time-interval" value="30000"/>
+    </properties>
+    <properties name="dbstore">
+	    <!--  connection manager type -->
+	    <property name="org.jboss.soa.esb.persistence.db.conn.manager" 		value="org.jboss.internal.soa.esb.persistence.manager.StandaloneConnectionManager"/>	    
+	    <!--  property name="org.jboss.soa.esb.persistence.db.conn.manager" value="org.jboss.internal.soa.esb.persistence.manager.J2eeConnectionManager"/ -->
+	    
+	    <!-- this property is only used if using the j2ee connection manager -->
+	    <property name="org.jboss.soa.esb.persistence.db.datasource.name" 	value="java:/JBossesbDS"/>
+		
+		<!-- standalone connection pooling settings -->
+		<property name="org.jboss.soa.esb.persistence.db.connection.url" 	value="jdbc:hsqldb:hsql://localhost:9001/juddi"/>
+		<property name="org.jboss.soa.esb.persistence.db.jdbc.driver" 		value="org.hsqldb.jdbcDriver"/>
+		<property name="org.jboss.soa.esb.persistence.db.user" 				value="sa"/>
+		<property name="org.jboss.soa.esb.persistence.db.pwd" 				value=""/>		
+		<property name="org.jboss.soa.esb.persistence.db.pool.initial.size"	value="2"/>
+		<property name="org.jboss.soa.esb.persistence.db.pool.min.size"		value="2"/>
+		<property name="org.jboss.soa.esb.persistence.db.pool.max.size"		value="5"/>
+		<!--table managed by pool to test for valid connections - created by pool automatically -->
+		<property name="org.jboss.soa.esb.persistence.db.pool.test.table"	value="pooltest"/>		
+		<property name="org.jboss.soa.esb.persistence.db.pool.timeout.millis"	value="5000"/>
+    </properties>
+    <properties name="messagerouting">
+    	<property name="org.jboss.soa.esb.routing.cbrClass" value="org.jboss.internal.soa.esb.services.routing.cbr.JBossRulesRouter"/>
+    </properties>
+</esb>

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/README.html
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/README.html	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/README.html	2008-06-23 08:28:09 UTC (rev 20689)
@@ -135,7 +135,7 @@
                 <li>"ant 01_split_enrich_transform_route"</li>
                 <li>"ant 02_Low_Price"</li>
                 <li>"ant 03_High_Price"</li>
-                <li>"ant 04_Reptiles_notify_webservice_proxy" (this just builds and deploys the Webservice)</li>
+                <li>"ant 04_Reptiles_notify_webservice" (this just builds and deploys the Webservice)</li>
             </ul>
         </li>
         <li>In the 6th command shell window, type "ant createMessage" to execute the message creation

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/build.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/build.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/huge-split-enrich-transform-route/build.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -44,7 +44,7 @@
         </java>
     </target>
 
-    <target name="04_Reptiles_notify_webservice_proxy" depends="compile">
+    <target name="04_Reptiles_notify_webservice" depends="compile">
         <antcall target="quickstart-specific-assemblies" />
         <copy todir="${org.jboss.esb.server.deploy.dir}" file="build/${ant.project.name}.war"/>
 

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/jboss-esb.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/jboss-esb.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -20,7 +20,7 @@
           
         <service category="MyServiceCategory" 
                  name="MyNativeClientService" 
-                 description="A WS Frontend speaks natively to the ESB" >
+                 description="A WS Frontend speaks natively to the ESB" invmScope="GLOBAL">
             <listeners>
                 <jms-listener name="JMS-ESBListener"
                               busidref="quickstartEsbChannel"

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/src/org/jboss/soa/esb/samples/quickstart/nativeclient/MyAction.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/src/org/jboss/soa/esb/samples/quickstart/nativeclient/MyAction.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/native_client/src/org/jboss/soa/esb/samples/quickstart/nativeclient/MyAction.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -24,6 +24,7 @@
 import org.jboss.soa.esb.message.Body;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.actions.AbstractActionLifecycle;
+import org.jboss.soa.esb.actions.ActionProcessingException;
 
 public class MyAction extends AbstractActionLifecycle {
 
@@ -51,7 +52,9 @@
         // Reset the message body contents with the response...
         msgBody.add(("Hello From ESB MyAction: " + contents));
 
-        return message;
+        throw new ActionProcessingException("Break!!!!");
+
+        //return message;
     }
 
     public void exceptionHandler(Message message, Throwable exception) {

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_EDI2XML_Groovy_XSLT/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_EDI2XML_Groovy_XSLT/jboss-esb.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_EDI2XML_Groovy_XSLT/jboss-esb.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -27,8 +27,9 @@
 				<action name="print-before" class="org.jboss.soa.esb.actions.SystemPrintln">
 					<property name="message" value="[transform_EDI2XML_Groovy_XSLT] Message before transformation" />
 				</action>
-				<action name="transform" class="org.jboss.soa.esb.actions.converters.SmooksTransformer">
-                    <property name="resource-config" value="/smooks-res.xml" />
+				<action name="transform" class="org.jboss.soa.esb.smooks.SmooksAction">
+                    <property name="smooksConfig" value="/smooks-res.xml" />
+                    <!-- property name="reportPath" value="/zap/smooks-report.html" / -->
 				</action>
 				<action name="print-after" class="org.jboss.soa.esb.actions.SystemPrintln">
 					<property name="message" value="[transform_EDI2XML_Groovy_XSLT] Message after transformation" />

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/jboss-esb.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/jboss-esb.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -44,9 +44,10 @@
                    	process="displayMessage" 
                 />   
 
-                <action name="transform" class="org.jboss.soa.esb.actions.converters.SmooksTransformer">
-                    <property name="resource-config" value="/smooks-res.xml" />
-                    <property name="java-output-location" value="$default" />
+                <action name="transform" class="org.jboss.soa.esb.smooks.SmooksAction">
+                    <property name="smooksConfig" value="/smooks-res.xml" />
+                    <property name="resultType" value="JAVA" />
+                    <!-- property name="reportPath" value="/zap/smooks-report.html" / -->
                 </action>
 
                 <action name="convertPOJO2Message" class="org.jboss.soa.esb.dvdstore.DVDStoreAction"	/>

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/smooks-res.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/smooks-res.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/smooks-res.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -7,40 +7,40 @@
         <param name="beanId">orderHeader</param>
 		<param name="beanClass">org.jboss.soa.esb.dvdstore.OrderHeader</param>
         <param name="bindings">
-            <binding property="orderId" selector="Order @orderId" />
-            <binding property="orderDate" selector="Order @orderDate" type="LongDate"/>
-            <binding property="statusCode" selector="Order @statusCode" type="Integer" />
-            <binding property="netAmount" selector="Order @netAmount" type="Double" />
-            <binding property="totalAmount" selector="Order @totalAmount" type="Double" />
-            <binding property="tax" selector="Order @tax" type="Double" />
+            <binding property="orderId" selector="Order/@orderId" />
+            <binding property="orderDate" selector="Order/@orderDate" type="LongDate"/>
+            <binding property="statusCode" selector="Order/@statusCode" type="Integer" />
+            <binding property="netAmount" selector="Order/@netAmount" type="Double" />
+            <binding property="totalAmount" selector="Order/@totalAmount" type="Double" />
+            <binding property="tax" selector="Order/@tax" type="Double" />
         </param>
     </resource-config>
 
     <!-- Populate the Customer -->
-    <resource-config selector="order customer">
+    <resource-config selector="order/customer">
         <resource>org.milyn.javabean.BeanPopulator</resource>
 		<param name="beanId">customer</param>
 		<param name="beanClass">org.jboss.soa.esb.dvdstore.Customer</param>
         <param name="bindings">
-            <binding property="userName" selector="order customer @userName" />
-            <binding property="firstName" selector="order customer @firstName" />
-            <binding property="lastName" selector="order customer @lastName" />
-            <binding property="state" selector="order customer @state" />
+            <binding property="userName" selector="order/customer/@userName" />
+            <binding property="firstName" selector="order/customer/@firstName" />
+            <binding property="lastName" selector="order/customer/@lastName" />
+            <binding property="state" selector="order/customer/@state" />
         </param>
 	</resource-config>
 
     <!-- Populate the OrderItem list -->
-	<resource-config selector="order orderlines orderline">
+	<resource-config selector="order/orderlines/orderline">
         <resource>org.milyn.javabean.BeanPopulator</resource>
 		<param name="beanId">orderItem</param>
 		<param name="beanClass">org.jboss.soa.esb.dvdstore.OrderItem</param>
 		<param name="addToList">true</param>
         <param name="bindings">
-            <binding property="position"  selector="order orderlines orderline @position" type="Integer" />
-            <binding property="quantity"  selector="order orderlines orderline @quantity" type="Integer" />
-            <binding property="productId" selector="order orderlines orderline product @productId" />
-            <binding property="title"     selector="order orderlines orderline product @title" />
-            <binding property="price"     selector="order orderlines orderline product @price" type="Double" />
+            <binding property="position"  selector="order/orderlines/orderline/@position" type="Integer" />
+            <binding property="quantity"  selector="order/orderlines/orderline/@quantity" type="Integer" />
+            <binding property="productId" selector="order/orderlines/orderline/product/@productId" />
+            <binding property="title"     selector="order/orderlines/orderline/product/@title" />
+            <binding property="price"     selector="order/orderlines/orderline/product/@price" type="Double" />
         </param>
 	</resource-config>
 

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/src/org/jboss/soa/esb/dvdstore/DVDStoreAction.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/src/org/jboss/soa/esb/dvdstore/DVDStoreAction.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2POJO/src/org/jboss/soa/esb/dvdstore/DVDStoreAction.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -21,14 +21,14 @@
 
 package org.jboss.soa.esb.dvdstore;
 
-import java.util.HashMap;
-import java.util.List;
-
 import org.jboss.soa.esb.actions.AbstractActionPipelineProcessor;
 import org.jboss.soa.esb.actions.ActionProcessingException;
 import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.message.Message;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * DVD Store action.
  * <p/>
@@ -43,10 +43,12 @@
 	
 	public Message process(Message message) throws ActionProcessingException {
 		StringBuffer results = new StringBuffer();
-        OrderHeader header = (OrderHeader) message.getBody().get("orderHeader");
-        Customer customer = (Customer) message.getBody().get("customer");
-        List orderItems = (List) message.getBody().get("orderItemList");
+        Map javaResultMap = (Map) message.getBody().get();
 
+        OrderHeader header = (OrderHeader) javaResultMap.get("orderHeader");
+        Customer customer = (Customer) javaResultMap.get("customer");
+        List orderItems = (List) javaResultMap.get("orderItemList");
+
         results.append("Demonstrates Smooks ability to rip the XML into Objects\n");
         results.append("********* DVDStoreAction - Order Value Objects Populated *********\n");
         results.append("Header: " + header + "\n");

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_date_manipulation/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_date_manipulation/jboss-esb.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_date_manipulation/jboss-esb.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -29,8 +29,9 @@
                     <property name="message"
                               value="[transform_XML2XML_date_manipulation] Message before transformation"/>
                 </action>
-                <action name="transform" class="org.jboss.soa.esb.actions.converters.SmooksTransformer">
-                    <property name="resource-config" value="/smooks-res.xml"/>
+                <action name="transform" class="org.jboss.soa.esb.smooks.SmooksAction">
+                    <property name="smooksConfig" value="/smooks-res.xml" />
+                    <!-- property name="reportPath" value="/zap/smooks-report.html" / -->
                 </action>
                 <action name="print-after" class="org.jboss.soa.esb.actions.SystemPrintln">
                     <property name="message"

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_simple/jboss-esb.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_simple/jboss-esb.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/samples/quickstarts/transform_XML2XML_simple/jboss-esb.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -27,9 +27,10 @@
 				<action name="print-before" class="org.jboss.soa.esb.actions.SystemPrintln">
 					<property name="message" value="[transform_XML2XML_simple] Message before transformation" />
 				</action>
-				<action name="simple-transform" class="org.jboss.soa.esb.actions.converters.SmooksTransformer">
-                    <property name="resource-config" value="/smooks-res.xml" />
-				</action>
+                <action name="simple-transform" class="org.jboss.soa.esb.smooks.SmooksAction">
+                    <property name="smooksConfig" value="/smooks-res.xml" />
+                    <!-- property name="reportPath" value="/zap/smooks-report.html" / -->
+                </action>
 				<action name="print-after" class="org.jboss.soa.esb.actions.SystemPrintln">
 					<property name="message" value="[transform_XML2XML_simple] Message after transformation" />
 				</action>

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/main/java/org/jboss/soa/esb/smooks/SmooksAction.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/main/java/org/jboss/soa/esb/smooks/SmooksAction.java	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/main/java/org/jboss/soa/esb/smooks/SmooksAction.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -27,14 +27,16 @@
 import org.jboss.soa.esb.listeners.message.MessageDeliverException;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.MessagePayloadProxy;
+import org.jboss.soa.esb.message.Properties;
 import org.milyn.Smooks;
-import org.milyn.event.report.HtmlReportGenerator;
+import org.milyn.profile.Profile;
 import org.milyn.container.ExecutionContext;
 import org.milyn.container.plugin.PayloadProcessor;
 import org.milyn.container.plugin.ResultType;
+import org.milyn.event.report.HtmlReportGenerator;
 
-import java.io.Serializable;
 import java.io.IOException;
+import java.io.Serializable;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
@@ -57,19 +59,22 @@
  * &lt;property name="excludeNonSerializables" value="false" /&gt;
  * &lt;property name="resultType" value="STRING" /&gt;
  * &lt;property name="reportPath" value="/tmp/smooks-report.html" /&gt;
+ * &lt;property name="messageProfile" value="fromServiceA" /&gt;
  * </pre>
  *
  * Description of configuration properties:
  * <ul>
  * <li><i>smooksConfig</i> - the Smooks configuration file. Can be a path on the file system or on the classpath.
- * <li><i>get-payload-location</i> - the body location which contains the object to be transformed.
- * <li><i>set-payload-location</i> - the body location where the transformed object will be placed.
+ * <li><i>get-payload-location</i> - the body location which contains the object to be transformed.  See {@link MessagePayloadProxy}.
+ * <li><i>set-payload-location</i> - the body location where the transformed object will be placed.  See {@link MessagePayloadProxy}.
  * <li><i>excludeNonSerializables</i> - if true, non serializable attributes from the Smooks ExecutionContext will no be included. Default is true.
  * <li><i>resultType</i> - type of result expected from Smooks ("STRING", "BYTES", "JAVA", "NORESULT"). Default is "STRING".  For more
  *                         on specifying and controlling the Smooks filtering result, see <a href="#specify-result">Specifying the Source and Result Types</a>.
  * <li><i>javaResultBeanId</i> - specifies the Smooks bean context beanId to be mapped as the result when the resultType is "JAVA".  If not specified,
  *                               the whole bean context bean Map is mapped as the result.
  * <li><i>reportPath</i> - specifies the path and file name for generating a Smooks Execution Report.  This is a development tool.
+ * <li><i>messageProfile</i> - specifies the default message "profile" name to be used in {@link Smooks#createExecutionContext(String) creation of the Smooks ExecutionContext}.
+ *                             See <a href="#profiling">Message Profiling</a>.
  * </ul>
  *
  * <h3>Exposing the Smooks {@link ExecutionContext} to other ESB Actions</h3>
@@ -92,6 +97,17 @@
  * types, which is of particular interest with respect to the Result type e.g. for streaming
  * the Result to a file etc.
  *
+ * <h3 id="profiling">Message Profiling</h3>
+ * Smooks Profiling allows you to use a single Smooks instance to transform multiple
+ * source messages.  As an example, imagine a situation where messages of different formats
+ * are delivered to a Service.  Before consuming the messages, the Service needs to transform
+ * these message payloads to a common format.  To accomplish this, you can use profiling.
+ * <p/>
+ * The action can have the default profile name configured through the "messageProfile"
+ * property.  Each incoming ESB message can specify it's profile name through the
+ * message property of the same name ("messageProfile").  For more on profiling, see
+ * the <a href="http://milyn.codehaus.org/Smooks+Example+-+profiling">profiling example</a>.
+ *
  * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
  * @author <a href="mailto:daniel.bevenius at gmail.com">daniel.bevenius at gmail.com</a>
  */
@@ -101,12 +117,14 @@
 
     private Smooks smooks;
 
-	private PayloadProcessor payloadProcessor;
+    private String defaultMessageProfile;
 
-	private MessagePayloadProxy payloadProxy;
+    private PayloadProcessor payloadProcessor;
 
-	private boolean excludeNonSerializables;
+    private MessagePayloadProxy payloadProxy;
 
+    private boolean excludeNonSerializables;
+
     private String reportPath;
 
     // public
@@ -127,6 +145,9 @@
             throw new ConfigurationException("Failed to create Smooks instance for config '" + smooksConfig + "'.", e);
         }
 
+        // Get the default profile from the config...
+        defaultMessageProfile = configTree.getAttribute(Properties.MESSAGE_PROFILE, Profile.DEFAULT_PROFILE);
+        
         // Create the Smooks PayloadProcessor...
         String resultTypeConfig = configTree.getAttribute("resultType", "STRING");
         ResultType resultType;
@@ -159,8 +180,9 @@
      */
 	public Message process( final Message message) throws ActionProcessingException
 	{
-		//	Create Smooks ExecutionContext.
-        final ExecutionContext executionContext = createExecutionContext( smooks );
+        //	Create Smooks ExecutionContext.
+        final String messageProfofile = (String) message.getProperties().getProperty(Properties.MESSAGE_PROFILE, defaultMessageProfile);
+        final ExecutionContext executionContext = smooks.createExecutionContext(messageProfofile);
 
         if(reportPath != null) {
             try {
@@ -171,12 +193,24 @@
         }
 
         //	Use the Smooks PayloadProcessor to execute the transformation....
-        final Object newPayload = payloadProcessor.process( extractPayload( message), executionContext );
+        final Object payload;
+        try {
+            payload = payloadProxy.getPayload(message);
+        } catch (MessageDeliverException e) {
+            throw new ActionProcessingException("MessgeDeliveryException while trying to retrieve the message payload:", e);
+        }
+        final Object newPayload = payloadProcessor.process( payload, executionContext );
 
         //	Set the ExecutionContext's attributes on the message instance so other actions can access them.
         message.getBody().add( EXECUTION_CONTEXT_ATTR_MAP_KEY, getSerializableObjectsMap( executionContext.getAttributes() ) );
 
-        return packagePayload( newPayload, message );
+        try {
+            payloadProxy.setPayload( message, newPayload );
+        } catch (MessageDeliverException e) {
+            throw new ActionProcessingException("MessgeDeliveryException while trying to retrieve the message payload:", e);
+        }
+
+        return message;
     }
 
     @Override
@@ -188,49 +222,6 @@
 
     // protected
 
-    /*
-     * 	Hook for subclasses to control how the execution context is created.
-     * 	Might be useful for Actions that use profiles for example.
-     */
-	protected ExecutionContext createExecutionContext( final Smooks smooks )
-	{
-		return smooks.createExecutionContext();
-	}
-
-    /*
-     * 	Hook for subclasses to extract the message payload in
-     * 	any way they see fit.
-     */
-    protected Object extractPayload(final Message message ) throws ActionProcessingException
-    {
-    	try
-		{
-			return payloadProxy.getPayload( message );
-		}
-    	catch (MessageDeliverException e)
-		{
-    		throw new ActionProcessingException("MessgeDeliveryException while trying to retrieve the message payload:", e);
-		}
-    }
-
-    /*
-     * 	Hook for subclasses so they can control what and where the payload
-     * 	is added to the ESB Message object.
-     */
-    protected Message packagePayload( final Object payload, Message message ) throws ActionProcessingException
-    {
-    	try
-		{
-			payloadProxy.setPayload( message, payload );
-            return message;
-		}
-    	catch (MessageDeliverException e)
-		{
-    		throw new ActionProcessingException("MessgeDeliveryException while trying to retrieve the message payload:", e);
-
-		}
-    }
-
     /**
      * Will return a Map containing only the Serializable objects
      * that exist in the passed-in Map if {@link #excludeNonSerializables} is true.

Copied: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/ProfilingUnitTest.java (from rev 20683, labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/ProfilingUnitTest.java)
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/ProfilingUnitTest.java	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/ProfilingUnitTest.java	2008-06-23 08:28:09 UTC (rev 20689)
@@ -0,0 +1,71 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and others contributors as indicated
+ * by the @authors tag. All rights reserved.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * 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,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA  02110-1301, USA.
+ *
+ * (C) 2005-2006, JBoss Inc.
+ */
+package org.jboss.soa.esb.smooks;
+
+import junit.framework.TestCase;
+import org.jboss.internal.soa.esb.util.StreamUtils;
+import org.jboss.soa.esb.client.ServiceInvoker;
+import org.jboss.soa.esb.couriers.FaultMessageException;
+import org.jboss.soa.esb.listeners.message.MessageDeliverException;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.Properties;
+import org.jboss.soa.esb.message.format.MessageFactory;
+import org.jboss.soa.esb.services.registry.RegistryException;
+import org.jboss.soa.esb.testutils.ESBConfigUtil;
+
+/**
+ * @author <a href="mailto:tom.fennelly at jboss.com">tom.fennelly at jboss.com</a>
+ */
+public class ProfilingUnitTest extends TestCase {
+
+    private ESBConfigUtil esbConfig;
+    private byte[] personXmlBytes = StreamUtils.readStream(SourceResultUnitTest.class.getResourceAsStream("message/person.xml"));
+
+    protected void setUp() throws Exception {
+        esbConfig = new ESBConfigUtil(getClass().getResourceAsStream("profiling-esb.xml"));
+        esbConfig.setESBProperties(getClass().getResourceAsStream("jbossesb-properties.xml"));
+        esbConfig.installRegistry();
+        esbConfig.startController();
+    }
+
+    protected void tearDown() throws Exception {
+        esbConfig.stopController();
+        esbConfig.uninstallRegistry();
+        esbConfig.resetESBProperties();
+    }
+
+    public void test() throws RegistryException, FaultMessageException, MessageDeliverException {
+        test("profile1", "<someone called=\"Tom Fennelly\" is=\"21\">");
+        test("profile2", "<person name=\"Tom Fennelly\" age=\"21\">");
+    }
+
+    private void test(String profile, String expected) throws MessageDeliverException, RegistryException, FaultMessageException {
+        ServiceInvoker invoker = new ServiceInvoker("Transform", "String");
+        Message message = MessageFactory.getInstance().getMessage();
+
+        // Create the message and set the profile on it...
+        message.getBody().add(new String(personXmlBytes));
+        message.getProperties().setProperty(Properties.MESSAGE_PROFILE, profile);
+
+        message = invoker.deliverSync(message, 30000);
+
+        assertEquals(expected, message.getBody().get());
+    }
+}

Copied: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-esb.xml (from rev 20683, labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-esb.xml)
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-esb.xml	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-esb.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -0,0 +1,14 @@
+<?xml version = "1.0" encoding = "UTF-8"?>
+<jbossesb xmlns="http://anonsvn.labs.jboss.com/labs/jbossesb/trunk/product/etc/schemas/xml/jbossesb-1.0.1.xsd">
+
+    <services>
+        <service category="Transform" name="String" description="StringTest" invmScope="GLOBAL">
+            <actions mep="RequestResponse">
+                <action name="action" class="org.jboss.soa.esb.smooks.SmooksAction">
+                    <property name="smooksConfig" value="/org/jboss/soa/esb/smooks/profiling-smooks-01.xml" />
+                </action>
+            </actions>			
+        </service>
+    </services>
+
+</jbossesb>
\ No newline at end of file

Copied: labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-smooks-01.xml (from rev 20683, labs/jbossesb/trunk/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-smooks-01.xml)
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-smooks-01.xml	                        (rev 0)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/services/smooks/src/test/java/org/jboss/soa/esb/smooks/profiling-smooks-01.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.0.xsd">
+
+    <profiles>
+        <profile base-profile="profile1" sub-profiles="common" />
+        <profile base-profile="profile2" sub-profiles="common" />
+    </profiles>
+
+    <resource-config selector="person" target-profile="common">
+        <resource>org.milyn.javabean.BeanPopulator</resource>
+        <param name="beanId">person</param>
+        <param name="beanClass">org.jboss.soa.esb.smooks.message.Person1</param>
+        <param name="bindings">
+            <binding property="name" selector="person/name" />
+            <binding property="age" type="Integer" selector="person/age" />
+        </param>
+    </resource-config>
+
+    <resource-config selector="person" target-profile="profile1">
+        <resource type="ftl"><!--<someone called="${person.name}" is="${person.age}">--></resource>
+    </resource-config>
+
+    <resource-config selector="person" target-profile="profile2">
+        <resource type="ftl"><!--<person name="${person.name}" age="${person.age}">--></resource>
+    </resource-config>
+
+</smooks-resource-list>
\ No newline at end of file

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management/src/main/resources/postgresql/monitoring-mappings.hbm.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management/src/main/resources/postgresql/monitoring-mappings.hbm.xml	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management/src/main/resources/postgresql/monitoring-mappings.hbm.xml	2008-06-23 08:28:09 UTC (rev 20689)
@@ -4,14 +4,18 @@
 <hibernate-mapping>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXPattern" table="JMXPATTERN">
 		<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
-			<generator class="native"/>
+			<generator class="sequence">
+				<param name="sequence">mgmt_hibernate_sequence</param>
+			</generator>
 		</id>
 		<property name="classpattern" type="java.lang.String" column="classpattern"/>
 		<property name="keyvalue" type="java.lang.String" column="keyvalue"/>
 	</class>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXData" table="JMXDATA">
 		<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
-			<generator class="native"/>
+                       <generator class="sequence">
+                                <param name="sequence">mgmt_hibernate_sequence</param>
+			</generator>
 		</id>	
 		<many-to-one name="attribute" column="STATID"/>
 		<property name="server" type="java.lang.String" column="SERVER"/>
@@ -22,7 +26,9 @@
 	</class>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperationResult" table="JMXOPERATIONRESULT">
 		<id name="id" column="id" type="java.lang.Long" unsaved-value="0">
-			<generator class="native"/>
+			<generator class="sequence">
+				<param name="sequence">mgmt_hibernate_sequence</param>
+			</generator>
 		</id>	
 		<many-to-one name="operation" column="OPID"/>
 		<property name="servername" type="java.lang.String" column="SERVER"/>
@@ -31,14 +37,18 @@
 	</class>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXAttribute" table="JMXATTRIBUTE">
                 <id name="id" column="statid" type="java.lang.Long" unsaved-value="0">
-			<generator class="native"/>
+			<generator class="sequence">
+				<param name="sequence">mgmt_hibernate_sequence</param>
+			</generator>
 		</id>	
 		<property name="objectname" type="java.lang.String" column="objectname"/>
 		<property name="attribute" type="java.lang.String" column="attribute"/>
 	</class>
 	<class name="org.jboss.soa.esb.monitoring.pojo.JMXOperation" table="JMXOPERATION">
 		<id name="id" column="opid" type="java.lang.Long" unsaved-value="0">
-			<generator class="native"/>
+			<generator class="sequence">
+				<param name="sequence">mgmt_hibernate_sequence</param>
+			</generator>
 		</id>	
 		<property name="objectname" type="java.lang.String" column="objectname"/>
 		<property name="operation" type="java.lang.String" column="operation"/>

Modified: labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management-esb/src/main/resources/postgresql/create_database.sql
===================================================================
--- labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management-esb/src/main/resources/postgresql/create_database.sql	2008-06-23 08:23:28 UTC (rev 20688)
+++ labs/jbossesb/workspace/dbevenius/ruleservice/product/tools/console/management-esb/src/main/resources/postgresql/create_database.sql	2008-06-23 08:28:09 UTC (rev 20689)
@@ -58,7 +58,7 @@
 		foreign key (OPID)
 		references JMXOPERATION(opid);
 
-	CREATE SEQUENCE  hibernate_sequence
+	CREATE SEQUENCE mgmt_hibernate_sequence
 	  INCREMENT 1
 	  MINVALUE 1
 	  MAXVALUE 9223372036854775807




More information about the jboss-svn-commits mailing list