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 "Michael Schuerig (JIRA)" <ax...@ws.apache.org> on 2004/12/09 03:41:09 UTC

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

Client#setOperation(String) needs to take header params into account (Patch)
----------------------------------------------------------------------------

         Key: AXIS-1709
         URL: http://nagoya.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://nagoya.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


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

Posted by "Davanum Srinivas (JIRA)" <ax...@ws.apache.org>.
     [ 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


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

Posted by "Michael Schuerig (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXIS-1709?page=comments#action_57324 ]
     
Michael Schuerig commented on AXIS-1709:
----------------------------------------

Sigh, the summary should have refered to Call#setOperation(String), of course. I have no idea how to change it now.

Michael


> 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


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

Posted by "Michael Schuerig (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXIS-1709?page=comments#action_57720 ]
     
Michael Schuerig commented on AXIS-1709:
----------------------------------------

Can someone please have a look at this and commit it.

Thanks,
Michael

> 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