[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