You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by gd...@apache.org on 2007/04/19 23:55:49 UTC

svn commit: r530561 - in /webservices/axis/branches/AXIS_1_4_FINAL: src/org/apache/axis/deployment/wsdd/ src/org/apache/axis/description/ src/org/apache/axis/message/ src/org/apache/axis/providers/java/ src/org/apache/axis/wsdl/symbolTable/ src/org/apa...

Author: gdaniels
Date: Thu Apr 19 14:55:47 2007
New Revision: 530561

URL: http://svn.apache.org/viewvc?view=rev&rev=530561
Log:
Fix a long-standing problem where we don't send the correct response element when dealing with wrapped doc/lit services.  Now we squirrel away the response QName in the Parameters object and in the WSDD, so it can be picked up by the RPCProvider.

Also fix interop WSDL endpoints, since Sun's endpoints seem to have disappeared.

TODO - merge this over to trunk

Modified:
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDConstants.java
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDOperation.java
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/description/OperationDesc.java
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/message/SOAPEnvelope.java
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/providers/java/RPCProvider.java
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/Parameters.java
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
    webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
    webservices/axis/branches/AXIS_1_4_FINAL/test/wsdl/interop/build.xml

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDConstants.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDConstants.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDConstants.java Thu Apr 19 14:55:47 2007
@@ -141,6 +141,7 @@
     public static final String ATTR_VALUE = "value";
     public static final String ATTR_LOCKED = "locked";
     public static final String ATTR_RETQNAME = "returnQName";
+    public static final String ATTR_RESPQNAME = "responseQName";
     public static final String ATTR_RETTYPE = "returnType";
     public static final String ATTR_RETITEMQNAME = "returnItemQName";
     public static final String ATTR_RETITEMTYPE = "returnItemType";

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDOperation.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDOperation.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/deployment/wsdd/WSDDOperation.java Thu Apr 19 14:55:47 2007
@@ -75,6 +75,10 @@
         if (retQNameStr != null && !retQNameStr.equals(""))
             desc.setReturnQName(XMLUtils.getQNameFromString(retQNameStr, e));
         
+        String respQNameStr = e.getAttribute(ATTR_RESPQNAME);
+        if (respQNameStr != null && !respQNameStr.equals(""))
+            desc.setResponseQName(XMLUtils.getQNameFromString(respQNameStr, e));
+
         String retTypeStr = e.getAttribute(ATTR_RETTYPE);
         if (retTypeStr != null && !retTypeStr.equals(""))
             desc.setReturnType(XMLUtils.getQNameFromString(retTypeStr, e));

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/description/OperationDesc.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/description/OperationDesc.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/description/OperationDesc.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/description/OperationDesc.java Thu Apr 19 14:55:47 2007
@@ -108,6 +108,8 @@
      */ 
     private OperationType mep = OperationType.REQUEST_RESPONSE;
 
+    private QName responseQName;
+
     /**
      * Default constructor.
      */
@@ -618,6 +620,15 @@
                 throw new IOException("Unable to deserialize the operation's method: "+ methodName);
             }
         }
+    }
+
+
+    public QName getResponseQName() {
+        return responseQName;
+    }
+
+    public void setResponseQName(QName responseQName) {
+        this.responseQName = responseQName;
     }
 }
 

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/message/SOAPEnvelope.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/message/SOAPEnvelope.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/message/SOAPEnvelope.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/message/SOAPEnvelope.java Thu Apr 19 14:55:47 2007
@@ -306,6 +306,7 @@
         }
         this.body = body;
         try {
+//            addChild(body);
             body.setParentElement(this);
         } catch (SOAPException ex) {
             // class cast should never fail when parent is a SOAPEnvelope

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/providers/java/RPCProvider.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/providers/java/RPCProvider.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/providers/java/RPCProvider.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/providers/java/RPCProvider.java Thu Apr 19 14:55:47 2007
@@ -319,13 +319,29 @@
         return operation;
     }
 
-    protected RPCElement createResponseBody(RPCElement body, MessageContext msgContext, OperationDesc operation, ServiceDesc serviceDesc, Object objRes, SOAPEnvelope resEnv, ArrayList outs) throws Exception
+    protected RPCElement createResponseBody(RPCElement body,
+                                            MessageContext msgContext,
+                                            OperationDesc operation,
+                                            ServiceDesc serviceDesc,
+                                            Object objRes,
+                                            SOAPEnvelope resEnv,
+                                            ArrayList outs) throws Exception
     {
         String methodName = body.getMethodName();
         /* Now put the result in the result SOAPEnvelope */
-        RPCElement resBody = new RPCElement(methodName + "Response");
+        QName respQName = operation.getResponseQName();
+        String localPart;
+        String namespaceURI;
+        if (respQName != null) {
+            localPart = respQName.getLocalPart();
+            namespaceURI = respQName.getNamespaceURI();
+        } else {
+            localPart = methodName + "Response";
+            namespaceURI = body.getNamespaceURI();
+        }
+        RPCElement resBody = new RPCElement(localPart);
         resBody.setPrefix(body.getPrefix());
-        resBody.setNamespaceURI(body.getNamespaceURI());
+        resBody.setNamespaceURI(namespaceURI);
         resBody.setEncodingStyle(msgContext.getEncodingStyle());
         try {
             // Return first

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/Parameters.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/Parameters.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/Parameters.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/Parameters.java Thu Apr 19 14:55:47 2007
@@ -16,6 +16,7 @@
 package org.apache.axis.wsdl.symbolTable;
 
 import javax.wsdl.OperationType;
+import javax.xml.namespace.QName;
 import java.util.Map;
 import java.util.Vector;
 
@@ -45,6 +46,13 @@
 
     /** Field signature */
     public String signature = null;
+
+    /**
+     * A place to store the response element QName in case this is a wrapped
+     * operation - this will end up reflected in the responseQName attribute of the
+     * operation tag in WSDD.
+     */
+    public QName responseQName;
 
     // The numbers of the respective parameters
 

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java Thu Apr 19 14:55:47 2007
@@ -1790,17 +1790,21 @@
             }
         }
 
+        if (wrapped) {
+            // Remember the appropriate response QName...
+            List outParts = output.getMessage().getOrderedParts(null);
+            QName respQName = ((Part)(outParts.get(0))).getElementName();
+            parameters.responseQName = respQName;
+        }
+
         // Some special case logic for JAX-RPC, but also to make things
         // nicer for the user.
         // If we have a single input and output with the same name
         // instead of: void echo(StringHolder inout)
         // Do this:  string echo(string in)
-        if (wrapped && (inputs.size() == 1) && (outputs.size() == 1)
-                &&
+        if (wrapped && (inputs.size() == 1) && (outputs.size() == 1) &&
                 Utils.getLastLocalPart(((Parameter) inputs.get(0)).getName()).equals(
-                Utils.getLastLocalPart(((Parameter) outputs.get(0)).getName()))
-                ) {
-
+                        Utils.getLastLocalPart(((Parameter) outputs.get(0)).getName()))) {
             // add the input and make sure its a IN not an INOUT
             addInishParm(inputs, null, 0, -1, parameters, false);
         } else {
@@ -2113,6 +2117,7 @@
                     // if (!literal)
                     // error...
                     param.setType(getElement(elementName));
+                    param.setQName(elementName);
                 } else {
 
                     // no type or element

Modified: webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java Thu Apr 19 14:55:47 2007
@@ -302,8 +302,6 @@
      * @param namespaceURI
      * @param localPart
      * @param javaType
-     * @param serializerFactory
-     * @param deserializerFactory
      * @param encodingStyle
      * @throws IOException
      */
@@ -550,6 +548,8 @@
                         returnType = Utils.getXSIType(params.returnParam);
                     }
 
+                    QName responseQName = params.responseQName;
+
                     // Get the operations faults
                     Map faultMap = bEntry.getFaults();
                     ArrayList faults = null;
@@ -562,7 +562,7 @@
                     String SOAPAction = Utils.getOperationSOAPAction(bindingOper);
 
                     // Write the operation metadata
-                    writeOperation(pw, javaOperName, elementQName, returnQName,
+                    writeOperation(pw, javaOperName, elementQName, responseQName, returnQName,
                             returnType, params, binding.getQName(),
                             faults, SOAPAction);
                 }
@@ -612,8 +612,8 @@
      * @param faults
      */
     protected void writeOperation(PrintWriter pw, String javaOperName,
-                                  QName elementQName, QName returnQName,
-                                  QName returnType, Parameters params,
+                                  QName elementQName, QName responseQName,
+                                  QName returnQName, QName returnType, Parameters params,
                                   QName bindingQName, ArrayList faults,
                                   String SOAPAction) {
 
@@ -623,6 +623,13 @@
             pw.print(" qname=\""
                     + Utils.genQNameAttributeString(elementQName, "operNS")
                     + "\"");
+        }
+
+        if (responseQName != null) {
+            pw.print(" responseQName=\""
+                    + Utils.genQNameAttributeStringWithLastLocalPart(responseQName, "respNS")
+                    + "\"");
+
         }
 
         if (returnQName != null) {

Modified: webservices/axis/branches/AXIS_1_4_FINAL/test/wsdl/interop/build.xml
URL: http://svn.apache.org/viewvc/webservices/axis/branches/AXIS_1_4_FINAL/test/wsdl/interop/build.xml?view=diff&rev=530561&r1=530560&r2=530561
==============================================================================
--- webservices/axis/branches/AXIS_1_4_FINAL/test/wsdl/interop/build.xml (original)
+++ webservices/axis/branches/AXIS_1_4_FINAL/test/wsdl/interop/build.xml Thu Apr 19 14:55:47 2007
@@ -178,7 +178,7 @@
     </wsdl2java>
     <!-- SOAPBuilders Interoperability Lab "Round 2" -->
     <!--     http://www.whitemesa.com/interop.htm    -->
-    <wsdl2java url="http://soapinterop.java.sun.com/round2/base?WSDL"
+    <wsdl2java url="http://www.cs.fsu.edu/~engelen/interop2.wsdl"
                output="${axis.home}/build/work"
                deployscope="none"
                serverSide="yes"
@@ -189,7 +189,7 @@
         <mapping namespace="http://soapinterop.org/" package="interop.test"/>
         <mapping namespace="http://soapinterop.org/xsd" package="interop.test"/>
     </wsdl2java>
-    <wsdl2java url="http://soapinterop.java.sun.com/round2/groupb?WSDL"
+    <wsdl2java url="http://www.cs.fsu.edu/~engelen/interop2B.wsdl"
                output="${axis.home}/build/work"
                deployscope="none"
                serverSide="yes"
@@ -263,7 +263,7 @@
     <!-- Step 8.  Test second generated client against  -->
     <!--          pre-built server                      -->
     <!-- Steps 1, 2 and 4: -->
-    <wsdl2java url="http://soapinterop.java.sun.com/round3/groupd/import1?WSDL"
+    <wsdl2java url="http://www.whitemesa.com/r3/import1.wsdl"
                output="${axis.home}/build/work"
                serverSide="yes">
         <mapping namespace="http://soapinterop.org/" package="test.wsdl.interop3.import1"/>
@@ -303,7 +303,7 @@
     <!-- SOAP Builder's round III web services -->
     <!-- interoperability testing:  import2    -->
     <!-- Steps 1, 2 and 4: -->
-    <wsdl2java url="http://soapinterop.java.sun.com/round3/groupd/import2?WSDL"
+    <wsdl2java url="http://www.whitemesa.com/r3/import2.wsdl"
                output="${axis.home}/build/work"
                serverSide="yes">
         <mapping namespace="http://soapinterop.org/main/" package="test.wsdl.interop3.import2"/>
@@ -342,6 +342,7 @@
     <!-- SOAP Builder's round III web services       -->
     <!-- interoperability testing:  absolute import2 -->
     <!-- Steps 1, 2 and 4: -->
+<!--
     <wsdl2java url="http://www.dolphinharbor.org/services/R3Import2/service.wsdl"
                output="${axis.home}/build/work"
                serverSide="yes">
@@ -353,6 +354,7 @@
       <classpath refid="classpath" />
       <include name="test/wsdl/interop3/absimport2/*.java" />
     </javac>
+-->
     <!-- Step 3:  see test/wsdl/interop3/Import2TestCase.java -->
     <!-- Step 5:  see test/wsdl/interop3/Import2TestCase.java -->
     <!-- Step 6:  -->
@@ -378,7 +380,7 @@
     <!-- SOAP Builder's round III web services -->
     <!-- interoperability testing:  import3    -->
     <!-- Steps 1, 2 and 4: -->
-    <wsdl2java url="http://soapinterop.java.sun.com/round3/groupd/import3?WSDL"
+    <wsdl2java url="http://www.whitemesa.com/r3/import3.wsdl"
                output="${axis.home}/build/work"
                serverSide="yes">
         <mapping namespace="http://soapinterop.org/main2/" package="test.wsdl.interop3.import3"/>



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org