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

jbossws-commits at lists.jboss.org jbossws-commits at lists.jboss.org
Fri Oct 10 09:39:10 EDT 2008


Author: alessio.soldano at jboss.com
Date: 2008-10-10 09:39:10 -0400 (Fri, 10 Oct 2008)
New Revision: 8431

Modified:
   stack/metro/trunk/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java
Log:
[JBWS-2129] Fixing @SOAPBinding retrieval


Modified: stack/metro/trunk/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java
===================================================================
--- stack/metro/trunk/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java	2008-10-10 13:01:06 UTC (rev 8430)
+++ stack/metro/trunk/modules/server/src/main/java/org/jboss/wsf/stack/metro/DeploymentDescriptorParserExt.java	2008-10-10 13:39:10 UTC (rev 8431)
@@ -308,7 +308,7 @@
             Invoker invoker = createInvoker(implementorClass);
             
             //Generate wrappers
-            if (isWrapperGenerationRequired(implementorClass))
+            if (isWrapperGenerationRequired(implementorClass, reader, this.classLoader))
             {
                WsgenWrapperGenerator wrapperGenerator = new WsgenWrapperGenerator(System.out);
                ClassLoader newClassLoader = wrapperGenerator.generate(implementationName, classLoader, archiveFile.toURL());
@@ -326,15 +326,26 @@
       return adapters;
    }
    
-   private boolean isWrapperGenerationRequired(Class<?> endpoint)
+   private boolean isWrapperGenerationRequired(Class<?> endpoint, XMLStreamReader reader, ClassLoader classLoader)
    {
       WebService webServiceAnnotation = endpoint.getAnnotation(WebService.class);
       if (webServiceAnnotation == null)
          return false;
       String wsdlLocation = webServiceAnnotation.wsdlLocation();
+      String endpointInterface = webServiceAnnotation.endpointInterface();
       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);
+      javax.jws.soap.SOAPBinding soapBinding;
+      if (endpointInterface == null || "".equalsIgnoreCase(endpointInterface))
+      {
+         soapBinding = endpoint.getAnnotation(javax.jws.soap.SOAPBinding.class);
+      }
+      else
+      {
+         //getting the annotation from the SEI
+         Class<?> sei = getImplementorClass(endpointInterface, reader, classLoader);
+         soapBinding = sei.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()));




More information about the jbossws-commits mailing list