Author: alessio.soldano(a)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(a)jboss.org
+ * @author alessio.soldano(a)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)
{
Show replies by date