[jboss-svn-commits] JBL Code SVN: r26033 - labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Apr 15 02:14:44 EDT 2009


Author: beve
Date: 2009-04-15 02:14:43 -0400 (Wed, 15 Apr 2009)
New Revision: 26033

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/EsbWebServiceDeployer.java
   labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java
Log:
For work. Still don't have the wsdl location working. Checking in so that Kev can take a  look.


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-04-15 04:01:20 UTC (rev 26032)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbConfigParser.java	2009-04-15 06:14:43 UTC (rev 26033)
@@ -92,7 +92,12 @@
     /**
      * Deployment prefix for esb deployments.
      */
-    private String deploymentPrefix = "jboss.esb:deployment=";
+    private String esbDeploymentPrefix = "jboss.esb:deployment=";
+    
+    /**
+     * Deployment prefix for war deployments.
+     */
+    private String warDeploymentPrefix = "jboss.web.deployment:war=";
 
     /**
      * Logger.
@@ -208,7 +213,7 @@
                         final String deployable = MetaData.getElementContent(depend);
                         if (deployable.endsWith(".war"))
                         {
-                            String objectName = "jboss.web.deployment:war=/" + deployable.substring(0, deployable.indexOf('.'));
+                            String objectName = warDeploymentPrefix + "/" + deployable.substring(0, deployable.indexOf('.'));
                             dependencies.add(new ObjectName(objectName));
                         }
                     }
@@ -268,7 +273,7 @@
         {
             if (!deploymentName.equals(artifact))
             {
-                final String canonicalName = deploymentPrefix + artifact ;
+                final String canonicalName = esbDeploymentPrefix + artifact ;
                 try
                 {
                     ObjectName on = ObjectNameConverter.convert(canonicalName);
@@ -294,10 +299,15 @@
         this.actionArtifactsFile = actionArtifactsFile;
     }
     
-    public void setDeploymentPrefix(String deploymentPrefix)
+    public void setEsbDeploymentPrefix(String deploymentPrefix)
     {
-        this.deploymentPrefix = deploymentPrefix;
+        this.esbDeploymentPrefix = deploymentPrefix;
     }
+    
+    public void setWarDeploymentPrefix(String deploymentPrefix)
+    {
+        this.warDeploymentPrefix = deploymentPrefix;
+    }
 
     /**
      * Filter for filtering out ESB configuration files.

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-04-15 04:01:20 UTC (rev 26032)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWebServiceDeployer.java	2009-04-15 06:14:43 UTC (rev 26033)
@@ -37,6 +37,8 @@
 import org.jboss.internal.soa.esb.webservice.ESBServiceEndpointInfo;
 import org.jboss.internal.soa.esb.webservice.JAXWSProviderClassGenerator;
 import org.jboss.internal.soa.esb.webservice.WebServicePublishException;
+import org.jboss.metadata.common.jboss.WebserviceDescriptionMetaData;
+import org.jboss.metadata.common.jboss.WebserviceDescriptionsMetaData;
 import org.jboss.metadata.javaee.spec.ParamValueMetaData;
 import org.jboss.metadata.web.jboss.JBossServletMetaData;
 import org.jboss.metadata.web.jboss.JBossServletsMetaData;
@@ -66,15 +68,12 @@
     
     /**
      * No-args constructor.
-     * 
-     * Sets the deployment stage to CLASSLOADER and set the output of 
-     * this deployer to {@link JSEArchiveMetaData}.
      */
     public EsbWebServiceDeployer()
     {
         super(EsbMetaData.class);
         setStage(DeploymentStages.POST_PARSE);
-        setOutput(JSEArchiveMetaData.class);
+        setOutput(JBossWebMetaData.class);
         setOutput(EsbMetaData.class);
     }
     
@@ -89,13 +88,14 @@
         final List<WebserviceInfo> endpointServices = esbMetaData.getModel().getWebserviceServices();
         if (endpointServices != null && endpointServices.size() > 0)
         {
-            log.info("Deploying webservices for : " + esbMetaData.getDeploymentName() + ", " + deploymentUnit.hashCode());
+            log.info("Deploying webservices for : " + esbMetaData.getDeploymentName());
             
             final JBossWebMetaData webMetaData = new JBossWebMetaData();
             final JBossServletsMetaData servlets = new JBossServletsMetaData();
             final List<ServletMappingMetaData> servletMappings = new ArrayList<ServletMappingMetaData>();
             final FiltersMetaData filters = new FiltersMetaData();
-            final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>() ;
+            final List<ContractReferencePublisher> publishers = new ArrayList<ContractReferencePublisher>() ;
+            WebserviceDescriptionsMetaData descriptions = new WebserviceDescriptionsMetaData();
                 
             try
             {
@@ -109,12 +109,10 @@
                     
                 URL webInfUrl = new URL(dynamicClassRoot.toExternalForm() + "/WEB-INF");
                 //VirtualFile webInfDir = MemoryFileFactory.createDirectory(webInfUrl);
-                // Add WEB-INF to the classpath
                 //deploymentUnit.addClassPath(webInfDir);
                     
                 URL classesUrl = new URL(webInfUrl + "/classes");
                 VirtualFile classesDir = MemoryFileFactory.createDirectory(classesUrl);
-                // Add WEB-INF/classes to the classpath
                 deploymentUnit.addClassPath(classesDir);
                     
                 final JAXWSProviderClassGenerator generator = new JAXWSProviderClassGenerator();
@@ -142,37 +140,52 @@
                     String servletClassName = serviceInfo.getClassName().replace('.', '/') + ".class";
                     URL servletClassUrl = new URL(classesUrl + "/" + servletClassName);
                     MemoryFileFactory.putFile(servletClassUrl, servletClass);
-                    log.info("Generated servlet" + servletClassUrl);
+                    log.info("Generated ws impl: " + servletClassUrl);
                         
                     servlets.add(createServlets(service, serviceInfo, generator, includeHandlers));
                     servletMappings.add(createServletMapping(serviceInfo));
-                        
-                    /*
-                    final String wsdl = ESBContractGenerator.generateWSDL(webserviceInfo, serviceInfo);
-                    URL wsdlUrl = new URL(dynamicClassRoot + "/" + serviceInfo.getWSDLFileName());
-                    log.info("WDSL : " + wsdlUrl);
-                    MemoryFileFactory.putFile(wsdlUrl, wsdl.getBytes());
-                    */
-                        
+                    
+                    WebserviceDescriptionMetaData description = new WebserviceDescriptionMetaData();
+                    description.setName(esbMetaData.getDeploymentName());
+                    description.setWebserviceDescriptionName(esbMetaData.getDeploymentName());
+                    description.setWsdlPublishLocation(serviceInfo.getWSDLFileName());
+                    descriptions.add(description);
+                    
                     final ContractReferencePublisher publisher = new ESBServiceContractPublisher(service, webserviceInfo.getDescription(), serviceInfo.getServletName());
                     publishers.add(publisher);
                 }
             }
             catch (final Exception e)
             {
-                    throw new DeploymentException("Failed to create webservice artifact", e);
+                throw new DeploymentException("Failed to create webservice artifact", e);
             }
                 
             webMetaData.setContextRoot(esbMetaData.getDeploymentName());
             webMetaData.setServlets(servlets);
             webMetaData.setServletMappings(servletMappings);
             webMetaData.setFilters(filters);
+            webMetaData.setWebserviceDescriptions(descriptions);
             esbMetaData.setPublishers(publishers);
             
             deploymentUnit.addAttachment(JBossWebMetaData.class, webMetaData);
         }
     }
     
+    public void undeploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) 
+    {
+        /*
+        try
+        {
+            final VirtualFile dynamicClassRoot = VFS.getRoot(new URL("vfsmemory", esbMetaData.getDeploymentName(), ""));
+            deploymentUnit.removeClassPath(dynamicClassRoot);
+        } 
+        catch (Exception e)
+        {
+            log.warn("Exception while removing dynamic vfs.", e);
+        }
+        */
+    }
+    
     private ServletMappingMetaData createServletMapping(ESBServiceEndpointInfo serviceInfo)
     {
         ServletMappingMetaData servletMapping = new ServletMappingMetaData();

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-04-15 04:01:20 UTC (rev 26032)
+++ labs/jbossesb/workspace/dbevenius/jbossas5/product/rosetta/src/org/jboss/soa/esb/listeners/deployers/mc/EsbWsdlDeployer.java	2009-04-15 06:14:43 UTC (rev 26033)
@@ -30,16 +30,21 @@
 import org.jboss.deployers.vfs.spi.structure.VFSDeploymentUnit;
 import org.jboss.internal.soa.esb.webservice.ESBContractGenerator;
 import org.jboss.internal.soa.esb.webservice.ESBServiceEndpointInfo;
-import org.jboss.metadata.web.jboss.JBossWebMetaData;
 import org.jboss.soa.esb.listeners.config.WebserviceInfo;
 import org.jboss.virtual.MemoryFileFactory;
 import org.jboss.virtual.VirtualFile;
-import org.jboss.wsf.spi.metadata.j2ee.JSEArchiveMetaData;
+import org.jboss.ws.metadata.umdm.UnifiedMetaData;
 
 /**
  * MC deployer that generates a wsdl and then adds this wsdl to 
  * a virtual memory file system.
  * <p/>
+ * It accepts an EsbMetaData instance and looks for the existence of any WebService (WS) 
+ * information.If WS information is found a wsdl will be generated and it will be added
+ * to the deployment unit as a metadata location. The wsdl file is added as a VirtualFile 
+ * to an in-memory virtual file system.
+ * <p/>
+ * 
  * This deployer is set at the POST_CLASSLOADER deployment stage as it requries
  * access to classloaders for generating the wsdl.
  * 
@@ -57,8 +62,7 @@
     {
         super(EsbMetaData.class);
         setStage(DeploymentStages.POST_CLASSLOADER);
-        setOutput(JSEArchiveMetaData.class);
-        setOutput(EsbMetaData.class);
+        setOutput(UnifiedMetaData.class);
     }
     
     public void create()
@@ -72,11 +76,11 @@
         final List<WebserviceInfo> endpointServices = esbMetaData.getModel().getWebserviceServices();
         if (endpointServices != null && endpointServices.size() > 0)
         {
-            log.info("Deploying webservices for : " + esbMetaData.getDeploymentName() + ", " + deploymentUnit.getClassPath());
-            
+            log.info("Deploying webservices for : " + esbMetaData.getDeploymentName());
             try
             {
-                URL dynamicClassRoot = new URL("vfsmemory", esbMetaData.getDeploymentName(), "");
+                URL dynamicClassRoot = new URL("vfsmemory", esbMetaData.getDeploymentName() + "_WSDL", "");
+                MemoryFileFactory.createRoot(dynamicClassRoot);
                 
                 for (WebserviceInfo webserviceInfo : endpointServices)
                 {
@@ -85,11 +89,11 @@
                     URL wsdlUrl = new URL(dynamicClassRoot + "/" + serviceInfo.getWSDLFileName());
                     
                     VirtualFile wsdlFile = MemoryFileFactory.putFile(wsdlUrl, wsdl.getBytes());
-                    deploymentUnit.addClassPath(wsdlFile);
-                    URL resource = deploymentUnit.getClassLoader().getResource(serviceInfo.getWSDLFileName());
-                    log.info("WDSL loaded with classloader: " + resource);
-                    log.info("WDSL deploymentUnit: " + deploymentUnit.getClassPath());
-                    log.info("WDSL : " + wsdlUrl);
+                    log.info("Added wsdl to deployment metadata location: " + wsdlFile.getParent());
+                    // As far as I can tell it Does not matter what location is used. The WS deployer will not use the
+                    // metadata location when searching for the wsdl file. 
+                    // We might need to set the wsdlLocation to a different one when generating the WS impl.
+                    deploymentUnit.appendMetaDataLocation(wsdlFile.getParent());
                 }
             }
             catch (final Exception e)
@@ -98,4 +102,19 @@
             }
         }
     }
+    
+    public void undeploy(final VFSDeploymentUnit deploymentUnit, final EsbMetaData esbMetaData) 
+    {
+        /*
+        try
+        {
+            final VirtualFile integration = VFS.getRoot(new URL("vfsmemory", esbMetaData.getDeploymentName(), ""));
+            deploymentUnit.removeClassPath(integration);
+        } 
+        catch (Exception e)
+        {
+            log.warn("Exception while removing dynamic vfs.", e);
+        }
+        */
+    }
 }




More information about the jboss-svn-commits mailing list