You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2009/11/05 17:56:02 UTC

svn commit: r833079 - in /cxf/trunk: rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/ tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/ tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/ws...

Author: dkulp
Date: Thu Nov  5 16:53:26 2009
New Revision: 833079

URL: http://svn.apache.org/viewvc?rev=833079&view=rev
Log:
[CXF-2522] wsdl2java not honoring jaxws:parameter extension for wrapped
elements

Modified:
    cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptorTest.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBindingParser.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSParameter.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
    cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java

Modified: cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptorTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptorTest.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptorTest.java (original)
+++ cxf/trunk/rt/ws/rm/src/test/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptorTest.java Thu Nov  5 16:53:26 2009
@@ -406,6 +406,7 @@
     private SoapMessage setUpInboundMessage(String resource) throws XMLStreamException {
         Message message = new MessageImpl();
         SoapMessage soapMessage = new SoapMessage(message);
+        message.put(Message.SCHEMA_VALIDATION_ENABLED, false);
         InputStream is = RMSoapInterceptorTest.class.getResourceAsStream(resource);
         assertNotNull(is);
         XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(is);

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/CustomizationParser.java Thu Nov  5 16:53:26 2009
@@ -648,8 +648,8 @@
                 binding1.setJaxwsClass(binding2.getJaxwsClass());
             }
 
-            if (binding2.getJaxwsPara() != null) {
-                binding1.setJaxwsPara(binding2.getJaxwsPara());
+            if (binding2.getJaxwsParas() != null) {
+                binding1.setJaxwsParas(binding2.getJaxwsParas());
             }
             return binding1;
         }

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBinding.java Thu Nov  5 16:53:26 2009
@@ -20,6 +20,8 @@
 package org.apache.cxf.tools.wsdlto.frontend.jaxws.customization;
 
 import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
 
 import javax.wsdl.extensions.ExtensibilityElement;
 import javax.xml.namespace.QName;
@@ -49,7 +51,7 @@
     
     private String classJavaDoc;
 
-    private JAXWSParameter jaxwsPara;
+    private List<JAXWSParameter> jaxwsPara;
 
     private JAXWSClass jaxwsClass;
 
@@ -123,11 +125,17 @@
         return this.packageName;
     }
 
-    public void setJaxwsPara(JAXWSParameter para) {
-        jaxwsPara = para;
+    public void addJaxwsPara(JAXWSParameter para) {
+        if (jaxwsPara == null) {
+            jaxwsPara = new ArrayList<JAXWSParameter>();
+        }
+        jaxwsPara.add(para);
     }
 
-    public JAXWSParameter getJaxwsPara() {
+    public void setJaxwsParas(List<JAXWSParameter> p) {
+        jaxwsPara = new ArrayList<JAXWSParameter>(p);
+    }
+    public List<JAXWSParameter> getJaxwsParas() {
         return jaxwsPara;
     }
 

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBindingParser.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBindingParser.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBindingParser.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSBindingParser.java Thu Nov  5 16:53:26 2009
@@ -25,6 +25,7 @@
 import javax.wsdl.WSDLException;
 import javax.wsdl.extensions.ExtensionRegistry;
 import javax.xml.namespace.NamespaceContext;
+import javax.xml.namespace.QName;
 import javax.xml.xpath.XPath;
 import javax.xml.xpath.XPathConstants;
 import javax.xml.xpath.XPathExpressionException;
@@ -36,6 +37,7 @@
 
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.helpers.DOMUtils;
 import org.apache.cxf.tools.common.ToolConstants;
 import org.apache.cxf.tools.common.ToolException;
@@ -105,7 +107,9 @@
                     String partPath = "//" +  childElement.getAttribute("part");
                     Node node = queryXPathNode(element.getOwnerDocument().getDocumentElement(), partPath);
                     String messageName = "";
+                    String partName = "";
                     if (node != null) {
+                        partName = ((Element)node).getAttribute("name");
                         Node messageNode = node.getParentNode();
                         if (messageNode != null) {
                             Element messageEle = (Element)messageNode;
@@ -114,9 +118,20 @@
                     }
 
                     String name = childElement.getAttribute("name");
-                    String elementName = childElement.getAttribute("childElementName");
-                    JAXWSParameter jpara = new JAXWSParameter(messageName, elementName, name);
-                    jaxwsBinding.setJaxwsPara(jpara);
+                    String elementNameString = childElement.getAttribute("childElementName");
+                    QName elementName = null;
+                    if (!StringUtils.isEmpty(elementNameString)) {
+                        String ns = "";
+                        if (elementNameString.indexOf(':') != -1) {
+                            ns = elementNameString.substring(0, elementNameString.indexOf(':'));
+                            ns = childElement.lookupNamespaceURI(ns);
+                            elementNameString = elementNameString
+                                .substring(elementNameString.indexOf(':') + 1);
+                        }
+                        elementName = new QName(ns, elementNameString);
+                    }
+                    JAXWSParameter jpara = new JAXWSParameter(messageName, partName, elementName, name);
+                    jaxwsBinding.addJaxwsPara(jpara);
                 } else if (isJAXWSClass(child)) {
                     Element childElement = (Element)child;
                     String clzName = childElement.getAttribute("name");

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSParameter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSParameter.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSParameter.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/customization/JAXWSParameter.java Thu Nov  5 16:53:26 2009
@@ -18,13 +18,17 @@
  */
 package org.apache.cxf.tools.wsdlto.frontend.jaxws.customization;
 
+import javax.xml.namespace.QName;
+
 public class JAXWSParameter {
     private String name;
-    private String eleName;
+    private String part;
+    private QName eleName;
     private String messageName;
 
-    public JAXWSParameter(String msgName , String elementName, String name) {
+    public JAXWSParameter(String msgName, String part, QName elementName, String name) {
         this.messageName = msgName;
+        this.setPart(part);
         this.eleName = elementName;
         this.name = name;
     }
@@ -37,11 +41,19 @@
         return name;
     }
 
-    public void setElementName(String elementName) {
+    public void setPart(String part) {
+        this.part = part;
+    }
+
+    public String getPart() {
+        return part;
+    }
+
+    public void setElementName(QName elementName) {
         this.eleName = elementName;
     }
 
-    public String getElementName() {
+    public QName getElementName() {
         return eleName;
     }
 

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ParameterProcessor.java Thu Nov  5 16:53:26 2009
@@ -43,6 +43,8 @@
 import org.apache.cxf.tools.common.model.JavaReturn;
 import org.apache.cxf.tools.common.model.JavaType;
 import org.apache.cxf.tools.wsdlto.core.DataBindingProfile;
+import org.apache.cxf.tools.wsdlto.frontend.jaxws.customization.JAXWSBinding;
+import org.apache.cxf.tools.wsdlto.frontend.jaxws.customization.JAXWSParameter;
 import org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.annotator.WebParamAnnotator;
 import org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.annotator.XmlJavaTypeAdapterAnnotator;
 import org.apache.cxf.tools.wsdlto.frontend.jaxws.processor.internal.annotator.XmlListAnotator;
@@ -203,11 +205,20 @@
             }
         }
 
+        JAXWSBinding mBinding = inputMessage.getOperation().getExtensor(JAXWSBinding.class);
         for (MessagePartInfo part : inputMessage.getMessageParts()) {
             if (isOutOfBandHeader(part) && !requireOutOfBandHeader()) {
                 continue;
             }
-            addParameter(method, getParameterFromPart(method, part, JavaType.Style.IN));
+            JavaParameter param = getParameterFromPart(method, part, JavaType.Style.IN);
+            if (mBinding != null && mBinding.getJaxwsParas() != null) {
+                for (JAXWSParameter jwp : mBinding.getJaxwsParas()) {
+                    if (part.getName().getLocalPart().equals(jwp.getPart())) {
+                        param.setName(jwp.getName());
+                    }
+                }
+            }
+            addParameter(method, param);
         }
     }
 
@@ -227,9 +238,17 @@
             && countOutOfBandHeader(inputMessage) == 0) {
             return;
         }
+        JAXWSBinding mBinding = inputMessage.getOperation().getExtensor(JAXWSBinding.class);
         for (QName item : wrappedElements) {
             JavaParameter jp = getParameterFromQName(part.getElementQName(),
                                   item, JavaType.Style.IN, part);
+            if (mBinding != null && mBinding.getJaxwsParas() != null) {
+                for (JAXWSParameter jwsp : mBinding.getJaxwsParas()) {
+                    if (item.equals(jwsp.getElementName())) {
+                        jp.setName(jwsp.getName());
+                    }
+                }
+            }
             
             if (StringUtils.isEmpty(part.getConcreteName().getNamespaceURI())) { 
                 jp.setTargetNamespace("");
@@ -296,8 +315,19 @@
             } else {
                 processReturn(method, null);
             }
+            JAXWSBinding mBinding = outputMessage.getOperation().getExtensor(JAXWSBinding.class);
             for (MessagePartInfo part : outParts) {
-                addParameter(method, getParameterFromPart(method, part, JavaType.Style.OUT));
+
+                JavaParameter param = getParameterFromPart(method, part, JavaType.Style.OUT);
+                if (mBinding != null && mBinding.getJaxwsParas() != null) {
+                    for (JAXWSParameter jwp : mBinding.getJaxwsParas()) {
+                        if (part.getName().getLocalPart().equals(jwp.getPart())) {
+                            param.setName(jwp.getName());
+                        }
+                    }
+                }
+
+                addParameter(method, param);
             }
         } else {
             processReturn(method, null);
@@ -444,6 +474,16 @@
                 if (!qualified) {
                     jp.setTargetNamespace("");
                 }
+                
+                JAXWSBinding mBinding = outputMessage.getOperation().getExtensor(JAXWSBinding.class);
+                if (mBinding != null && mBinding.getJaxwsParas() != null) {
+                    for (JAXWSParameter jwsp : mBinding.getJaxwsParas()) {
+                        if (outElement.equals(jwsp.getElementName())) {
+                            jp.setName(jwsp.getName());
+                        }
+                    }
+                }
+
                 addParameter(method, jp);
             }
         }

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/main/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/processor/internal/ServiceProcessor.java Thu Nov  5 16:53:26 2009
@@ -343,8 +343,8 @@
 
         if (bopBinding != null && bopBinding.isEnableMime()) {
             enableOpMime = true;
-            if (bopBinding.getJaxwsPara() != null) {
-                jaxwsBinding.setJaxwsPara(bopBinding.getJaxwsPara());
+            if (bopBinding.getJaxwsParas() != null) {
+                jaxwsBinding.setJaxwsParas(bopBinding.getJaxwsParas());
             }
         }
         JavaInterface jf = null;

Modified: cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java?rev=833079&r1=833078&r2=833079&view=diff
==============================================================================
--- cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java (original)
+++ cxf/trunk/tools/wsdlto/frontend/jaxws/src/test/java/org/apache/cxf/tools/wsdlto/frontend/jaxws/wsdl11/JAXWSDefinitionBuilderTest.java Thu Nov  5 16:53:26 2009
@@ -82,11 +82,12 @@
         assertEquals("Customized method name does not parsered", "echoMeOneWay", binding.getMethodName());
 
 
-        assertEquals("Customized parameter element name does not parsered", "tns:number1", binding
-            .getJaxwsPara().getElementName());
+        assertEquals("Customized parameter element name does not parsered", "number1", binding
+            .getJaxwsParas().get(0).getElementName().getLocalPart());
         assertEquals("Customized parameter message name does not parsered", "greetMeOneWayRequest", binding
-            .getJaxwsPara().getMessageName());
-        assertEquals("customized parameter name does not parsered", "num1", binding.getJaxwsPara().getName());
+            .getJaxwsParas().get(0).getMessageName());
+        assertEquals("customized parameter name does not parsered", "num1",
+                     binding.getJaxwsParas().get(0).getName());
     }
 
 
@@ -129,11 +130,12 @@
         assertEquals("Customized method name does not parsered", "echoMeOneWay", binding.getMethodName());
 
 
-        assertEquals("Customized parameter element name does not parsered", "tns:number1", binding
-            .getJaxwsPara().getElementName());
+        assertEquals("Customized parameter element name does not parsered", "number1", binding
+            .getJaxwsParas().get(0).getElementName().getLocalPart());
         assertEquals("Customized parameter message name does not parsered", "greetMeOneWayRequest", binding
-            .getJaxwsPara().getMessageName());
-        assertEquals("customized parameter name does not parsered", "num1", binding.getJaxwsPara().getName());
+            .getJaxwsParas().get(0).getMessageName());
+        assertEquals("customized parameter name does not parsered", "num1",
+                     binding.getJaxwsParas().get(0).getName());
     }
 
     // tests the error case described in JIRA CXF-556