[jbossws-commits] JBossWS SVN: r8408 - stack/metro/branches/asoldano/modules/server/src/main/java/org/jboss/wsf/stack/metro.

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Thu Oct 9 07:01:27 EDT 2008


Author: alessio.soldano at jboss.com
Date: 2008-10-09 07:01:27 -0400 (Thu, 09 Oct 2008)
New Revision: 8408

Modified:
   stack/metro/branches/asoldano/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java
Log:
[JBWS-2129] Invoking wrapper generation only when required


Modified: stack/metro/branches/asoldano/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java
===================================================================
--- stack/metro/branches/asoldano/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java	2008-10-09 08:15:27 UTC (rev 8407)
+++ stack/metro/branches/asoldano/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java	2008-10-09 11:01:27 UTC (rev 8408)
@@ -27,7 +27,6 @@
 import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -37,6 +36,10 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.jws.soap.SOAPBinding.Style;
+import javax.jws.soap.SOAPBinding.Use;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamConstants;
 import javax.xml.stream.XMLStreamException;
@@ -79,6 +82,7 @@
  * @author WS Development Team
  * @author Kohsuke Kawaguchi
  * @author Thomas.Diesler at jboss.org
+ * @author alessio.soldano at jboss.org
  * @since 10-May-2007
  */
 public class DeploymentDescriptorParserExt<A>
@@ -304,9 +308,12 @@
             Invoker invoker = createInvoker(implementorClass);
             
             //Generate wrappers
-            WsgenWrapperGenerator wrapperGenerator = new WsgenWrapperGenerator(System.out);
-            ClassLoader newClassLoader = wrapperGenerator.generate(implementationName, classLoader, archiveFile.toURL());
-            Thread.currentThread().setContextClassLoader(newClassLoader);
+            if (isWrapperGenerationRequired(implementorClass))
+            {
+               WsgenWrapperGenerator wrapperGenerator = new WsgenWrapperGenerator(System.out);
+               ClassLoader newClassLoader = wrapperGenerator.generate(implementationName, classLoader, archiveFile.toURL());
+               Thread.currentThread().setContextClassLoader(newClassLoader);
+            }
             
             WSEndpoint<?> endpoint = WSEndpoint.create(implementorClass, !handlersSetInDD, invoker,
               serviceName, portName, container, binding, primaryWSDL, docs.values(), createEntityResolver(this.loader), false);
@@ -318,6 +325,20 @@
          }
       return adapters;
    }
+   
+   private boolean isWrapperGenerationRequired(Class<?> endpoint)
+   {
+      WebService webServiceAnnotation = endpoint.getAnnotation(WebService.class);
+      if (webServiceAnnotation == null)
+         return false;
+      String wsdlLocation = webServiceAnnotation.wsdlLocation();
+      if (wsdlLocation != null && !"".equals(wsdlLocation))
+         return false; //provided wsdlLocation means a top-down (contract first) development is used, thus the user should use wsimport
+      javax.jws.soap.SOAPBinding soapBinding = endpoint.getAnnotation(javax.jws.soap.SOAPBinding.class);
+      if (soapBinding == null)
+         return true; //no @SOAPBinding means default settings, ie. doc/lit wrapped
+      return !(ParameterStyle.BARE.equals(soapBinding.parameterStyle()) || Style.RPC.equals(soapBinding.style()) || Use.ENCODED.equals(soapBinding.use()));
+   }
 
    protected Invoker createInvoker(Class<?> implementorClass)
    {




More information about the jbossws-commits mailing list