You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by bu...@apache.org on 2002/10/08 22:33:25 UTC

cvs commit: xml-axis/java/test/wsdl/inheritance InheritanceTestCase.java

butek       2002/10/08 13:33:25

  Modified:    java/samples/echo Tag: explicitHeaderWork deploy.wsdd
               java/src/org/apache/axis/client Tag: explicitHeaderWork
                        Call.java
               java/src/org/apache/axis/description Tag: explicitHeaderWork
                        OperationDesc.java
               java/src/org/apache/axis/message Tag: explicitHeaderWork
                        RPCElement.java RPCHandler.java
               java/src/org/apache/axis/wsdl/symbolTable Tag:
                        explicitHeaderWork SymbolTable.java
               java/src/org/apache/axis/wsdl/toJava Tag: explicitHeaderWork
                        JavaDeployWriter.java JavaSkelWriter.java
                        JavaStubWriter.java
               java/test/wsdl/inheritance Tag: explicitHeaderWork
                        InheritanceTestCase.java
  Added:       java/test/wsdl/header Tag: explicitHeaderWork build.xml
                        header.wsdl
  Log:
  Output (and return) headers now work.
  
  To get these to work, we had to explicitly define the return QName so that
  it could be gathered either from the header or the body by name.  With this
  change, problems in two tests were exposed:
  - samples/echo test failed because it wasn't defining all operations.
  - test/wsdl/inheritance failed.  It does WSDL2Java->Java2WSDL->
  WSDL2Java.  We lose the return name through this process and the test
  case was using the Locator from the FIRST WSDL2Java when it should
  have been using the Locator from the SECOND WSDL2Java.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.23.6.1  +30 -0     xml-axis/java/samples/echo/deploy.wsdd
  
  Index: deploy.wsdd
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/samples/echo/deploy.wsdd,v
  retrieving revision 1.23
  retrieving revision 1.23.6.1
  diff -u -r1.23 -r1.23.6.1
  --- deploy.wsdd	2 Sep 2002 18:20:05 -0000	1.23
  +++ deploy.wsdd	8 Oct 2002 20:33:23 -0000	1.23.6.1
  @@ -164,5 +164,35 @@
         <operation name="echoMapArray" returnQName="return" returnType="RTypeNS:ArrayOf_apachesoap_Map" xmlns:RTypeNS="http://soapinterop.org/" >
           <parameter name="input" type="tns:ArrayOf_apachesoap_Map" xmlns:tns="http://soapinterop.org/"/>
         </operation>
  +      <operation name="echoToken" qname="operNS:echoToken" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:token" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputToken" type="tns:token" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoNormalizedString" qname="operNS:echoNormalizedString" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:normalizedString" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputNormalizedString" type="tns:normalizedString" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoUnsignedLong" qname="operNS:echoUnsignedLong" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedLong" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputUnsignedLong" type="tns:unsignedLong" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoUnsignedInt" qname="operNS:echoUnsignedInt" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedInt" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputUnsignedInt" type="tns:unsignedInt" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoUnsignedShort" qname="operNS:echoUnsignedShort" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedShort" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputUnsignedShort" type="tns:unsignedShort" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoUnsignedByte" qname="operNS:echoUnsignedByte" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:unsignedByte" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputUnsignedByte" type="tns:unsignedByte" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoNonNegativeInteger" qname="operNS:echoNonNegativeInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:nonNegativeInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputNonNegativeInteger" type="tns:nonNegativeInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoPositiveInteger" qname="operNS:echoPositiveInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:positiveInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputPositiveInteger" type="tns:positiveInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoNonPositiveInteger" qname="operNS:echoNonPositiveInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:nonPositiveInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputNonPositiveInteger" type="tns:nonPositiveInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
  +      <operation name="echoNegativeInteger" qname="operNS:echoNegativeInteger" xmlns:operNS="http://soapinterop.org/" returnQName="return" returnType="rtns:negativeInteger" xmlns:rtns="http://www.w3.org/2001/XMLSchema" >
  +        <parameter name="inputNegativeInteger" type="tns:negativeInteger" xmlns:tns="http://www.w3.org/2001/XMLSchema"/>
  +      </operation>
     </service>
   </deployment>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.180.4.4 +39 -12    xml-axis/java/src/org/apache/axis/client/Call.java
  
  Index: Call.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/client/Call.java,v
  retrieving revision 1.180.4.3
  retrieving revision 1.180.4.4
  diff -u -r1.180.4.3 -r1.180.4.4
  --- Call.java	4 Oct 2002 20:20:55 -0000	1.180.4.3
  +++ Call.java	8 Oct 2002 20:33:23 -0000	1.180.4.4
  @@ -199,9 +199,6 @@
       // The desired return Java type, so we can do conversions if needed
       private Class              returnJavaType  = null;
   
  -    // If a parameter is sent as a header, this flag will be set to true;
  -    private boolean            headerParameters = false;
  -
       public static final String SEND_TYPE_ATTR    = "send_type_attr" ;
       public static final String TRANSPORT_NAME    = "transport_name" ;
       public static final String TRANSPORT_PROPERTY= "java.protocol.handler.pkgs";
  @@ -837,33 +834,47 @@
       }
   
       /**
  -     * Adds a parameter type as a soap:header.  Note that we do not
  -     * currently support an INOUT parameter split between header and
  -     * body of the soap message.  It's either header both ways or
  -     * body both ways.
  +     * Adds a parameter type as a soap:header.
  +     * @param paramName - Name of the parameter
  +     * @param xmlType - XML datatype of the parameter
  +     * @param javaType - The Java class of the parameter
  +     * @param parameterMode - Mode of the parameter-whether IN, OUT or INOUT
  +     * @param headerMode - Mode of the header.  Even if this is an INOUT
  +     *                     parameter, it need not be in the header in both
  +     *                     directions.
  +     * @exception JAXRPCException - if isParameterAndReturnSpecRequired returns
  +     *                              false, then addParameter MAY throw
  +     *                              JAXRPCException....actually Axis allows
  +     *                              modification in such cases
        */
       public void addParameterAsHeader(QName paramName, QName xmlType,
  -            Class javaType, ParameterMode parameterMode) {
  +            Class javaType, ParameterMode parameterMode,
  +            ParameterMode headerMode) {
           ParameterDesc param = new ParameterDesc();
           param.setQName(paramName);
           param.setTypeQName(xmlType);
           param.setJavaType(javaType);
           if (parameterMode == ParameterMode.IN) {
               param.setMode(ParameterDesc.IN);
  -            param.setInHeader(true);
           }
           else if (parameterMode == ParameterMode.INOUT) {
               param.setMode(ParameterDesc.INOUT);
  -            param.setInHeader(true);
  -            param.setOutHeader(true);
           }
           else if (parameterMode == ParameterMode.OUT) {
               param.setMode(ParameterDesc.OUT);
  +        }
  +        if (headerMode == ParameterMode.IN) {
  +            param.setInHeader(true);
  +        }
  +        else if (headerMode == ParameterMode.INOUT) {
  +            param.setInHeader(true);
  +            param.setOutHeader(true);
  +        }
  +        else if (headerMode == ParameterMode.OUT) {
               param.setOutHeader(true);
           }
           operation.addParameter(param);
           parmAndRetReq = true;
  -        headerParameters = true;
       } // addParameterAsHeader
   
       /**
  @@ -931,6 +942,22 @@
           returnJavaType = javaType;
           operation.setReturnClass(javaType);  // Use specified type as the operation return
       }
  +
  +    /**
  +     * Set the return type as a header
  +     */
  +    public void setReturnTypeAsHeader(QName xmlType) {
  +        setReturnType(xmlType);
  +        operation.setReturnHeader(true);
  +    } // setReturnTypeAsHeader
  +
  +    /**
  +     * Set the return type as a header
  +     */
  +    public void setReturnTypeAsHeader(QName xmlType, Class javaType) {
  +        setReturnType(xmlType, javaType);
  +        operation.setReturnHeader(true);
  +    } // setReturnTypeAsHeader
   
       /**
        * Returns the QName of the type of the return value of this Call - or null if
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.23.4.3  +6 -0      xml-axis/java/src/org/apache/axis/description/OperationDesc.java
  
  Index: OperationDesc.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/description/OperationDesc.java,v
  retrieving revision 1.23.4.2
  retrieving revision 1.23.4.3
  diff -u -r1.23.4.2 -r1.23.4.3
  --- OperationDesc.java	4 Oct 2002 20:20:56 -0000	1.23.4.2
  +++ OperationDesc.java	8 Oct 2002 20:33:23 -0000	1.23.4.3
  @@ -306,10 +306,16 @@
           this.method = method;
       }
   
  +    /**
  +     * Is the return value in the header of the response message?
  +     */
       public boolean isReturnHeader() {
           return returnDesc.isOutHeader();
       }
   
  +    /**
  +     * Set whether the return value is in the response message.
  +     */
       public void setReturnHeader(boolean value) {
           returnDesc.setOutHeader(value);
       }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.76.4.4  +2 -2      xml-axis/java/src/org/apache/axis/message/RPCElement.java
  
  Index: RPCElement.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCElement.java,v
  retrieving revision 1.76.4.3
  retrieving revision 1.76.4.4
  diff -u -r1.76.4.3 -r1.76.4.4
  --- RPCElement.java	4 Oct 2002 20:20:56 -0000	1.76.4.3
  +++ RPCElement.java	8 Oct 2002 20:33:24 -0000	1.76.4.4
  @@ -164,7 +164,7 @@
           // We're going to need this below, so create one.
           RPCHandler rpcHandler = new RPCHandler(this, isResponse);
   
  -        if (operations != null && !msgContext.isClient()) {
  +        if (operations != null) {
               int numParams = (getChildren() == null) ? 0 : getChildren().size();
   
               SAXException savedException = null;
  @@ -248,7 +248,7 @@
   
               if (savedException != null) {
                   throw savedException;
  -            } else {
  +            } else if (!msgContext.isClient()) {
                   throw new SAXException(
                       Messages.getMessage("noSuchOperation", name));
               }
  
  
  
  1.65.4.2  +1 -1      xml-axis/java/src/org/apache/axis/message/RPCHandler.java
  
  Index: RPCHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/message/RPCHandler.java,v
  retrieving revision 1.65.4.1
  retrieving revision 1.65.4.2
  diff -u -r1.65.4.1 -r1.65.4.2
  --- RPCHandler.java	2 Oct 2002 20:39:06 -0000	1.65.4.1
  +++ RPCHandler.java	8 Oct 2002 20:33:24 -0000	1.65.4.2
  @@ -216,6 +216,7 @@
               } else {
                   paramDesc = operation.getInputParamByQName(qname);
               }
  +
               
               // If that didn't work, try position
               // FIXME : Do we need to be in EITHER named OR positional
  @@ -230,7 +231,6 @@
                       paramDesc = operation.getParameter(params.size() - 1);
                   }
               }
  -            
               
               if (paramDesc == null) {
                   throw new SAXException(Messages.getMessage("noParmDesc"));
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.41.6.4  +2 -1      xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java
  
  Index: SymbolTable.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/symbolTable/SymbolTable.java,v
  retrieving revision 1.41.6.3
  retrieving revision 1.41.6.4
  diff -u -r1.41.6.3 -r1.41.6.4
  --- SymbolTable.java	4 Oct 2002 20:20:57 -0000	1.41.6.3
  +++ SymbolTable.java	8 Oct 2002 20:33:24 -0000	1.41.6.4
  @@ -996,7 +996,7 @@
                   }
               }
           }
  -    } // populate Parameters
  +    } // populateParameters
   
       /**
        * For the given operation, this method returns the parameter info conveniently collated.
  @@ -1112,6 +1112,7 @@
           // out parameters.
           if (outputs.size() == 1) {
               parameters.returnParam = (Parameter)outputs.get(0);
  +            parameters.returnParam.setMode(Parameter.OUT);
               if (parameters.returnParam.getType() instanceof DefinedElement) {
                   parameters.returnParam.setQName(
                           ((DefinedElement)parameters.returnParam.getType())
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.65.4.4  +3 -0      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java
  
  Index: JavaDeployWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaDeployWriter.java,v
  retrieving revision 1.65.4.3
  retrieving revision 1.65.4.4
  diff -u -r1.65.4.3 -r1.65.4.4
  --- JavaDeployWriter.java	4 Oct 2002 20:20:57 -0000	1.65.4.3
  +++ JavaDeployWriter.java	8 Oct 2002 20:33:24 -0000	1.65.4.4
  @@ -425,6 +425,9 @@
                        Utils.genQNameAttributeString(returnType, "rtns") +
                        "\"");
           }
  +        if (params.returnParam != null && params.returnParam.isOutHeader()) {
  +            pw.print(" returnHeader=\"true\"");
  +        }
           pw.println(" >");
   
           Vector paramList = params.list;
  
  
  
  1.49.6.4  +5 -1      xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java
  
  Index: JavaSkelWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaSkelWriter.java,v
  retrieving revision 1.49.6.3
  retrieving revision 1.49.6.4
  diff -u -r1.49.6.3 -r1.49.6.4
  --- JavaSkelWriter.java	4 Oct 2002 20:20:57 -0000	1.49.6.3
  +++ JavaSkelWriter.java	8 Oct 2002 20:33:24 -0000	1.49.6.4
  @@ -220,7 +220,11 @@
   
                   if (retType != null) {
                       pw.println("        _oper.setReturnType(" +
  -                               Utils.getNewQName(retType) + ");");            
  +                               Utils.getNewQName(retType) + ");");
  +                    if (parameters.returnParam != null &&
  +                        parameters.returnParam.isOutHeader()) {
  +                        pw.println("        _oper.setReturnHeader(true);");
  +                    }
                   }
   
                   // If we need to know the QName (if we have a namespace or
  
  
  
  1.98.4.4  +28 -19    xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java
  
  Index: JavaStubWriter.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/src/org/apache/axis/wsdl/toJava/JavaStubWriter.java,v
  retrieving revision 1.98.4.3
  retrieving revision 1.98.4.4
  diff -u -r1.98.4.3 -r1.98.4.4
  --- JavaStubWriter.java	4 Oct 2002 20:20:58 -0000	1.98.4.3
  +++ JavaStubWriter.java	8 Oct 2002 20:33:24 -0000	1.98.4.4
  @@ -520,10 +520,19 @@
   
               // Generate the addParameter call with the
               // name qname, typeQName, optional javaType, and mode
  -            if (p.getMode() != Parameter.OUT && p.isInHeader()) {
  -                pw.println("        _call.addParameterAsHeader(" + paramNameText + ", "
  +            boolean isInHeader = p.isInHeader();
  +            boolean isOutHeader = p.isOutHeader();
  +            if (isInHeader || isOutHeader) {
  +                String headerMode = isInHeader ?
  +                        (isOutHeader ? "javax.xml.rpc.ParameterMode.INOUT" :
  +                        "javax.xml.rpc.ParameterMode.IN") :
  +                        "javax.xml.rpc.ParameterMode.OUT";
  +                pw.println("        _call.addParameterAsHeader("
  +                           + paramNameText + ", "
                              + paramTypeText + ", " 
  -                           + javaType + "javax.xml.rpc.ParameterMode.IN);");
  +                           + javaType
  +                           + "javax.xml.rpc.ParameterMode.IN, "
  +                           + headerMode + ");");
               }
               else if (p.getMode() == Parameter.IN) {
                   pw.println("        _call.addParameter(" + paramNameText + ", "
  @@ -546,7 +555,7 @@
   
               // Get the QName for the return Type
               QName returnType = Utils.getXSIType(parms.returnParam);
  -            
  +
               // Get the javaType
               String javaType = null;
               if (parms.returnParam.getMIMEType() != null) {
  @@ -556,12 +565,21 @@
                   javaType = parms.returnParam.getType().getName();
               }
               if (javaType == null) {
  -                pw.println("        _call.setReturnType(" + 
  -                           Utils.getNewQName(returnType) + ");");
  -            } else {
  -                pw.println("        _call.setReturnType(" + 
  -                           Utils.getNewQName(returnType) + 
  -                           ", " + javaType + ".class);");
  +                javaType = "";
  +            }
  +            else {
  +                javaType = ", " + javaType + ".class";
  +            }
  +            String method = "setReturnType";
  +            if (parms.returnParam.isOutHeader()) {
  +                method = "setReturnTypeAsHeader";
  +            }
  +            pw.println("        _call." + method + "("
  +                    + Utils.getNewQName(returnType)
  +                    + javaType + ");");
  +            QName returnQName = parms.returnParam.getQName();
  +            if (returnQName != null) {
  +                pw.println("        _call.setReturnQName(" + Utils.getNewQName(returnQName) + ");");
               }
           }
           else {
  @@ -612,15 +630,6 @@
               Part p = (Part)partsMap.values().iterator().next();
               QName q = p.getElementName();
               pw.println("        _call.setOperationName(" + Utils.getNewQName(q) + ");" );
  -            
  -            // Special return info for wrapped - the QName of the element
  -            // which is the return type
  -            if (parms.returnParam != null) {
  -                QName returnQName = parms.returnParam.getQName();
  -                if (returnQName != null) {
  -                    pw.println("        _call.setReturnQName(" + Utils.getNewQName(returnQName) + ");" );
  -                }
  -            }
           } else {
               QName elementQName = 
                   Utils.getOperationQName(operation, bEntry, symbolTable);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +85 -0     xml-axis/java/test/wsdl/header/Attic/build.xml
  
  
  
  
  1.1.2.1   +96 -0     xml-axis/java/test/wsdl/header/Attic/header.wsdl
  
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.4.12.1  +1 -1      xml-axis/java/test/wsdl/inheritance/InheritanceTestCase.java
  
  Index: InheritanceTestCase.java
  ===================================================================
  RCS file: /home/cvs/xml-axis/java/test/wsdl/inheritance/InheritanceTestCase.java,v
  retrieving revision 1.4
  retrieving revision 1.4.12.1
  diff -u -r1.4 -r1.4.12.1
  --- InheritanceTestCase.java	24 May 2002 18:11:12 -0000	1.4
  +++ InheritanceTestCase.java	8 Oct 2002 20:33:24 -0000	1.4.12.1
  @@ -108,7 +108,7 @@
       public void testInheritanceTest() {
           test.wsdl.inheritance.InheritancePortType binding;
           try {
  -            binding = new InheritanceTestLocator().getInheritanceTest();
  +            binding = new InheritancePortTypeServiceLocator().getInheritanceTest();
           } catch (ServiceException jre) {
               throw new junit.framework.AssertionFailedError("JAX-RPC ServiceException caught: " + jre);
           }