[jboss-svn-commits] JBL Code SVN: r26579 - in labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta: src/org/jboss/soa/esb/listeners/deployers/mc/util and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon May 18 03:36:45 EDT 2009


Author: beve
Date: 2009-05-18 03:36:45 -0400 (Mon, 18 May 2009)
New Revision: 26579

Modified:
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/util/VfsUtil.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.xml
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.xml
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/TestUtil.java
Log:
Added some more test maily to assure that the deployers clean up after themselves.


Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -168,8 +168,10 @@
         
         // Get dependencies from deployment.xml.
         final Set<ObjectName> dependencies = getDependenciesFromDeploymentXml(deploymentUnit);
+        
         // Get implicit action dependencies.
         final Set<ObjectName> actionDependencies = getActionDependencies(deploymentName, model, actionArtifactProperties);
+        
         // Add all dependencies to set.
         dependencies.addAll(actionDependencies);
         
@@ -203,13 +205,11 @@
             throw new DeploymentException(e.getMessage(), e);
         }
 
-        final int esbConfigFilesFound = esbConfigFiles.size();
-
-        if (esbConfigFilesFound == 0)
+        if (esbConfigFiles.size() == 0)
         {
             throw new DeploymentException("No JBossESB configuration could be located the archive '" + file + "'");
         }
-        else if (esbConfigFilesFound > 1)
+        else if (esbConfigFiles.size() > 1)
         {
             throw new DeploymentException("Only one JBossESB configuration can exist in an archive. Please check '" + file + "'");
         }
@@ -219,18 +219,19 @@
         }
     }
     
-    private Set<ObjectName> getDependenciesFromDeploymentXml(final VFSDeploymentUnit deploymentUnit) throws DeploymentException
+    Set<ObjectName> getDependenciesFromDeploymentXml(final VFSDeploymentUnit unit) throws DeploymentException
     {
         final Set<ObjectName> dependencies = new HashSet<ObjectName>();
-        final VirtualFile deploymentFile = deploymentUnit.getFile(ESB_DEPLOYMENT_XML);
+        final VirtualFile deploymentXml = unit.getFile(ESB_DEPLOYMENT_XML);
+        
         try
         {
-            if (deploymentFile != null && deploymentFile.exists())
+            if (deploymentXml != null && deploymentXml.exists())
             {
                 try
                 {
                     XmlFileLoader xfl = new XmlFileLoader();
-                    Element jboss = xfl.getDocument(deploymentFile.openStream(), ESB_DEPLOYMENT_XML).getDocumentElement();
+                    Element jboss = xfl.getDocument(deploymentXml.openStream(), ESB_DEPLOYMENT_XML).getDocumentElement();
                     // Check for a ejb level class loading config
                     @SuppressWarnings("unchecked")
                     Iterator depends = MetaData.getChildrenByTagName(jboss, "depends");
@@ -325,9 +326,14 @@
         return deps;
     }
     
-    private String getDeploymentName(final VFSDeploymentUnit deploymentUnit)
+    String getDeploymentName(final VFSDeploymentUnit deploymentUnit)
     {
         final String simpleName = deploymentUnit.getSimpleName();
+        int idx = simpleName.indexOf(ESB_ARCHIVE_SUFFIX);
+        if (idx == -1)
+        {
+            return simpleName;
+        }
         return simpleName.substring(0, simpleName.indexOf(ESB_ARCHIVE_SUFFIX));
     }
 

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployer.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -108,7 +108,6 @@
         {
             final BeanMetaData beanMetaData = createBeanMetaData(deploymentUnit, esbMetaData);
             deploymentUnit.addAttachment(BeanMetaData.class.getName() + "_ESB", beanMetaData);
-            
             log.debug("Created beanMetaData : " + beanMetaData);
         } 
         catch (final DeploymentException e)

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -67,17 +67,29 @@
     
     /**
      * Key used for attaching a VirtualFile representing a ref to 
-     * a dynamically created virtual file system.
+     * a dynamically created root virtual file system.
      */
-    private static final String DYNAMIC_CL_DIR_KEY = "WS-DYNAMIC-CL-DIR";
+    static final String DYNAMIC_CL_DIR_KEY = "WS-DYNAMIC-CL-DIR";
     
     /**
      * Key used for attaching a URL representing a ref to 
-     * a dynamically created virtual file system.
+     * a dynamically created root virtual file system.
      */
-    private static final String DYNAMIC_CL_URL_KEY = "WS-DYNAMIC-CL-URL";
+    static final String DYNAMIC_CL_URL_KEY = "WS-DYNAMIC-CL-URL";
     
     /**
+     * Key used for attaching a VirtualFile representing a ref to 
+     * a dynamically created WEB-INF/classes virtual file system.
+     */
+    static final String DYNAMIC_WEBINF_CL_DIR_KEY = "WS-WEBINF-DYNAMIC-CL-DIR";
+    
+    /**
+     * Key used for attaching a URL representing a ref to 
+     * a dynamically created WEB-INF/classes virtual file system.
+     */
+    static final String DYNAMIC_WEBINF_CL_URL_KEY = "WS-WEBINF-DYNAMIC-CL-URL";
+    
+    /**
      * Sole constructor that performas the following steps:
      * <lu>
      *  <li>Sets the output of this deployer to be {@link EsbMetaData}.</li>
@@ -118,14 +130,18 @@
                 final VirtualFile inMemRootDir = VfsUtil.createInMemoryFs(inMemRootUrl);
                 
                 // Attach the in-memory classpath URL and virtual file to this deployment unit so we can remove then upon undeploy.
-                attachToDeploymentUnit(unit, inMemRootUrl, inMemRootDir);
+                //attachToDeploymentUnit(unit, inMemRootUrl, inMemRootDir);
+                unit.addAttachment(DYNAMIC_CL_DIR_KEY, inMemRootDir);
+                unit.addAttachment(DYNAMIC_CL_URL_KEY, inMemRootUrl);
                 
                 // Add the in-memory classpath to this deployment unit.
                 unit.addClassPath(inMemRootDir);
                 
                 // Create WEB-INF/classes relative to the in-memory vfs root.
-                final URL classesUrl = VfsUtil.createInMemUrl(inMemRootUrl, "/WEB-INF/classes");
+                final URL classesUrl = VfsUtil.createInMemUrl(inMemRootUrl, "WEB-INF/classes");
                 final VirtualFile classesDir = MemoryFileFactory.createDirectory(classesUrl);
+                unit.addAttachment(DYNAMIC_WEBINF_CL_DIR_KEY, classesDir);
+                unit.addAttachment(DYNAMIC_WEBINF_CL_URL_KEY, classesUrl);
                 
                 // Add the in-memory classes dir to this deployment unit.
                 unit.addClassPath(classesDir);
@@ -153,11 +169,11 @@
                     // Generate the servlet class bytes
                     final byte[] servletClass = generator.generate(service.getCategory(), service.getName(), serviceInfo, includeHandlers);
                     final String servletClassName = serviceInfo.getClassName().replace('.', '/') + ".class";
-                    final URL servletClassUrl = new URL(classesUrl + "/" + servletClassName);
+                    final URL servletClassUrl = VfsUtil.createInMemUrl(classesUrl, servletClassName);
                     
                     // Add the servlet to the virtual file system.
                     VfsUtil.addFile(classesUrl, servletClassName, servletClass);
-                    log.debug("Generated ws impl: " + servletClassUrl);
+                    log.debug("Generated ServletImpl '" + servletClassUrl + "'");
                         
                     servlets.add(createServlets(service, serviceInfo, generator, includeHandlers));
                     servletMappings.add(createServletMapping(serviceInfo));
@@ -188,41 +204,46 @@
         }
     }
     
-    private void attachToDeploymentUnit(final VFSDeploymentUnit unit, final URL url, final VirtualFile vf)
-    {
-        unit.addAttachment(DYNAMIC_CL_URL_KEY, url);
-        unit.addAttachment(DYNAMIC_CL_DIR_KEY, vf);
-    }
-    
     @Override
-    public void undeploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) 
+    public void undeploy(final VFSDeploymentUnit unit, final EsbMetaData esbMetaData) 
     {
-        log.debug("Removing dynamic class root for " + deploymentUnit.getName());
         try
         {
-            final VirtualFile classes = deploymentUnit.removeAttachment(DYNAMIC_CL_DIR_KEY, VirtualFile.class);
-            if (classes != null)
-            {
-                deploymentUnit.removeClassPath(classes);
-            }
-        }
+            removeVirtualFile(unit, DYNAMIC_CL_DIR_KEY);
+            removeVirtualFile(unit, DYNAMIC_WEBINF_CL_DIR_KEY);
+        } 
         finally
         {
             try
             {
-                final URL root = deploymentUnit.removeAttachment(DYNAMIC_CL_URL_KEY, URL.class);
-                if (root != null)
-                {
-                    MemoryFileFactory.deleteRoot(root);
-                }
+                removeFromClassPath(unit, DYNAMIC_WEBINF_CL_URL_KEY);
+                removeFromClassPath(unit, DYNAMIC_CL_URL_KEY);
             }
             catch (final Exception e)
             {
-                log.warn("Error deleting dynamic class root for " + deploymentUnit.getName(), e);
+                log.warn("Error deleting dynamic class root for " + unit.getName(), e);
             }
         }
     }
     
+    private void removeVirtualFile(final VFSDeploymentUnit unit, final String attachmenKey)
+    {
+        final VirtualFile file = unit.removeAttachment(attachmenKey, VirtualFile.class);
+        if (file != null)
+        {
+            unit.removeClassPath(file);
+        }
+    }
+    
+    private void removeFromClassPath(final VFSDeploymentUnit unit, final String attachmentKey)
+    {
+        final URL url = unit.removeAttachment(attachmentKey, URL.class);
+        if (url != null)
+        {
+            MemoryFileFactory.delete(url);
+        }
+    }
+    
     private boolean hasWebServices(final List<WebserviceInfo> endpointServices)
     {
         return endpointServices != null && endpointServices.size() > 0;

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -24,6 +24,7 @@
 import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
+import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.log4j.Logger;
@@ -36,6 +37,7 @@
 import org.jboss.soa.esb.listeners.config.WebserviceInfo;
 import org.jboss.soa.esb.listeners.deployers.mc.util.VfsUtil;
 import org.jboss.virtual.MemoryFileFactory;
+import org.jboss.virtual.VFS;
 import org.jboss.virtual.VirtualFile;
 import org.jboss.virtual.VirtualFileFilter;
 import org.jboss.ws.metadata.umdm.UnifiedMetaData;
@@ -60,17 +62,21 @@
     private Logger log = Logger.getLogger(EsbWsdlDeployer.class);
     
     /**
-     * Key used for attaching a VirtualFile representing a ref to 
+     * Key used for attaching a list of VirtualFile representing generated wsdl files.
+     */
+    static final String WSDL_LOCATIONS_KEY = "WSDL-LOCATIONS-KEY";
+    
+    /**
+     * Key used for attaching a URL representing a ref to 
      * a dynamically created in-memory virtual file system.
      */
-    private static final String DYNAMIC_CL_DIR_KEY = "WSDL-DYNAMIC-CL-DIR";
+    static final String DYNAMIC_ROOT_URL_KEY = "WSDL-DYNAMIC-ROOT-URL";
     
-    
     /**
      * Key used for attaching a URL representing a ref to 
      * a dynamically created in-memory virtual file system.
      */
-    private static final String DYNAMIC_CL_URL_KEY = "WSDL-DYNAMIC-CL-URL";
+    static final String DYNAMIC_ROOT_DIR_KEY = "WSDL-DYNAMIC-ROOT-DIR";
     
     /**
      * {@link VirtualFileFilter} that selects '.xsd'.
@@ -112,27 +118,34 @@
                 final String inMemRootName = esbMetaData.getDeploymentName() + "_WSDL";
                 final URL inMemRootUrl = VfsUtil.createInMemUrl(inMemRootName);
                 final VirtualFile inMemRootDir = VfsUtil.createInMemoryFs(inMemRootUrl);
+                // Attach the in-memory root url so we can remove it in undeploy.
+                unit.addAttachment(DYNAMIC_ROOT_URL_KEY, inMemRootUrl);
+                // Attach the in-memory root dir so we can remove it in undeploy.
+                unit.addAttachment(DYNAMIC_ROOT_DIR_KEY, inMemRootDir);
                 
-                // Attach the in-memory classpath URL and virtual file to this deployment unit so we can remove then upon undeploy.
-                attachToDeploymentUnit(unit, inMemRootUrl, inMemRootDir);
+                final List<URL> wsdls = new ArrayList<URL>();
                 
                 for (WebserviceInfo wsInfo : webServices)
                 {
                     // Generate the wsdl for the web service.
                     final ESBServiceEndpointInfo serviceInfo = new ESBServiceEndpointInfo(wsInfo);
                     final String wsdl = ESBContractGenerator.generateWSDL(wsInfo, serviceInfo, unit.getClassLoader());
-                    final URL wsdlUrl = new URL(inMemRootUrl + "/" + serviceInfo.getWSDLFileName());
+                    final URL wsdlUrl = VfsUtil.createInMemUrl(inMemRootUrl, serviceInfo.getWSDLFileName());
                     log.info("Generating wsdl url : " + wsdlUrl);
                     
                     // Add the wsdl in the virtual file system
-                    VirtualFile putFile = VfsUtil.addFile(inMemRootUrl, serviceInfo.getWSDLFileName(), wsdl.getBytes());
+                    VirtualFile wsdlFile = VfsUtil.addFile(inMemRootUrl, serviceInfo.getWSDLFileName(), wsdl.getBytes());
+                    wsdls.add(wsdlUrl);
                     
                     // Add any additional schemas in the deployment unit to the in-memory vfs.
-                    addSchemasToVfs(getSchemas(unit.getRoot()), putFile.getParent(), esbMetaData.getArchiveName());
+                    addSchemasToVfs(getSchemas(unit.getRoot()), wsdlFile.getParent(), esbMetaData.getArchiveName());
                     
                     // Add the root of the virtual file system as a meta data location.
                     unit.appendMetaDataLocation(inMemRootDir);
                 }
+                
+                // Attach all the wsdl locations so that we can remove them in undeploy.
+                unit.addAttachment(WSDL_LOCATIONS_KEY, wsdls);
             }
             catch (final Exception e)
             {
@@ -141,12 +154,6 @@
         }
     }
     
-    private void attachToDeploymentUnit(final VFSDeploymentUnit unit, final URL url, final VirtualFile vf)
-    {
-        unit.addAttachment(DYNAMIC_CL_URL_KEY, url);
-        unit.addAttachment(DYNAMIC_CL_DIR_KEY, vf);
-    }
-    
     /**
      * Retrieves all the schemas (.xsd) from the virtual file root passed in.
      * 
@@ -187,41 +194,45 @@
      * be removed.
      * <p/>
      * 
-     * @param deploymentUnit The {@link VFSDeploymentUnit} for this deploment.
+     * @param unit The {@link VFSDeploymentUnit} for this deploment.
      * @param esbMetaData The {@link EsbMetaData} for this deployment.
      */
     @Override
-    public void undeploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) 
+    public void undeploy(final VFSDeploymentUnit unit, final EsbMetaData esbMetaData) 
     {
-        log.debug("Removing dynamic class root for " + deploymentUnit.getName());
         try
         {
-            final VirtualFile classes = deploymentUnit.removeAttachment(DYNAMIC_CL_DIR_KEY, VirtualFile.class);
-            if (classes != null)
+            final List<URL> locations = unit.removeAttachment(WSDL_LOCATIONS_KEY, List.class);
+            if (locations != null)
             {
-                deploymentUnit.removeClassPath(classes);
+                for (URL url : locations)
+                {
+                    MemoryFileFactory.delete(url);
+                }
             }
         }
         finally
         {
             try
             {
-                final URL root = deploymentUnit.removeAttachment(DYNAMIC_CL_URL_KEY, URL.class);
-                if (root != null)
+                final URL rootUrl = unit.removeAttachment(DYNAMIC_ROOT_URL_KEY, URL.class);
+                if (rootUrl != null)
                 {
-                    MemoryFileFactory.deleteRoot(root);
+                    MemoryFileFactory.deleteRoot(rootUrl);
+                    // Also need remove the root from the metadata locations.
+                    unit.removeMetaDataLocation(VFS.getVFS(rootUrl).getRoot());
                 }
+                
             }
             catch (final Exception e)
             {
-                log.warn("Error deleting dynamic class root for " + deploymentUnit.getName(), e);
+                log.warn("Error deleting dynamic class root for " + unit.getName(), e);
             }
         }
     }
     
     /**
-     * A {@link VirtualFileFilter} that selects all files ending with
-     * '.xsd'.
+     * A {@link VirtualFileFilter} that selects all files ending with '.xsd'.
      * 
      * @author <a href="mailto:dbevenius at jboss.com">Daniel Bevenius</a>
      *

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/util/VfsUtil.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/util/VfsUtil.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/util/VfsUtil.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -94,7 +94,7 @@
     
     public static URL createInMemUrl(final URL root, final String path) throws MalformedURLException
     {
-        return new URL(IN_MEMORY_PROTOCOL, root.getHost(), "/" + path);
+        return new URL(IN_MEMORY_PROTOCOL, root.getHost(), root.getPath() + "/" + path);
     }
     
     public static void addFiles(final List<VirtualFile> files, final URL destUrl, final String subPath) throws IOException, URISyntaxException

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParserUnitTest.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -25,7 +25,10 @@
 
 import javax.management.ObjectName;
 
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.soa.esb.listeners.deployers.mc.util.VfsUtil;
 import org.jboss.test.kernel.junit.MicrocontainerTest;
+import org.jboss.virtual.VirtualFile;
 
 /**
  * Unit tests for {@link EsbConfigParser}.
@@ -52,10 +55,47 @@
         assertEquals("exploded-esb-archive", esbMetaData.getDeploymentName());
         
         Set<ObjectName> deps = esbMetaData.getDependencies();
+        
         assertEquals(3, deps.size());
         assertTrue(deps.contains(new ObjectName("jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb")));
         assertTrue(deps.contains(new ObjectName("jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw")));
         assertTrue(deps.contains(new ObjectName("jboss.web.deployment:war=/test2")));
     }
     
+    public void testGetDependenciesFromDeploymentUnit() throws Exception
+    {
+        VFSDeploymentUnit unit = TestUtil.getDeploymentUnit(dir, "exploded-esb-archive.esb");
+        Set<ObjectName> deps = parserDeployer.getDependenciesFromDeploymentXml(unit);
+        
+        assertFalse(deps.isEmpty());
+        assertEquals(3, deps.size());
+        assertTrue(deps.contains(new ObjectName("jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_esb")));
+        assertTrue(deps.contains(new ObjectName("jboss.web.deployment:war=/test2")));
+        assertTrue(deps.contains(new ObjectName("jboss.esb.quickstart.destination:service=Queue,name=quickstart_helloworld_Request_gw")));
+    }
+    
+    public void testGetDependenciesFromDeploymentUnitNoDeps() throws Exception
+    {
+        VirtualFile vfs = VfsUtil.createInMemoryFs(VfsUtil.createInMemUrl("confParser"));
+        VFSDeploymentUnit unit = TestUtil.getDeploymentUnit(vfs);
+        Set<ObjectName> deps = parserDeployer.getDependenciesFromDeploymentXml(unit);
+        
+        assertTrue(deps.isEmpty());
+    }
+    
+    public void testDeploymentName() throws Exception
+    {
+        VirtualFile vfs = VfsUtil.createInMemoryFs(VfsUtil.createInMemUrl("confParser"));
+        VFSDeploymentUnit unit = TestUtil.getDeploymentUnit(vfs);
+        
+        assertEquals("", parserDeployer.getDeploymentName(unit));
+    }
+    
+    public void testGetDeploymentName() throws Exception
+    {
+        VFSDeploymentUnit unit = TestUtil.getDeploymentUnit(dir, "exploded-esb-archive.esb");
+        
+        assertEquals("exploded-esb-archive", parserDeployer.getDeploymentName(unit));
+    }
+    
 }

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbDeployerUnitTest.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -25,6 +25,8 @@
 
 import org.jboss.beans.metadata.spi.BeanMetaData;
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.soa.esb.message.Message;
+import org.jboss.soa.esb.message.format.MessageFactory;
 import org.jboss.test.kernel.junit.MicrocontainerTest;
 
 /**

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -20,18 +20,21 @@
  */
 package org.jboss.soa.esb.listeners.deployers.mc;
 
+import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URL;
+import java.util.List;
 
-import org.jboss.classloader.spi.ClassLoaderDomain;
-import org.jboss.classloader.spi.ClassLoaderPolicy;
-import org.jboss.classloader.spi.ClassLoaderSystem;
 import org.jboss.deployers.client.spi.Deployment;
-import org.jboss.deployers.client.spi.main.MainDeployer;
 import org.jboss.deployers.plugins.main.MainDeployerImpl;
-import org.jboss.deployers.structure.spi.DeploymentContext;
+import org.jboss.deployers.spi.DeploymentException;
 import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.deployers.vfs.spi.client.VFSDeployment;
 import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
+import org.jboss.metadata.web.jboss.JBossServletsMetaData;
+import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.metadata.web.spec.ServletMappingMetaData;
+import org.jboss.soa.esb.listeners.deployers.mc.util.VfsUtil;
 import org.jboss.test.kernel.junit.MicrocontainerTest;
 import org.jboss.virtual.VFS;
 import org.jboss.virtual.VirtualFile;
@@ -45,63 +48,89 @@
  */
 public class EsbWebServiceDeployerUnitTest extends MicrocontainerTest
 {
-    private URL dir = getClass().getResource("/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives");
+    private Deployment deployment;
+    private MainDeployerImpl mainDeployer;
     
-    private EsbWebServiceDeployer esbWebServiceDeployer = new EsbWebServiceDeployer();
-    
     public EsbWebServiceDeployerUnitTest(String name)
     {
         super(name);
     }
     
-    public void testJBossWebMetaDataCreated() throws Throwable
+    @Override
+    public void afterSetUp() throws Exception
     {
-        //final String archiveName = "exploded-esb-archive.esb";
-        //EsbMetaData esbMetaData = TestUtil.getEsbMetaData(new EsbConfigParser(), dir, archiveName);
-        //VFSDeploymentUnit deploymentUnit = TestUtil.getDeploymentUnit(dir, archiveName);
-        //MainDeployer mainDeployer = deploymentUnit.getMainDeployer();
+        super.afterSetUp();
         
         final String archiveName = "exploded-esb-archive.esb";
-        VirtualFile virtualFile = VFS.getVirtualFile(dir, archiveName);
-        VFSDeployment deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(virtualFile);
-        MainDeployerImpl mainDeployer = (MainDeployerImpl) getBean("MainDeployer");
+        final URL dir = getClass().getResource("/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives");
+        final VirtualFile archiveFile = VFS.getVirtualFile(dir, archiveName);
+        deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(archiveFile);
+        mainDeployer = (MainDeployerImpl) getBean("MainDeployer");
         mainDeployer.deploy(deployment);
+    }
+    
+    public void testJBossWebMetaDataCreated() throws Throwable
+    {
+        final DeploymentUnit unit = mainDeployer.getDeploymentUnit(deployment.getName());
+        final JBossWebMetaData webMD = unit.getAttachment(JBossWebMetaData.class);
+        assertNotNull(webMD);
         
-        //URL r = deploymentUnit.getClassLoader().getResource("test.txt");
-        DeploymentUnit deploymentUnit = mainDeployer.getDeploymentUnit(deployment.getName());
+        final JBossServletsMetaData servlets = webMD.getServlets();
+        assertEquals(1, servlets.size());
         
-        /*
+        final String servletClassName = servlets.iterator().next().getServletClass();
+        assertEquals("esb.ws.FirstServiceESB.SimpleListener.Implementation", servletClassName);
         
-        esbWebServiceDeployer.deploy(deploymentUnit, esbMetaData);
-        JBossWebMetaData webMetaData = deploymentUnit.getAttachment(JBossWebMetaData.class);
-        assertNotNull(webMetaData);
+        final List<ServletMappingMetaData> mappings = webMD.getServletMappings();
+        assertEquals(1, mappings.size());
+        assertEquals("FirstServiceESB_SimpleListener", mappings.get(0).getServletName());
+        assertEquals(1, mappings.get(0).getUrlPatterns().size());
+        assertEquals("/FirstServiceESB/SimpleListener", mappings.get(0).getUrlPatterns().get(0));
+    }
+    
+    public void testServletAddedToClassPath() throws Throwable
+    {
+        final VFSDeploymentUnit unit = (VFSDeploymentUnit) mainDeployer.getDeploymentUnit(deployment.getName());
+        final VirtualFile classesDir = getWebInfClassesDir(unit.getClassPath());
         
-        //JBossServletsMetaData servlets = webMetaData.getServlets();
-        //assertEquals(1, servlets.size());
-        //final String servletClassName = servlets.iterator().next().getServletClass();
-        //assertEquals("esb.ws.FirstServiceESB.SimpleListener.Implementation", servletClassName);
+        assertNotNull(classesDir.getChild("esb/ws/FirstServiceESB/SimpleListener/Implementation.class"));
+    }
+    
+    public void testUndeployCleanup() throws DeploymentException, MalformedURLException, IOException
+    {
+        final EsbWebServiceDeployer wsDeployer = (EsbWebServiceDeployer) getBean("EsbWebServiceDeployer");
         
+        final VFSDeploymentUnit unit = (VFSDeploymentUnit) mainDeployer.getDeploymentUnit(deployment.getName());
+        final URL inMemRootUrl = VfsUtil.createInMemUrl("exploded-esb-archive");
+        final VirtualFile inMemRootDir = VfsUtil.createInMemoryFs(inMemRootUrl);
+        unit.addAttachment(EsbWebServiceDeployer.DYNAMIC_CL_DIR_KEY, inMemRootDir);
+        unit.addAttachment(EsbWebServiceDeployer.DYNAMIC_CL_URL_KEY, inMemRootUrl);
         
-        URL r = deploymentUnit.getClassLoader().getResource("test.txt");
-        System.out.println(r);
+        wsDeployer.undeploy(unit, null);
         
-        URL wsdl = deploymentUnit.getClassLoader().getResource("/WEB-INF/wsdl/FirstServiceESB/SimpleListener.wsdl");
-        assertNotNull("No wsdl file was added to the classpath.", wsdl);
+        assertNull(unit.getAttachment(EsbWebServiceDeployer.DYNAMIC_CL_DIR_KEY));
+        assertNull(unit.getAttachment(EsbWebServiceDeployer.DYNAMIC_CL_URL_KEY));
         
-        //URL servletClass = deploymentUnit.getClassLoader().getResource("/WEB-INF/classes/esb/ws/FirstServiceESB.SimpleListener.Implementation.class");
-        //assertNotNull("No servletclass(WS) was added to the classpath", servletClass);
-        
-        // Try loading the servlet class to verify that it is available to the deployment units classloader
-        try
+        final VirtualFile classesDir = getWebInfClassesDir(unit.getClassPath());
+        assertNull(classesDir);
+    }
+    
+    public void tearDown() throws Exception
+    {
+        mainDeployer.undeploy(deployment);
+        super.tearDown();
+    }
+
+    private VirtualFile getWebInfClassesDir(final List<VirtualFile> classpath)
+    {
+        for (VirtualFile file : classpath)
         {
-            deploymentUnit.getClassLoader().loadClass("Test");
+            if (file.getPathName().equals("WEB-INF/classes"))
+            {
+                return file;
+            }
         }
-        catch (final Exception e)
-        {
-            e.printStackTrace();
-            fail(e.getMessage());
-        }
-        */
+        return null;
     }
     
 }

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.xml	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployerUnitTest.xml	2009-05-18 07:36:45 UTC (rev 26579)
@@ -4,39 +4,39 @@
             xsi:schemaLocation="urn:jboss:bean-deployer:2.0 bean-deployer_2_0.xsd"
             xmlns="urn:jboss:bean-deployer:2.0">
             
-   <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser"/>
+    <bean name="EsbConfigParser" class="org.jboss.soa.esb.listeners.deployers.mc.EsbConfigParser"/>
    
-   <bean name="EsbWebServiceDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbWebServiceDeployer"/>
+    <bean name="EsbWebServiceDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbWebServiceDeployer"/>
    
-   <!-- bean name="EsbWsdlDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbWsdlDeployer"/-->
+    <!-- bean name="EsbWsdlDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbWsdlDeployer"/-->
    
-   <bean name="EsbDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbDeployer"/>
+    <bean name="EsbDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.EsbDeployer"/>
    
-   <bean name="MainDeployer" class="org.jboss.deployers.plugins.main.MainDeployerImpl">
-      <property name="structuralDeployers"><inject bean="StructuralDeployers"/></property>
-      <property name="deployers"><inject bean="Deployers"/></property>
-   </bean>
+    <bean name="MainDeployer" class="org.jboss.deployers.plugins.main.MainDeployerImpl">
+        <property name="structuralDeployers"><inject bean="StructuralDeployers"/></property>
+        <property name="deployers"><inject bean="Deployers"/></property>
+    </bean>
 
-   <bean name="StructuralDeployers" class="org.jboss.deployers.vfs.plugins.structure.VFSStructuralDeployersImpl">
-      <property name="structureBuilder">
-         <bean name="StructureBuilder" class="org.jboss.deployers.vfs.plugins.structure.VFSStructureBuilder"/>
-      </property>
-      <incallback method="addDeployer"/>
-      <uncallback method="removeDeployer"/>
-   </bean>
+    <bean name="StructuralDeployers" class="org.jboss.deployers.vfs.plugins.structure.VFSStructuralDeployersImpl">
+        <property name="structureBuilder">
+            <bean name="StructureBuilder" class="org.jboss.deployers.vfs.plugins.structure.VFSStructureBuilder"/>
+        </property>
+        <incallback method="addDeployer"/>
+        <uncallback method="removeDeployer"/>
+    </bean>
 
-   <bean name="Deployers" class="org.jboss.deployers.plugins.deployers.DeployersImpl">
-      <constructor><parameter><inject bean="jboss.kernel:service=KernelController"/></parameter></constructor>
-      <incallback method="addDeployer"/>
-      <uncallback method="removeDeployer"/>
-   </bean>
+    <bean name="Deployers" class="org.jboss.deployers.plugins.deployers.DeployersImpl">
+        <constructor><parameter><inject bean="jboss.kernel:service=KernelController"/></parameter></constructor>
+        <incallback method="addDeployer"/>
+        <uncallback method="removeDeployer"/>
+    </bean>
    
-   <bean name="EsbStructure" class="org.jboss.deployers.vfs.plugins.structure.jar.JARStructure">
+    <bean name="EsbStructure" class="org.jboss.deployers.vfs.plugins.structure.jar.JARStructure">
         <incallback method="addJarExtension">
             <parameter><inject bean="EsbExtensionProvider"/></parameter>
         </incallback>
     </bean>
+    
     <bean name="EsbExtensionProvider" class="org.jboss.soa.esb.listeners.deployers.mc.EsbExtensionProvider"/>
-   
-   
+    
 </deployment>

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -20,13 +20,17 @@
  */
 package org.jboss.soa.esb.listeners.deployers.mc;
 
-import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.List;
 
+import org.jboss.deployers.plugins.main.MainDeployerImpl;
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.vfs.spi.client.VFSDeployment;
+import org.jboss.deployers.vfs.spi.client.VFSDeploymentFactory;
+import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.test.kernel.junit.MicrocontainerTest;
 import org.jboss.virtual.MemoryFileFactory;
 import org.jboss.virtual.VFS;
@@ -41,14 +45,28 @@
 public class EsbWsdlDeployerUnitTest extends MicrocontainerTest
 {
     private URL dir = getClass().getResource("/org/jboss/soa/esb/listeners/deployers/mc/test_esb_archives");
+    private VFSDeployment deployment;
+    private MainDeployerImpl mainDeployer;
 
     public EsbWsdlDeployerUnitTest(String name)
     {
         super(name);
     }
     
-    public void testGetAllSchemas() throws Throwable
+    @Override
+    public void afterSetUp() throws Exception
     {
+        super.afterSetUp();
+        
+        final String archiveName = "exploded-esb-archive.esb";
+        final VirtualFile archiveFile = VFS.getVirtualFile(dir, archiveName);
+        deployment = VFSDeploymentFactory.getInstance().createVFSDeployment(archiveFile);
+        mainDeployer = (MainDeployerImpl) getBean("MainDeployer");
+        mainDeployer.deploy(deployment);
+    }
+    
+    public void _testGetAllSchemas() throws Throwable
+    {
         final VirtualFile virtualFile = VFS.getVirtualFile(dir, "exploded-esb-archive.esb");
         final EsbWsdlDeployer esbWsdlDeployer = new EsbWsdlDeployer();
         final List<VirtualFile> schemas = esbWsdlDeployer.getSchemas(virtualFile);
@@ -57,7 +75,7 @@
         assertEquals(2, schemas.size());
     }
     
-    public void testAddSchemasToVFS() throws IOException, URISyntaxException
+    public void _testAddSchemasToVFS() throws IOException, URISyntaxException
     {
         final String archiveName = "exploded-esb-archive.esb";
         final VirtualFile virtualFile = VFS.getVirtualFile(dir, archiveName);
@@ -88,4 +106,25 @@
             }
         }
     }
+    
+    public void testUndeployCleanup() throws DeploymentException, MalformedURLException, IOException
+    {
+        final String wsdl = "WEB-INF/wsdl/FirstServiceESB/SimpleListener.wsdl";
+        final EsbWsdlDeployer wsdlDeployer = (EsbWsdlDeployer) getBean("EsbWsdlDeployer");
+        
+        final VFSDeploymentUnit unit = (VFSDeploymentUnit) mainDeployer.getDeploymentUnit(deployment.getName());
+        assertNotNull(unit.getMetaDataFile(wsdl));
+        
+        wsdlDeployer.undeploy(unit, null);
+        
+        assertNull(unit.getMetaDataFile(wsdl));
+        assertNull(unit.getAttachment(EsbWsdlDeployer.WSDL_LOCATIONS_KEY));
+        assertNull(unit.getAttachment(EsbWsdlDeployer.DYNAMIC_ROOT_URL_KEY));
+    }
+    
+    public void tearDown() throws Exception
+    {
+        mainDeployer.undeploy(deployment);
+        super.tearDown();
+    }
 }

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.xml
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.xml	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployerUnitTest.xml	2009-05-18 07:36:45 UTC (rev 26579)
@@ -38,22 +38,6 @@
     </bean>
     <bean name="EsbExtensionProvider" class="org.jboss.soa.esb.listeners.deployers.mc.EsbExtensionProvider"/>
     
-   <!--
-      The classloader implementation
-   -->
-   <bean name="ClassLoaderSystem" class="org.jboss.classloader.spi.ClassLoaderSystem">
-      <classloader><null/></classloader>
-      <constructor factoryClass="org.jboss.classloader.spi.ClassLoaderSystem" factoryMethod="getInstance"/>
-   </bean>
-
-   <!--
-      ClassLoader management and resolution
-   -->
-   <bean name="ClassLoading" class="org.jboss.classloading.spi.dependency.ClassLoading">
-      <classloader><null/></classloader>
-      <incallback method="addModule" state="Configured"/>
-      <uncallback method="removeModule" state="Configured"/>
-   </bean>
-    
+    <bean name="ClassLoaderDeployer" class="org.jboss.soa.esb.listeners.deployers.mc.TestClassLoaderDeployer"/>
    
 </deployment>

Modified: labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/TestUtil.java
===================================================================
--- labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/TestUtil.java	2009-05-18 06:53:55 UTC (rev 26578)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/tests/src/org/jboss/soa/esb/listeners/deployers/mc/TestUtil.java	2009-05-18 07:36:45 UTC (rev 26579)
@@ -85,7 +85,6 @@
         return VFS.getVirtualFile(directoryURL, fileName);
     }
 
-
     public static VirtualFile getMockVF(final File esbFile)
     {
         VirtualFile file = new VirtualFile(new VirtualFileHandler()




More information about the jboss-svn-commits mailing list