You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by "Mark Whitlock (JIRA)" <ax...@ws.apache.org> on 2005/06/08 17:53:15 UTC

[jira] Created: (AXISCPP-679) Data not passed back from multiple output parameters

Data not passed back from multiple output parameters
----------------------------------------------------

         Key: AXISCPP-679
         URL: http://issues.apache.org/jira/browse/AXISCPP-679
     Project: Axis-C++
        Type: Bug
  Components: WSDL processing - Doc  
    Reporter: Mark Whitlock
    Priority: Critical


I have a wsdl that has multiple output parameters...

   <element name="get">
    <complexType>
     <sequence>
      <element name="out1" type="xsd:string"/>
      <element name="out14" type="xsd:integer"/>
      <element name="out15" type="xsd:int"/>
      <element name="out16" type="xsd:long"/>
      <element name="out17" type="xsd:short"/>
      <element name="out18" type="xsd:decimal"/>
      <element name="out19" type="xsd:float"/>
      <element name="out20" type="xsd:double"/>
      <element name="out21" type="xsd:boolean"/>
      <element name="out22" type="xsd:byte"/>
     </sequence>
    </complexType>
   </element>
  </schema>
 </wsdl:types>

   <wsdl:message name="get0">
      <wsdl:part element="impl:get0" name="parameters"/>
   </wsdl:message>
   <wsdl:message name="get">
      <wsdl:part element="impl:get" name="parameters"/>
   </wsdl:message>

   <wsdl:portType name="MultiOut">
      <wsdl:operation name="get">
         <wsdl:input message="impl:get0" name="get0"/>
         <wsdl:output message="impl:get" name="get"/>
      </wsdl:operation>
   </wsdl:portType>

The code that WSDL2Ws generates does not work...

void MultiOut::get(xsd__int Value0, AXIS_OUT_PARAM  xsd__string* OutValue0, AXIS_OUT_PARAM  xsd__integer* OutValue1, AXIS_OUT_PARAM  xsd__int* OutValue2, AXIS_OUT_PARAM  xsd__long* OutValue3, AXIS_OUT_PARAM  xsd__short* OutValue4, AXIS_OUT_PARAM  xsd__decimal* OutValue5, AXIS_OUT_PARAM  xsd__float* OutValue6, AXIS_OUT_PARAM  xsd__double* OutValue7, AXIS_OUT_PARAM  xsd__boolean* OutValue8, AXIS_OUT_PARAM  xsd__byte* OutValue9)
{
...
   OutValue1 = m_pCall->getElementAsInteger("out14", 0);
... 
}

because altering OutValue1 will not affect what the application receives since OutValue1 is passed by value and the contents of OutValue1 are not updated. The line should be 

 *OutValue1 = *(m_pCall->getElementAsInteger("out14", 0));



-- 
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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Closed: (AXISCPP-679) Data not passed back from multiple output parameters

Posted by "Mark Whitlock (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXISCPP-679?page=all ]
     
Mark Whitlock closed AXISCPP-679:
---------------------------------

    Resolution: Fixed

This issue is now fixed and tested by the MultiOut unit test

> Data not passed back from multiple output parameters
> ----------------------------------------------------
>
>          Key: AXISCPP-679
>          URL: http://issues.apache.org/jira/browse/AXISCPP-679
>      Project: Axis-C++
>         Type: Bug
>   Components: WSDL processing - Doc
>     Reporter: Mark Whitlock
>     Assignee: Mark Whitlock
>     Priority: Critical

>
> I have a wsdl that has multiple output parameters...
>    <element name="get">
>     <complexType>
>      <sequence>
>       <element name="out1" type="xsd:string"/>
>       <element name="out14" type="xsd:integer"/>
>       <element name="out15" type="xsd:int"/>
>       <element name="out16" type="xsd:long"/>
>       <element name="out17" type="xsd:short"/>
>       <element name="out18" type="xsd:decimal"/>
>       <element name="out19" type="xsd:float"/>
>       <element name="out20" type="xsd:double"/>
>       <element name="out21" type="xsd:boolean"/>
>       <element name="out22" type="xsd:byte"/>
>      </sequence>
>     </complexType>
>    </element>
>   </schema>
>  </wsdl:types>
>    <wsdl:message name="get0">
>       <wsdl:part element="impl:get0" name="parameters"/>
>    </wsdl:message>
>    <wsdl:message name="get">
>       <wsdl:part element="impl:get" name="parameters"/>
>    </wsdl:message>
>    <wsdl:portType name="MultiOut">
>       <wsdl:operation name="get">
>          <wsdl:input message="impl:get0" name="get0"/>
>          <wsdl:output message="impl:get" name="get"/>
>       </wsdl:operation>
>    </wsdl:portType>
> The code that WSDL2Ws generates does not work...
> void MultiOut::get(xsd__int Value0, AXIS_OUT_PARAM  xsd__string* OutValue0, AXIS_OUT_PARAM  xsd__integer* OutValue1, AXIS_OUT_PARAM  xsd__int* OutValue2, AXIS_OUT_PARAM  xsd__long* OutValue3, AXIS_OUT_PARAM  xsd__short* OutValue4, AXIS_OUT_PARAM  xsd__decimal* OutValue5, AXIS_OUT_PARAM  xsd__float* OutValue6, AXIS_OUT_PARAM  xsd__double* OutValue7, AXIS_OUT_PARAM  xsd__boolean* OutValue8, AXIS_OUT_PARAM  xsd__byte* OutValue9)
> {
> ...
>    OutValue1 = m_pCall->getElementAsInteger("out14", 0);
> ... 
> }
> because altering OutValue1 will not affect what the application receives since OutValue1 is passed by value and the contents of OutValue1 are not updated. The line should be 
>  *OutValue1 = *(m_pCall->getElementAsInteger("out14", 0));

-- 
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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


[jira] Assigned: (AXISCPP-679) Data not passed back from multiple output parameters

Posted by "Mark Whitlock (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXISCPP-679?page=all ]

Mark Whitlock reassigned AXISCPP-679:
-------------------------------------

    Assign To: Mark Whitlock

> Data not passed back from multiple output parameters
> ----------------------------------------------------
>
>          Key: AXISCPP-679
>          URL: http://issues.apache.org/jira/browse/AXISCPP-679
>      Project: Axis-C++
>         Type: Bug
>   Components: WSDL processing - Doc
>     Reporter: Mark Whitlock
>     Assignee: Mark Whitlock
>     Priority: Critical

>
> I have a wsdl that has multiple output parameters...
>    <element name="get">
>     <complexType>
>      <sequence>
>       <element name="out1" type="xsd:string"/>
>       <element name="out14" type="xsd:integer"/>
>       <element name="out15" type="xsd:int"/>
>       <element name="out16" type="xsd:long"/>
>       <element name="out17" type="xsd:short"/>
>       <element name="out18" type="xsd:decimal"/>
>       <element name="out19" type="xsd:float"/>
>       <element name="out20" type="xsd:double"/>
>       <element name="out21" type="xsd:boolean"/>
>       <element name="out22" type="xsd:byte"/>
>      </sequence>
>     </complexType>
>    </element>
>   </schema>
>  </wsdl:types>
>    <wsdl:message name="get0">
>       <wsdl:part element="impl:get0" name="parameters"/>
>    </wsdl:message>
>    <wsdl:message name="get">
>       <wsdl:part element="impl:get" name="parameters"/>
>    </wsdl:message>
>    <wsdl:portType name="MultiOut">
>       <wsdl:operation name="get">
>          <wsdl:input message="impl:get0" name="get0"/>
>          <wsdl:output message="impl:get" name="get"/>
>       </wsdl:operation>
>    </wsdl:portType>
> The code that WSDL2Ws generates does not work...
> void MultiOut::get(xsd__int Value0, AXIS_OUT_PARAM  xsd__string* OutValue0, AXIS_OUT_PARAM  xsd__integer* OutValue1, AXIS_OUT_PARAM  xsd__int* OutValue2, AXIS_OUT_PARAM  xsd__long* OutValue3, AXIS_OUT_PARAM  xsd__short* OutValue4, AXIS_OUT_PARAM  xsd__decimal* OutValue5, AXIS_OUT_PARAM  xsd__float* OutValue6, AXIS_OUT_PARAM  xsd__double* OutValue7, AXIS_OUT_PARAM  xsd__boolean* OutValue8, AXIS_OUT_PARAM  xsd__byte* OutValue9)
> {
> ...
>    OutValue1 = m_pCall->getElementAsInteger("out14", 0);
> ... 
> }
> because altering OutValue1 will not affect what the application receives since OutValue1 is passed by value and the contents of OutValue1 are not updated. The line should be 
>  *OutValue1 = *(m_pCall->getElementAsInteger("out14", 0));

-- 
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
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira