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 "Davanum Srinivas (JIRA)" <ax...@ws.apache.org> on 2005/01/21 18:01:17 UTC

[jira] Resolved: (AXIS-1709) Client#setOperation(String) needs to take header params into account (Patch)

     [ http://issues.apache.org/jira/browse/AXIS-1709?page=history ]
     
Davanum Srinivas resolved AXIS-1709:
------------------------------------

    Resolution: Fixed

Fixed. Thanks.

-- dims

> Client#setOperation(String) needs to take header params into account (Patch)
> ----------------------------------------------------------------------------
>
>          Key: AXIS-1709
>          URL: http://issues.apache.org/jira/browse/AXIS-1709
>      Project: Axis
>         Type: Bug
>     Versions: current (nightly)
>     Reporter: Michael Schuerig

>
> Currently Call#setOperation(String) erroneously adds every parameter as a body parameter. Here's patch that checks whether is an IN or OUT header and adds it as a header parameter.
> Michael
> Index: Call.java
> ===================================================================
> RCS file: /home/cvspublic/ws-axis/java/src/org/apache/axis/client/Call.java,v
> retrieving revision 1.235
> diff -u -3 -p -u -r1.235 Call.java
> --- Call.java 30 Nov 2004 21:54:32 -0000 1.235
> +++ Call.java 9 Dec 2004 02:27:56 -0000
> @@ -1013,9 +1013,33 @@ public class Call implements javax.xml.r
>          addParameter(new QName("", paramName), xmlType,
>                       javaType, parameterMode);
>      }
> -
> +        
> +    /**
> +     * Adds a parameter type as a soap:header.
> +     * @param paramName - Name of the parameter
> +     * @param xmlType - XML datatype 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,
> +            ParameterMode parameterMode,
> +            ParameterMode headerMode) {
> +        Class javaType = null;
> +        TypeMapping tm = getTypeMapping();
> +        if (tm != null) {
> +            javaType = tm.getClassForQName(xmlType);
> +        }
> +        addParameterAsHeader(paramName, xmlType, javaType,
> +            parameterMode, headerMode);
> +    }
> +    
>      /**
> -
>       * Adds a parameter type as a soap:header.
>       * @param paramName - Name of the parameter
>       * @param xmlType - XML datatype of the parameter
> @@ -1409,7 +1433,13 @@ public class Call implements javax.xml.r
>              Parameter p = (Parameter) parameters.list.get(j);
>              // Get the QName representing the parameter type
>              QName paramType = Utils.getXSIType(p);
> -            this.addParameter( p.getQName(), paramType, modes[p.getMode()]);
> +            ParameterMode mode = modes[p.getMode()];
> +            if (p.isInHeader() || p.isOutHeader()) {
> +                this.addParameterAsHeader( p.getQName(), paramType,
> +                        mode, mode);
> +            } else {
> +                this.addParameter( p.getQName(), paramType, mode);
> +            }
>          }
>  
>          Map faultMap = bEntry.getFaults();

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira