I have a combination question/defect report. These are all in regards to StubSourceTemplate.xsl.
============ Defect 1: --------- (line 179 of StubSourceTemplate.xsl) /** * auto generated method signature * for "<xsl:value-of select="@qname"/>" operation. <xsl:for-each select="input/[EMAIL PROTECTED]'']">* @param _<xsl:value-of select="@name"/></xsl:for-each> * @return */ This produces method headers that look like... /** * auto generated method signature for asynchronous invocations * for "MyOperation|http://location.org/wsdl" operation. * @param myOperationRequest* @param interfaceVersion * @param on_complete callback to handle on complete * @param on_error callback to handle on error */ This code should be changed too... /** * auto generated method signature * for "<xsl:value-of select="@qname"/>" operation. * <xsl:for-each select="input/[EMAIL PROTECTED]'']"><xsl:text> </xsl:text> * @param _<xsl:value-of select="@name"/></xsl:for-each> * @return */ This will pretty print your output to correctly show all parameters on their own line. =========== Defect 2: --------- (line 190 of StubSourceTemplate.xsl) axis2_stub_op_<xsl:value-of select="$servicename"/>_<xsl:value-of select="@name"/>( axis2_stub_t *stub, const axutil_env_t *env<xsl:for-each select="input/[EMAIL PROTECTED]'']">, <xsl:variable name="inputtype"> <xsl:if test="@ours">adb_</xsl:if><xsl:value-of select="@type"/><xsl:if test="@ours">_t*</xsl:if> </xsl:variable> <xsl:if test="position()>1">,</xsl:if><xsl:value-of select="$inputtype"/><xsl:text> _</xsl:text><xsl:value-of select="@name"/> </xsl:for-each>) This produces code that looks like... void axis2_stub_MyService_MyOperation_start( axis2_stub_t *stub, const axutil_env_t *env, ,axiom_node_t* myOperationRequest, ,axiom_node_t* interfaceVersion, ,axis2_status_t ( AXIS2_CALL *on_complete ) (struct axis2_callback *, const axutil_env_t *) , ,axis2_status_t ( AXIS2_CALL *on_error ) (struct axis2_callback *, const axutil_env_t *, int ) ) Note the extra comma. The following lines of code should be changed: axis2_stub_t *stub, const axutil_env_t *env<xsl:for-each select="input/[EMAIL PROTECTED]'']">, <---- remove this comma <xsl:variable name="inputtype"> =========== Defect 3: --------- (line 214 of StubSourceTemplate.xsl) <!-- for service client currently suppported only 1 input param --> <xsl:for-each select="input/[EMAIL PROTECTED]'']"> <xsl:if test="position()=1"> <xsl:choose> <xsl:when test="@ours"> payload = adb_<xsl:value-of select="@type"/>_serialize(_<xsl:value-of select="@name"/>, env, NULL, NULL, AXIS2_TRUE, NULL, NULL); </xsl:when> <xsl:otherwise> payload = _<xsl:value-of select="@name"/>; </xsl:otherwise> </xsl:choose> </xsl:if> </xsl:for-each> The for loop is redundant. Change this code to be the following: <xsl:variable name="firstParam" select="input/param[1]"/> <xsl:if test="$firstParam/@type!=''"> <xsl:choose> <xsl:when test="$firstParam/@ours"> payload = adb_<xsl:value-of select="$firstParam/@type"/>_serialize(_<xsl:value-of select="$firstParam/@name"/>, env, NULL, NULL, AXIS2_TRUE, NULL, NULL); </xsl:when> <xsl:otherwise> payload = _<xsl:value-of select="$firstParam/@name"/>; </xsl:otherwise> </xsl:choose> </xsl:if> =========== Defect 4: --------- (lines 179 to 285 of StubSourceTemplate.xsl) This code adds in the parameters for the header (<xsl:for-each select="input/[EMAIL PROTECTED]'']">) but only the first parameter is ever referenced. Read: The elements explicitly specified as headers in the WSDL are not used and thus not added to the service call. Here is the sample WSDL that can be used to reproduce these errors. <wsdl:definitions targetNamespace="http://location.org/wsdl" xmlns:tns="http://location.org/wsdl" xmlns:msg="http://location.org/messages" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsi="http://ws-i.org/schemas/conformanceClaim/"> <wsdl:types> <xs:schema targetNamespace="http://location.org/wsdl"> <xs:element name="InterfaceVersion" type="xs:string"/> <xs:element name="MyOperationRequest" type="xs:string"/> <xs:element name="MyOperationResponse" type="xs:string"/> <xs:element name="MyException" type="xs:string"/> </xs:schema> </wsdl:types> <wsdl:message name="InterfaceVersion"> <wsdl:part element="msg:InterfaceVersion" name="header"/> </wsdl:message> <wsdl:message name="MyOperationRequest"> <wsdl:part name="body" element="msg:MyOperationRequest"/> </wsdl:message> <wsdl:message name="MyOperationResponse"> <wsdl:part name="body" element="msg:MyOperationResponse"/> </wsdl:message> <wsdl:message name="MyException"> <wsdl:part name="body" element="msg:MyException"/> </wsdl:message> <wsdl:portType name="MyPortType"> <!-- MyOperation --> <wsdl:operation name="MyOperation"> <wsdl:input message="tns:MyOperationRequest"/> <wsdl:output message="tns:MyOperationResponse"/> <wsdl:fault message="tns:MyException" name="MyException"/> </wsdl:operation> </wsdl:portType> <wsdl:binding name="MyPortBinding" type="tns:MyPortType"> <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/> <wsdl:operation name="MyOperation"> <soap12:operation soapAction="http://location.org/services/MyOperation" soapActionRequired="true" style="document"/> <wsdl:input> <soap12:header part="header" use="literal" message="tns:InterfaceVersion"/> <soap12:body parts="body" use="literal"/> </wsdl:input> <wsdl:output> <soap12:body parts="body" use="literal"/> </wsdl:output> <wsdl:fault name="MyException"> <soap12:body use="literal"/> </wsdl:fault> </wsdl:operation> </wsdl:binding> <wsdl:service name="MyService"> <wsdl:port name="MySoapPort" binding="tns:MyPortBinding"> <wsdl:documentation> <wsi:Claim conformsTo="http://ws-i.org/profiles/basic/1.0" /> </wsdl:documentation> <soap12:address location="http://location.org/"/> </wsdl:port> </wsdl:service> </wsdl:definitions> =========== Also note that I believe these same mistakes are made in all three versions of this function that are created dependent upon if it is asyn, sync or mep only. The question is now since the stub generation does not use the header parameters supplied, where abouts can I find an example of setting custom headers on the client side? I.e. I need to add my interface version to the SOAP header but do not know how to do this. Thanks in advance. Alastair Fettes MacDonald, Dettwiler and Associates This e-mail and any attachments are intended solely for the use of the intended recipient(s) and may contain legally privileged, proprietary and/or confidential information. Any use, disclosure, dissemination, distribution or copying of this e-mail and any attachments for any purposes that have not been specifically authorized by the sender is strictly prohibited. If you are not the intended recipient, please immediately notify the sender by reply e-mail and permanently delete all copies and attachments. The entire content of this e-mail is for "information purposes" only and should not be relied upon by the recipient in any way unless otherwise confirmed in writing by way of letter or facsimile. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
