[jboss-svn-commits] JBL Code SVN: r10253 - in labs/jbossesb/trunk: product/core/listeners/src/org/jboss/soa/esb/listeners/config and 18 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 16 00:41:50 EDT 2007


Author: bill.burke at jboss.com
Date: 2007-03-16 00:41:49 -0400 (Fri, 16 Mar 2007)
New Revision: 10253

Added:
   labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/
   labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/
   labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/deployment.xml
   labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/jboss-esb.xml
   labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-jbm-service.xml
   labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-queues-service.xml
   labs/jbossesb/trunk/qa/junit/versioned-scoped-src/org/jboss/soa/esb/server/MyJMSListenerAction.java
Modified:
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectInvoke.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
   labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/MessageFactoryImpl.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/marshal/MarshalUnmarshalManager.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SqlDbTable.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/notification/NotificationTarget.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/parameters/ParamRepositoryFactory.java
   labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStoreFactory.java
   labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/MessageStoreFactoryImpl.java
   labs/jbossesb/trunk/product/tools/configeditor/editor/dist/configapp.war
   labs/jbossesb/trunk/qa/junit/build.xml
   labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/unit/SimpleDeployUnitTestCase.java
   labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/util/DbUtils.java
Log:
* remove usage of Class.forName() and replace with Thread.currentThread().getContextClassLoader().loadClass()
* Added support for .esb archive classloader scoping

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectInvoke.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectInvoke.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/ObjectInvoke.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -104,7 +104,7 @@
         }
         
         try {
-			processorClass = Class.forName(classProcessor);
+			processorClass = Thread.currentThread().getContextClassLoader().loadClass(classProcessor);
 			
 			this.setUpMethod(processorClass);
 			

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/actions/converters/XStreamToObject.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -74,7 +74,7 @@
     	super(actionName,properties);
     	String incomingTypeStr = KeyValuePair.getValue("incoming-type", properties);
     	try {
-			incomingType = Class.forName(incomingTypeStr);
+			incomingType = Thread.currentThread().getContextClassLoader().loadClass(incomingTypeStr);
 		} catch (ClassNotFoundException e) {
 			logger.error("Could not find : " + incomingTypeStr,e);
 		}

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployer.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -38,6 +38,8 @@
 import java.io.File;
 import java.io.InputStream;
 import java.net.URL;
+import java.util.Iterator;
+import java.util.ArrayList;
 
 /**
  * comment
@@ -155,12 +157,12 @@
          }
 
          XmlFileLoader xfl = new XmlFileLoader();
-         InputStream in = di.localCl.getResourceAsStream("META-INF/classloader.xml");
+         InputStream in = di.localCl.getResourceAsStream("META-INF/deployment.xml");
          if (in != null)
          {
             try
             {
-               Element jboss = xfl.getDocument(in, "META-INF/classloader.xml").getDocumentElement();
+               Element jboss = xfl.getDocument(in, "META-INF/esb-deployment.xml").getDocumentElement();
                // Check for a ejb level class loading config
                Element loader = MetaData.getOptionalChild(jboss, "loader-repository");
                if (loader != null)
@@ -168,7 +170,12 @@
                   LoaderRepositoryFactory.LoaderRepositoryConfig config =
                           LoaderRepositoryFactory.parseRepositoryConfig(loader);
                   di.setRepositoryInfo(config);
+                  log.info("**************** using scoped loader:" + config.repositoryName);
                }
+               else
+               {
+                  log.info("************* no scoped loader");
+               }
 
             }
             finally
@@ -176,6 +183,10 @@
                in.close();
             }
          }
+         else
+         {
+            log.info("************* no scoped loader");
+         }
       }
       catch (Exception e)
       {
@@ -192,7 +203,7 @@
 
    public synchronized void create(DeploymentInfo di) throws DeploymentException
    {
-      log.debug("create, " + di.shortName);
+      log.info("create esb service, " + di.shortName);
       URL document = getDocumentUrl(di);
       if (document == null)
       {
@@ -201,8 +212,37 @@
       }
       try
       {
+         ArrayList<ObjectName> deps = new ArrayList<ObjectName>();
+         InputStream in = di.localCl.getResourceAsStream("META-INF/deployment.xml");
+         if (in != null)
+         {
+            try
+            {
+               XmlFileLoader xfl = new XmlFileLoader();
+               Element jboss = xfl.getDocument(in, "META-INF/deployment.xml").getDocumentElement();
+               // Check for a ejb level class loading config
+               Iterator depends = MetaData.getChildrenByTagName(jboss, "depends");
+               if (depends != null)
+               {
+                  while (depends.hasNext())
+                  {
+                     Element depend = (Element)depends.next();
+                     ObjectName depOn = new ObjectName(MetaData.getElementContent(depend));
+                     deps.add(depOn);
+                     log.info("Found dependency: " + depOn);
+                  }
+               }
+
+            }
+            finally
+            {
+               in.close();
+            }
+         }
+
          String jbossEsbXml = Configuration.getStringFromStream(document.openStream());
          JBoss4ESBDeployment deployment = new JBoss4ESBDeployment(jbossEsbXml);
+         deployment.setClassloader(di.ucl);
          String name = "jboss.esb:deployment=" + di.shortName;
          ObjectName on = ObjectNameConverter.convert(name);
          // Check that the name is not registered
@@ -217,7 +257,7 @@
          di.deployedObject = on;
          log.debug("Deploying: " + di.url);
          // Invoke the create life cycle method
-         serviceController.create(di.deployedObject);
+         serviceController.create(di.deployedObject, deps);
       }
       catch (Exception e)
       {

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/config/JBoss4ESBDeployment.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -34,6 +34,7 @@
 {
    private String jbossEsbXml;
    private ManagedLifecycleController controller;
+   private ClassLoader classloader;
 
 
    public JBoss4ESBDeployment(String jbossEsbXml)
@@ -51,6 +52,12 @@
       return jbossEsbXml.replace("<", "&lt;").replace(">", "&gt;");
    }
 
+
+   public void setClassloader(ClassLoader classloader)
+   {
+      this.classloader = classloader;
+   }
+
    public ManagedLifecycleController getController()
    {
       return controller;
@@ -60,6 +67,7 @@
    public void createService()
    {
       controller = Configuration.create(jbossEsbXml);
+      controller.setClassloader(classloader);
    }
 
    @Override

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/AbstractFileGateway.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -444,7 +444,7 @@
             _composerName = _config.getAttribute(ListenerTagNames.GATEWAY_COMPOSER_CLASS_TAG);
 			if (null != _composerName)
 			{ // class attribute
-				_composerClass = Class.forName(_composerName);
+				_composerClass = Thread.currentThread().getContextClassLoader().loadClass(_composerName);
 				Constructor oConst = _composerClass.getConstructor(new Class[]
 				{ ConfigTree.class });
 				_composer = oConst.newInstance(_config);

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/JmsGatewayListener.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -305,7 +305,7 @@
          _composerName = _config.getAttribute(ListenerTagNames.GATEWAY_COMPOSER_CLASS_TAG);
          if (null != _composerName)
          { // class attribute
-            _composerClass = Class.forName(_composerName);
+            _composerClass = Thread.currentThread().getContextClassLoader().loadClass(_composerName);
             Constructor oConst = _composerClass.getConstructor(new Class[]
                     {ConfigTree.class});
             _composer = oConst.newInstance(_config);

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/gateway/SqlTableGatewayListener.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -402,7 +402,7 @@
             _composerName = _config.getAttribute(ListenerTagNames.GATEWAY_COMPOSER_CLASS_TAG);
             if (null != _composerName)
             { // class attribute
-                _composerClass = Class.forName(_composerName);
+                _composerClass = Thread.currentThread().getContextClassLoader().loadClass(_composerName);
                 Constructor oConst = _composerClass.getConstructor(new Class[]
                 { ConfigTree.class });
                 _composer = oConst.newInstance(_config);

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/AbstractThreadedManagedLifecycle.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -66,7 +66,9 @@
     */
    private Set<ManagedLifecycleThreadEventListener> listeners = new CopyOnWriteArraySet<ManagedLifecycleThreadEventListener>();
 
+   private transient ClassLoader classloader;
 
+
    /**
     * Construct the threaded managed lifecycle.
     *
@@ -79,6 +81,17 @@
       super(config);
    }
 
+
+   public ClassLoader getClassloader()
+   {
+      return classloader;
+   }
+
+   public void setClassloader(ClassLoader classloader)
+   {
+      this.classloader = classloader;
+   }
+
    /**
     * Handle the start of the managed instance.
     *
@@ -109,9 +122,14 @@
     */
    public final void run()
    {
+      ClassLoader old = Thread.currentThread().getContextClassLoader();
       waitUntilNotState(ManagedLifecycleState.STARTING, getTerminationPeriod());
       try
       {
+         if (classloader != null)
+         {
+            Thread.currentThread().setContextClassLoader(classloader);
+         }
          changeState(ManagedLifecycleState.RUNNING);
          doRun();
       }
@@ -126,6 +144,7 @@
       finally
       {
          setRunning(ManagedLifecycleThreadState.STOPPED);
+         Thread.currentThread().setContextClassLoader(old);
       }
    }
 

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/lifecycle/ManagedLifecycleController.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -35,6 +35,8 @@
     */
    private final ManagedLifecycle[] instances;
 
+   private ClassLoader classloader;
+
    /**
     * Construct the controller to manage the specified managed lifecycle instances.
     *
@@ -46,6 +48,17 @@
       instances = lifecycles.toArray(new ManagedLifecycle[numInstances]);
    }
 
+
+   public ClassLoader getClassloader()
+   {
+      return classloader;
+   }
+
+   public void setClassloader(ClassLoader classloader)
+   {
+      this.classloader = classloader;
+   }
+
    /**
     * Start the lifecyles for the managed instances.
     * <p/>
@@ -102,6 +115,10 @@
          final ManagedLifecycle instance = instances[count];
          try
          {
+            if (instance instanceof AbstractThreadedManagedLifecycle)
+            {
+               ((AbstractThreadedManagedLifecycle)instance).setClassloader(classloader);
+            }
             instance.initialise();
          }
          catch (final ManagedLifecycleException mle)

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/ActionProcessingPipeline.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -45,6 +45,7 @@
 public class ActionProcessingPipeline extends Observable implements Runnable
 {
    private boolean processingComplete = false;
+   private ClassLoader classloader;
 
    /**
     * public constructor
@@ -66,7 +67,23 @@
          throw new ConfigurationException("No actions in list");
    }
 
+
+   public ClassLoader getClassloader()
+   {
+      return classloader;
+   }
+
    /**
+    * context classloader the thread should run in
+    *
+    * @param classloader
+    */
+   public void setClassloader(ClassLoader classloader)
+   {
+      this.classloader = classloader;
+   }
+
+   /**
     * @return Message - current Message of this action chain processor
     */
    public Message getMessage()
@@ -88,8 +105,13 @@
     */
    public void run()
    {
+      ClassLoader old = Thread.currentThread().getContextClassLoader();
       try
       {
+         if (classloader != null)
+         {
+            Thread.currentThread().setContextClassLoader(classloader);
+         }
          // Run the message through each ActionProcessor...
          _currentIndex = -1;
          for (ConfigTree oCurr : _actionList)
@@ -97,7 +119,7 @@
             _currentIndex++;
             String attrName = ListenerTagNames.ACTION_CLASS_TAG;
             _currentAction = oCurr.getAttribute(attrName);
-            _currentClass = Class.forName(_currentAction);
+            _currentClass = Thread.currentThread().getContextClassLoader().loadClass(_currentAction);
             Constructor oConst = _currentClass.getConstructor(new Class[]{ConfigTree.class});
             _currentProcessor = oConst.newInstance(oCurr);
 
@@ -166,6 +188,7 @@
       }
       finally
       {
+         Thread.currentThread().setContextClassLoader(old);
          processingComplete = true;
          setChanged();
          notifyObservers(new Integer(-1));

Modified: labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
===================================================================
--- labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -262,6 +262,7 @@
          try
          {
             chain = new ActionProcessingPipeline(message, _config);
+            chain.setClassloader(getClassloader());
             chain.addObserver(this);
             updateThreadCount(+1);
             _execService.execute(chain);

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/MessageFactoryImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/MessageFactoryImpl.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/MessageFactoryImpl.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -74,7 +74,7 @@
 					try
 					{
 						String pluginName = properties.getProperty(attrName);
-						Class c = Class.forName(pluginName);
+						Class c = Thread.currentThread().getContextClassLoader().loadClass(pluginName);
 						MessagePlugin thePlugin = (MessagePlugin) c.newInstance();
 
 						messageFormats.put(thePlugin.getType(), thePlugin);

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/marshal/MarshalUnmarshalManager.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/marshal/MarshalUnmarshalManager.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/internal/soa/esb/message/format/xml/marshal/MarshalUnmarshalManager.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -71,7 +71,7 @@
 					try
 					{
 						String pluginName = properties.getProperty(attrName);
-						Class c = Class.forName(pluginName);
+						Class c = Thread.currentThread().getContextClassLoader().loadClass(pluginName);
 						MarshalUnmarshalPlugin thePlugin = (MarshalUnmarshalPlugin) c.newInstance();
 
 						_plugins.put(thePlugin.type(), thePlugin);

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SimpleDataSource.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -113,7 +113,7 @@
 	{
 		try
 		{
-			Class.forName(p_sDriver);
+			Thread.currentThread().getContextClassLoader().loadClass(p_sDriver);
 			m_sUrl = p_sDbURL;
 			getConnection(p_sUsr, p_sPwd);
 		}

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SqlDbTable.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SqlDbTable.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/helpers/persist/SqlDbTable.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -186,7 +186,7 @@
 			{
 				int iCol = 1 + i1;
 				String sFN = MD.getColumnName(iCol);
-				Class oCL = Class.forName(MD.getColumnClassName(iCol));
+				Class oCL = Thread.currentThread().getContextClassLoader().loadClass(MD.getColumnClassName(iCol));
 				int iTP = MD.getColumnType(iCol);
 				int iSZ = MD.getColumnDisplaySize(iCol);
 				m_oaFields[i1] = new SqlField(sFN, oCL, iTP, iSZ, false);

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/notification/NotificationTarget.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/notification/NotificationTarget.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/notification/NotificationTarget.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -108,13 +108,13 @@
 		Class oCls = null;
 		try
 		{
-			oCls = Class.forName(NOTIF_PFX + "." + sClass);
+			oCls = Thread.currentThread().getContextClassLoader().loadClass(NOTIF_PFX + "." + sClass);
 		}
 		catch (Exception e)
 		{
 			try
 			{
-				oCls = Class.forName(sClass);
+				oCls = Thread.currentThread().getContextClassLoader().loadClass(sClass);
 			}
 			catch (Exception e1)
 			{/* oCls will be null */

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/parameters/ParamRepositoryFactory.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/parameters/ParamRepositoryFactory.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/parameters/ParamRepositoryFactory.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -88,7 +88,7 @@
 				{
 					try
 					{
-						Class<?> runtimeClass = Class.forName(runtimeClassName);
+						Class<?> runtimeClass = Thread.currentThread().getContextClassLoader().loadClass(runtimeClassName);
 						instance = (ParamRepository) runtimeClass.newInstance();
 					} catch (Exception e)
 					{

Modified: labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStoreFactory.java
===================================================================
--- labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStoreFactory.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStoreFactory.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -39,7 +39,7 @@
 		
 		try {			
 //			Class cls = Class.forName("org.jboss.internal.soa.esb.persistence.format.MessageStoreFactoryImpl");
-			Class cls = Class.forName(Configuration.getStoreConnectionFactory());
+			Class cls = Thread.currentThread().getContextClassLoader().loadClass(Configuration.getStoreConnectionFactory());
 			Constructor<MessageStoreFactory> c = cls.getConstructor(new Class[]{});
 			theFactory = c.newInstance(new Object[]{});
 		} catch (Exception e) {			

Modified: labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/MessageStoreFactoryImpl.java
===================================================================
--- labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/MessageStoreFactoryImpl.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/product/core/services/src/org/jboss/internal/soa/esb/persistence/format/MessageStoreFactoryImpl.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -83,7 +83,7 @@
 					try
 					{
 						String pluginName = properties.getProperty(attrName);
-						Class c = Class.forName(pluginName);
+						Class c = Thread.currentThread().getContextClassLoader().loadClass(pluginName);
 						MessageStorePlugin thePlugin = (MessageStorePlugin) c.newInstance();
 
 						messageStoreFormats.put(thePlugin.getType(), thePlugin);

Modified: labs/jbossesb/trunk/product/tools/configeditor/editor/dist/configapp.war
===================================================================
(Binary files differ)

Modified: labs/jbossesb/trunk/qa/junit/build.xml
===================================================================
--- labs/jbossesb/trunk/qa/junit/build.xml	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/qa/junit/build.xml	2007-03-16 04:41:49 UTC (rev 10253)
@@ -1,9 +1,9 @@
 <?xml version="1.0"?>
 <project name="JUnit" default="test" basedir=".">
 
-	<property name="product.build" location="../../product/build"/>
-	<property name="product.lib" location="${product.build}/jbossesb/lib"/>
-	<property name="coverage" location="${product.build}/tests/coverage"/>
+   <property name="product.build" location="../../product/build"/>
+   <property name="product.lib" location="${product.build}/jbossesb/lib"/>
+   <property name="coverage" location="${product.build}/tests/coverage"/>
    <property name="qa.build" location="../build"/>
    <property name="qa.build.lib" location="../build/lib"/>
    <property name="qa.build.reports" location="../build/reports"/>
@@ -11,73 +11,98 @@
    <property name="qa.lib" location="../lib"/>
    <property name="qa.build.stylesheets" location="${qa.build}/stylesheets"/>
    <property name="qa.source.stylesheets" location="../stylesheets"/>
-	<property name="qa.junit.src" location="src"/>
+   <property name="qa.junit.src" location="src"/>
+   <property name="qa.junit.versioned.src" location="versioned-scoped-src"/>
    <property name="qa.junit.classes" location="${qa.build}/junit/classes"/>
+   <property name="qa.junit.versioned.classes" location="${qa.build}/junit/versioned-classes"/>
    <property name="qa.junit.resources" location="resources"/>
-	<property name="qa.junit.report" location="${qa.build}/junit/report" />
-        <property name="qa.junit.memory" value="128m"/>
+   <property name="qa.junit.report" location="${qa.build}/junit/report"/>
+   <property name="qa.junit.memory" value="128m"/>
 
-        <property file="${org.jboss.esb.properties}"/>
-        <property name="org.jboss.esb.test.ftp.hostname" value="ftp.ncl.ac.uk"/>
-        <property name="org.jboss.esb.test.ftp.user" value="anonymous"/>
-        <property name="org.jboss.esb.test.ftp.pwd" value=""/>
-        <property name="org.jboss.esb.test.ftp.dir" value="/pub/DNS"/>
+   <property file="${org.jboss.esb.properties}"/>
+   <property name="org.jboss.esb.test.ftp.hostname" value="ftp.ncl.ac.uk"/>
+   <property name="org.jboss.esb.test.ftp.user" value="anonymous"/>
+   <property name="org.jboss.esb.test.ftp.pwd" value=""/>
+   <property name="org.jboss.esb.test.ftp.dir" value="/pub/DNS"/>
 
-	<path id="base.cp">
-		<fileset dir="${product.lib}/ext"
-		  excludes="*.jar" includes="jaxr-api*.jar,scout*.jar,juddi*.jar"/>
-		<fileset dir="${qa.lib}/ext" includes="*.jar" />
-		<fileset dir="${product.lib}/ext" includes="*.jar" />
-		<pathelement location="../" />
-	</path>
-	
-	<path id="qa.junit.cp">
-	   <path refid="base.cp"/>
-	   <fileset dir="${product.lib}" includes="*.jar" />
-	</path>
-	
-	<path id="qa.junit.emma.cp">
-		<fileset dir="${coverage}/all" includes="jbossesb-instr-all.jar" />
-		<path refid="base.cp"/>
-	</path>
-	
-	<target name="test" depends="compile, prompt, execute"/>
-	<target name="ci-test" depends="compile, execute"/>
+   <path id="base.cp">
+      <fileset dir="${product.lib}/ext"
+               excludes="*.jar" includes="jaxr-api*.jar,scout*.jar,juddi*.jar"/>
+      <fileset dir="${qa.lib}/ext" includes="*.jar"/>
+      <fileset dir="${product.lib}/ext" includes="*.jar"/>
+      <pathelement location="../"/>
+   </path>
 
-	<target name="compile">
-		<echo message="Running JUnit based QA tests..."/>
-		
-		<!-- Build the tests... -->
-		<mkdir dir="${qa.junit.classes}"/>
-		<javac srcdir="${qa.junit.src}" destdir="${qa.junit.classes}" classpathref="qa.junit.cp" debug="on" />
-	</target>
+   <path id="qa.junit.cp">
+      <path refid="base.cp"/>
+      <fileset dir="${product.lib}" includes="*.jar"/>
+   </path>
 
-   <target name="jars" depends="compile">
+   <path id="qa.junit.emma.cp">
+      <fileset dir="${coverage}/all" includes="jbossesb-instr-all.jar"/>
+      <path refid="base.cp"/>
+   </path>
+
+   <target name="test" depends="compile, prompt, execute"/>
+   <target name="ci-test" depends="compile, execute"/>
+
+   <target name="compile">
+      <echo message="Running JUnit based QA tests..."/>
+
+      <!-- Build the tests... -->
+      <mkdir dir="${qa.junit.classes}"/>
+      <javac srcdir="${qa.junit.src}" destdir="${qa.junit.classes}" classpathref="qa.junit.cp" debug="on"/>
+   </target>
+
+   <target name="compile-versioned">
+      <echo message="Running JUnit based QA tests..."/>
+
+      <path id="qa.junit.versioned.cp">
+         <path refid="base.cp"/>
+         <fileset dir="${product.lib}" includes="*.jar"/>
+         <pathelement location="${qa.junit.classes}"/>
+      </path>
+
+      <!-- Build the tests... -->
+      <mkdir dir="${qa.junit.versioned.classes}"/>
+      <javac srcdir="${qa.junit.versioned.src}" destdir="${qa.junit.versioned.classes}" classpathref="qa.junit.versioned.cp" debug="on"/>
+   </target>
+
+   <target name="jars" depends="compile, compile-versioned">
       <mkdir dir="${qa.build.lib}"/>
 
-         <jar jarfile="${qa.build.lib}/simple.esb">
-            <fileset dir="${qa.junit.classes}">
-               <include name="org/jboss/soa/esb/server/*.class"/>
-            </fileset>
-            <fileset dir="${qa.junit.resources}/server/simple">
-               <include name="test-service.xml"/>
-               <include name="esb-jbm-service.xml"/>
-               <include name="META-INF/*.xml"/>
-            </fileset>
-         </jar>
+      <jar jarfile="${qa.build.lib}/simple.esb">
+         <fileset dir="${qa.junit.classes}">
+            <include name="org/jboss/soa/esb/server/*.class"/>
+         </fileset>
+         <fileset dir="${qa.junit.resources}/server/simple">
+            <include name="test-service.xml"/>
+            <include name="esb-jbm-service.xml"/>
+            <include name="META-INF/*.xml"/>
+         </fileset>
+      </jar>
+      <jar jarfile="${qa.build.lib}/simple-scoped.esb">
+         <fileset dir="${qa.junit.versioned.classes}">
+            <include name="org/jboss/soa/esb/server/*.class"/>
+         </fileset>
+         <fileset dir="${qa.junit.resources}/server/simple-scoped">
+            <include name="esb-jbm-service.xml"/>
+            <include name="META-INF/*.xml"/>
+         </fileset>
+      </jar>
    </target>
 
    <target name="one-test" if="test"
-      description="Execute all tests in the given test directory.">
+           description="Execute all tests in the given test directory.">
       <mkdir dir="${qa.build.reports}"/>
       <mkdir dir="${qa.build.testlog}"/>
       <!-- Remove the test.log so each run has a fresh log -->
       <delete file="${qa.build.testlog}/test.log"/>
       <junit dir="."
-         printsummary="yes"
-         haltonerror="false"
-         haltonfailure="false"
-         fork="true">
+             printsummary="yes"
+             haltonerror="false"
+             haltonfailure="false"
+             fork="true">
 
          <sysproperty key="jbosstest.deploy.dir" value="${qa.build.lib}"/>
          <sysproperty key="build.testlog" value="${qa.build.testlog}"/>
@@ -97,9 +122,9 @@
          <formatter type="xml" usefile="true"/>
 
          <batchtest todir="${qa.build.reports}"
-            haltonerror="false"
-            haltonfailure="false"
-            fork="true">
+                    haltonerror="false"
+                    haltonfailure="false"
+                    fork="true">
 
             <fileset dir="${qa.junit.classes}">
                <include name="org/jboss/soa/esb/${test}/unit/*TestCase.class"/>
@@ -116,8 +141,8 @@
          </fileset>
       </copy>
    </target>
-  
 
+
    <target name="tests-report-html" depends="compile-stylesheets">
       <mkdir dir="${qa.build.reports}/html"/>
 
@@ -126,135 +151,140 @@
             <include name="TEST-*.xml"/>
          </fileset>
          <report format="frames"
-            todir="${qa.build.reports}/html"
-            styledir="${qa.build.stylesheets}"
-            />
+                 todir="${qa.build.reports}/html"
+                 styledir="${qa.build.stylesheets}"
+                 />
       </junitreport>
    </target>
 
 
    <target name="execute">
-		<!-- Run the tests... -->
-		<property name="tests.filter" value="*"/>
-		<mkdir dir="${qa.junit.report}"/>
-       <property name="org.jboss.soa.esb.paramsRepository.file.root" location="src" />
-        <junit printsummary="yes" haltonerror="yes" haltonfailure="yes" showoutput="yes" fork="true">
-            <formatter type="plain" usefile="false"/>
-            <formatter type="xml"/>
-            <batchtest todir="${qa.junit.report}">
-                <fileset dir="${qa.junit.src}">
-                    <include name="**/${tests.filter}Test.java"/>
-                    <exclude name="${tests.exclude}"/>
-                </fileset>
-            </batchtest>
-            <classpath>
-                <pathelement location="${qa.junit.classes}"/>
-                <path refid="qa.junit.cp"/>
-                <pathelement location="${qa.junit.src}"/>
-            </classpath>
-            <jvmarg value="-Xmx${qa.junit.memory}"/>
+      <!-- Run the tests... -->
+      <property name="tests.filter" value="*"/>
+      <mkdir dir="${qa.junit.report}"/>
+      <property name="org.jboss.soa.esb.paramsRepository.file.root" location="src"/>
+      <junit printsummary="yes" haltonerror="yes" haltonfailure="yes" showoutput="yes" fork="true">
+         <formatter type="plain" usefile="false"/>
+         <formatter type="xml"/>
+         <batchtest todir="${qa.junit.report}">
+            <fileset dir="${qa.junit.src}">
+               <include name="**/${tests.filter}Test.java"/>
+               <exclude name="${tests.exclude}"/>
+            </fileset>
+         </batchtest>
+         <classpath>
+            <pathelement location="${qa.junit.classes}"/>
+            <path refid="qa.junit.cp"/>
+            <pathelement location="${qa.junit.src}"/>
+         </classpath>
+         <jvmarg value="-Xmx${qa.junit.memory}"/>
 
-        	<!-- Listener Sys Props... -->
-        	<sysproperty key="org.jboss.soa.esb.paramsRepository.file.root" value="${org.jboss.soa.esb.paramsRepository.file.root}"/>
+         <!-- Listener Sys Props... -->
+         <sysproperty key="org.jboss.soa.esb.paramsRepository.file.root"
+                      value="${org.jboss.soa.esb.paramsRepository.file.root}"/>
 
-        	<!-- Sys Props from the test.properties file... -->
-        	<sysproperty key="org.jboss.soa.esb.jndi.server.type" value="${org.jboss.soa.esb.jndi.server.type}" />
-        	<sysproperty key="org.jboss.soa.esb.jndi.server.url" value="${org.jboss.soa.esb.jndi.server.url}" />
-        	
-        	<!-- Sys Props from the deployment.properties file... -->
-	    	<sysproperty key="org.jboss.esb.db.driver" 		value="${org.jboss.esb.db.driver}" />
-        	<sysproperty key="org.jboss.esb.db.url" 		value="${org.jboss.esb.db.url}" />
-        	<sysproperty key="org.jboss.esb.db.user" 		value="${org.jboss.esb.db.user}" />
-	    	<sysproperty key="org.jboss.esb.db.password" 	value="${org.jboss.esb.db.password}" />
-                <sysproperty key="org.jboss.esb.test.ftp.hostname" value="${org.jboss.esb.test.ftp.hostname}"/>
-                <sysproperty key="org.jboss.esb.test.ftp.user" value="${org.jboss.esb.test.ftp.user}"/>
-                <sysproperty key="org.jboss.esb.test.ftp.pwd" value="${org.jboss.esb.test.ftp.pwd}"/>
-                <sysproperty key="org.jboss.esb.test.ftp.dir" value="${org.jboss.esb.test.ftp.dir}"/>
+         <!-- Sys Props from the test.properties file... -->
+         <sysproperty key="org.jboss.soa.esb.jndi.server.type" value="${org.jboss.soa.esb.jndi.server.type}"/>
+         <sysproperty key="org.jboss.soa.esb.jndi.server.url" value="${org.jboss.soa.esb.jndi.server.url}"/>
 
-        </junit>
-		
-		<!-- Remove all "fixed-up" listener configuration files -->
-		<delete><fileset dir="${qa.junit.src}" includes="**/*.conftmp" /></delete>
-		
-		<!-- Report on the tests (format results) ... -->
-        <junitreport todir="${qa.junit.report}">
-            <fileset dir="${qa.junit.report}">
-                <include name="*.xml"/>
+         <!-- Sys Props from the deployment.properties file... -->
+         <sysproperty key="org.jboss.esb.db.driver" value="${org.jboss.esb.db.driver}"/>
+         <sysproperty key="org.jboss.esb.db.url" value="${org.jboss.esb.db.url}"/>
+         <sysproperty key="org.jboss.esb.db.user" value="${org.jboss.esb.db.user}"/>
+         <sysproperty key="org.jboss.esb.db.password" value="${org.jboss.esb.db.password}"/>
+         <sysproperty key="org.jboss.esb.test.ftp.hostname" value="${org.jboss.esb.test.ftp.hostname}"/>
+         <sysproperty key="org.jboss.esb.test.ftp.user" value="${org.jboss.esb.test.ftp.user}"/>
+         <sysproperty key="org.jboss.esb.test.ftp.pwd" value="${org.jboss.esb.test.ftp.pwd}"/>
+         <sysproperty key="org.jboss.esb.test.ftp.dir" value="${org.jboss.esb.test.ftp.dir}"/>
+
+      </junit>
+
+      <!-- Remove all "fixed-up" listener configuration files -->
+      <delete>
+         <fileset dir="${qa.junit.src}" includes="**/*.conftmp"/>
+      </delete>
+
+      <!-- Report on the tests (format results) ... -->
+      <junitreport todir="${qa.junit.report}">
+         <fileset dir="${qa.junit.report}">
+            <include name="*.xml"/>
+         </fileset>
+         <report format="frames" todir="${qa.junit.report}"/>
+         <report format="noframes" todir="${qa.junit.report}"/>
+      </junitreport>
+
+   </target>
+
+   <target name="test-emma" depends="compile-emma, prompt, execute-emma"/>
+   <target name="ci-test-emma" depends="compile-emma, execute-emma"/>
+
+   <target name="compile-emma">
+      <echo message="Running JUnit based QA tests (with ema enabled) ..."/>
+      <!-- Build the tests... -->
+      <mkdir dir="${qa.junit.classes}"/>
+      <javac srcdir="${qa.junit.src}" destdir="${qa.junit.classes}" classpathref="qa.junit.emma.cp" debug="on"/>
+   </target>
+
+   <target name="prompt">
+      <property name="tests.exclude" value="**/*IntegrationTest.java"/>
+      <echo message=""/>
+      <echo message=""/>
+      <input message='Which tests? (Press return to run all tests - Wildcards Supported - already assumes test cases end with the "Test" suffix)'
+             addproperty="tests.filter"
+             defaultvalue="*"/>
+   </target>
+
+   <target name="execute-emma">
+      <!-- Run the tests... -->
+      <property name="tests.filter" value="*"/>
+      <mkdir dir="${qa.junit.report}"/>
+      <junit printsummary="yes" haltonerror="yes" haltonfailure="yes" showoutput="yes" fork="true">
+         <formatter type="plain" usefile="false"/>
+         <formatter type="xml"/>
+         <batchtest todir="${qa.junit.report}">
+            <fileset dir="${qa.junit.src}">
+               <include name="**/${tests.filter}Test.java"/>
             </fileset>
-            <report format="frames" todir="${qa.junit.report}"/>
-            <report format="noframes" todir="${qa.junit.report}"/>
-        </junitreport>
-		
-	</target>
+         </batchtest>
+         <classpath>
+            <pathelement location="${qa.junit.classes}"/>
+            <path refid="qa.junit.emma.cp"/>
+            <pathelement location="${qa.junit.src}"/>
+         </classpath>
 
-	<target name="test-emma" depends="compile-emma, prompt, execute-emma"/>
-	<target name="ci-test-emma" depends="compile-emma, execute-emma"/>
+         <jvmarg value="-Xmx${qa.junit.memory}"/>
+         <!-- emma jvm args -->
+         <jvmarg value="-Demma.coverage.out.file=${coverage}/all/coverage.emma"/>
+         <jvmarg value="-Demma.coverage.out.merge=true"/>
 
-	<target name="compile-emma">
-		<echo message="Running JUnit based QA tests (with ema enabled) ..."/>
-		<!-- Build the tests... -->
-		<mkdir dir="${qa.junit.classes}"/>
-		<javac srcdir="${qa.junit.src}" destdir="${qa.junit.classes}" classpathref="qa.junit.emma.cp" debug="on" />
-	</target>
+         <!-- Listener Sys Props... -->
+         <sysproperty key="org.jboss.soa.esb.paramsRepository.file.root" value="junit/src"/>
 
-	<target name="prompt">
-            <property name="tests.exclude" value="**/*IntegrationTest.java"/>
-		<echo message="" />
-		<echo message="" />
-		<input message='Which tests? (Press return to run all tests - Wildcards Supported - already assumes test cases end with the "Test" suffix)' 
-			addproperty="tests.filter"
-			defaultvalue="*"/>
-	</target>
-		
-	<target name="execute-emma">
-		<!-- Run the tests... -->
-		<property name="tests.filter" value="*"/>
-		<mkdir dir="${qa.junit.report}"/>
-        <junit printsummary="yes" haltonerror="yes" haltonfailure="yes" showoutput="yes" fork="true">
-            <formatter type="plain" usefile="false"/>
-            <formatter type="xml"/>
-            <batchtest todir="${qa.junit.report}">
-                <fileset dir="${qa.junit.src}">
-                    <include name="**/${tests.filter}Test.java"/>
-                </fileset>
-            </batchtest>
-            <classpath>
-                <pathelement location="${qa.junit.classes}"/>
-                <path refid="qa.junit.emma.cp"/>
-                <pathelement location="${qa.junit.src}"/>
-            </classpath>
+         <!-- Sys Props from the test.properties file... -->
+         <sysproperty key="org.jboss.soa.esb.jndi.server.type" value="${org.jboss.soa.esb.jndi.server.type}"/>
+         <sysproperty key="org.jboss.soa.esb.jndi.server.url" value="${org.jboss.soa.esb.jndi.server.url}"/>
 
-            <jvmarg value="-Xmx${qa.junit.memory}"/>
-        	<!-- emma jvm args -->
-			<jvmarg value="-Demma.coverage.out.file=${coverage}/all/coverage.emma" />
-			<jvmarg value="-Demma.coverage.out.merge=true" />
+         <!-- Sys Props from the deployment.properties file... -->
+         <sysproperty key="org.jboss.esb.db.driver" value="${org.jboss.esb.db.driver}"/>
+         <sysproperty key="org.jboss.esb.db.url" value="${org.jboss.esb.db.url}"/>
+         <sysproperty key="org.jboss.esb.db.user" value="${org.jboss.esb.db.user}"/>
+         <sysproperty key="org.jboss.esb.db.password" value="${org.jboss.esb.db.password}"/>
+      </junit>
 
-        	<!-- Listener Sys Props... -->
-        	<sysproperty key="org.jboss.soa.esb.paramsRepository.file.root" value="junit/src" />
+      <!-- Remove all "fixed-up" listener configuration files -->
+      <delete>
+         <fileset dir="${qa.junit.src}" includes="**/*.conftmp"/>
+      </delete>
 
-        	<!-- Sys Props from the test.properties file... -->
-        	<sysproperty key="org.jboss.soa.esb.jndi.server.type" value="${org.jboss.soa.esb.jndi.server.type}" />
-        	<sysproperty key="org.jboss.soa.esb.jndi.server.url" value="${org.jboss.soa.esb.jndi.server.url}" />
-        	
-        	<!-- Sys Props from the deployment.properties file... -->
-	    	<sysproperty key="org.jboss.esb.db.driver" 		value="${org.jboss.esb.db.driver}" />
-        	<sysproperty key="org.jboss.esb.db.url" 		value="${org.jboss.esb.db.url}" />
-        	<sysproperty key="org.jboss.esb.db.user" 		value="${org.jboss.esb.db.user}" />
-	    	<sysproperty key="org.jboss.esb.db.password" 	value="${org.jboss.esb.db.password}" />
-        </junit>
-		
-		<!-- Remove all "fixed-up" listener configuration files -->
-		<delete><fileset dir="${qa.junit.src}" includes="**/*.conftmp" /></delete>
-		
-		<!-- Report on the tests (format results) ... -->
-        <junitreport todir="${qa.junit.report}">
-            <fileset dir="${qa.junit.report}">
-                <include name="*.xml"/>
-            </fileset>
-            <report format="frames" todir="${qa.junit.report}"/>
-            <report format="noframes" todir="${qa.junit.report}"/>
-        </junitreport>
-		
-	</target>
-	
+      <!-- Report on the tests (format results) ... -->
+      <junitreport todir="${qa.junit.report}">
+         <fileset dir="${qa.junit.report}">
+            <include name="*.xml"/>
+         </fileset>
+         <report format="frames" todir="${qa.junit.report}"/>
+         <report format="noframes" todir="${qa.junit.report}"/>
+      </junitreport>
+
+   </target>
+
 </project>

Added: labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/deployment.xml
===================================================================
--- labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/deployment.xml	                        (rev 0)
+++ labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/deployment.xml	2007-03-16 04:41:49 UTC (rev 10253)
@@ -0,0 +1,11 @@
+<jbossesb-deployment>
+   <depends>jboss.esb:test=server</depends>
+   <depends>jboss.messaging.destination:service=Queue,name=esb_gateway_channel_versioned</depends>
+   <depends>jboss.messaging.destination:service=Queue,name=esb_channel_versioned</depends>
+   <loader-repository>
+       org.jboss.soa.esb:loader=simple-scoped
+      <loader-repository-config>
+         java2ParentDelegaton=false
+      </loader-repository-config>
+   </loader-repository>
+</jbossesb-deployment>
\ No newline at end of file

Added: labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/jboss-esb.xml
===================================================================
--- labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/jboss-esb.xml	                        (rev 0)
+++ labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/META-INF/jboss-esb.xml	2007-03-16 04:41:49 UTC (rev 10253)
@@ -0,0 +1,50 @@
+<?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"
+          parameterReloadSecs="5">
+
+   <providers>
+      <jms-provider name="JBossMQ" connection-factory="ConnectionFactory"
+                    jndi-context-factory="org.jnp.interfaces.NamingContextFactory"
+                    jndi-URL="localhost">
+
+         <jms-bus busid="gateway-channel-versioned">
+             <jms-message-filter
+                 dest-type="QUEUE"
+                 dest-name="queue/esb_gateway_channel_versioned"
+             />
+         </jms-bus>
+         <jms-bus busid="esb-channel-versioned">
+             <jms-message-filter
+                 dest-type="QUEUE"
+                 dest-name="queue/esb_channel_versioned"
+             />
+         </jms-bus>
+      </jms-provider>
+   </providers>
+
+   <services>
+
+      <service category="HelloWorld_ActionESB_versioned"
+               name="SimpleListenerVersioned"
+               description="Hello World">
+         <listeners>
+            <jms-listener name="JMS-Gateway"
+                busidref="gateway-channel-versioned"
+                maxThreads="1"
+                is-gateway="true"
+            />
+            <jms-listener name="JMS-ESBListener"
+                          busidref="esb-channel-versioned"
+                          maxThreads="1"
+            />
+         </listeners>
+         <actions>
+            <action name="displayAction"
+                    class="org.jboss.soa.esb.server.MyJMSListenerAction"
+                    process="process">
+            </action>
+         </actions>
+      </service>
+   </services>
+
+</jbossesb>

Added: labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-jbm-service.xml
===================================================================
--- labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-jbm-service.xml	                        (rev 0)
+++ labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-jbm-service.xml	2007-03-16 04:41:49 UTC (rev 10253)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<server>
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=esb_gateway_channel_versioned"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+
+   <mbean code="org.jboss.jms.server.destination.QueueService"
+      name="jboss.messaging.destination:service=Queue,name=esb_channel_versioned"
+      xmbean-dd="xmdesc/Queue-xmbean.xml">
+      <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+      <depends>jboss.messaging:service=PostOffice</depends>
+   </mbean>
+</server>

Added: labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-queues-service.xml
===================================================================
--- labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-queues-service.xml	                        (rev 0)
+++ labs/jbossesb/trunk/qa/junit/resources/server/simple-scoped/esb-queues-service.xml	2007-03-16 04:41:49 UTC (rev 10253)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- jboss mq version -->
+<server>
+  <mbean code="org.jboss.mq.server.jmx.Queue"
+	 name="jboss.mq.destination:service=Queue,name=esb_gateway_channel_versioned">
+    <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
+  </mbean>
+   <mbean code="org.jboss.mq.server.jmx.Queue"
+     name="jboss.mq.destination:service=Queue,name=esb_channel_versioned">
+     <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
+   </mbean>
+</server>

Modified: labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/unit/SimpleDeployUnitTestCase.java
===================================================================
--- labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/unit/SimpleDeployUnitTestCase.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/server/unit/SimpleDeployUnitTestCase.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -57,14 +57,14 @@
       super(name);
    }
 
-   public void sendAMessage(String msg) throws Exception
+   public void sendAMessage(String msg, String destination) throws Exception
    {
 
       InitialContext iniCtx = getInitialContext();
       Object tmp = iniCtx.lookup("ConnectionFactory");
       ConnectionFactory qcf = (ConnectionFactory) tmp;
       Connection conn = qcf.createConnection();
-      Destination que = (Queue) iniCtx.lookup("queue/esb_gateway_channel");
+      Destination que = (Queue) iniCtx.lookup(destination);
       Session session = conn.createSession(false, QueueSession.AUTO_ACKNOWLEDGE);
       conn.start();
       MessageProducer send = session.createProducer(que);
@@ -76,16 +76,24 @@
 
    public void testSimple() throws Exception
    {
-      sendAMessage("Hello World");
+      sendAMessage("Hello World", "queue/esb_gateway_channel");
       Thread.sleep(2000); // wait for message to post.
       String version = (String)getServer().getAttribute(new ObjectName(StatsMBean.objectName), "ExecutedVersion");
       assertEquals(version, "scope1");
       
    }
 
+   public void testScope() throws Exception
+   {
+      sendAMessage("Hello World", "queue/esb_gateway_channel_versioned");
+      Thread.sleep(2000); // wait for message to post.
+      String version = (String)getServer().getAttribute(new ObjectName(StatsMBean.objectName), "ExecutedVersion");
+      assertEquals(version, "scope2");
+
+   }
    public static Test suite() throws Exception
    {
-      return getDeploySetup(SimpleDeployUnitTestCase.class, "simple.esb");
+      return getDeploySetup(SimpleDeployUnitTestCase.class, "simple.esb, simple-scoped.esb");
    }
 
 }

Modified: labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/util/DbUtils.java
===================================================================
--- labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/util/DbUtils.java	2007-03-16 04:08:37 UTC (rev 10252)
+++ labs/jbossesb/trunk/qa/junit/src/org/jboss/soa/esb/util/DbUtils.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -284,7 +284,7 @@
 			try
 			{
 				// Register the driver..
-				Class.forName(dbDriver).newInstance();
+				Thread.currentThread().getContextClassLoader().loadClass(dbDriver).newInstance();
 				// Create the connection...
 				con = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
 				// Create a regular statement for execution...

Added: labs/jbossesb/trunk/qa/junit/versioned-scoped-src/org/jboss/soa/esb/server/MyJMSListenerAction.java
===================================================================
--- labs/jbossesb/trunk/qa/junit/versioned-scoped-src/org/jboss/soa/esb/server/MyJMSListenerAction.java	                        (rev 0)
+++ labs/jbossesb/trunk/qa/junit/versioned-scoped-src/org/jboss/soa/esb/server/MyJMSListenerAction.java	2007-03-16 04:41:49 UTC (rev 10253)
@@ -0,0 +1,73 @@
+/*
+* 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.server;
+
+import org.jboss.soa.esb.helpers.ConfigTree;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.mx.util.MBeanServerLocator;
+import org.jboss.mx.util.MBeanProxyExt;
+
+import javax.management.MBeanServer;
+
+/**
+ * This is a duplicate class to test classloader scoping.
+ *
+ */
+public class MyJMSListenerAction
+{
+   protected ConfigTree _config;
+
+   public MyJMSListenerAction(ConfigTree config)
+   {
+      _config = config;
+   }
+
+   public Message noOperation(Message message)
+   {
+      return message;
+   }
+
+   public Message process(Message message) throws Exception
+   {
+      logHeader();
+      System.out.println("Body: " + new String(message.getBody().getContents()));
+      logFooter();
+      MBeanServer server = MBeanServerLocator.locateJBoss();
+      StatsMBean stats = (StatsMBean) MBeanProxyExt.create(StatsMBean.class, StatsMBean.objectName, server);
+      System.out.println("************ SCOPED 2 ************");
+      stats.setExecutedVersion("scope2");
+      return message;
+   }
+
+   // This makes it easier to read on the console
+   private void logHeader()
+   {
+      System.out.println("\n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&");
+   }
+
+   private void logFooter()
+   {
+      System.out.println("&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&\n");
+   }
+
+
+}




More information about the jboss-svn-commits mailing list