Thanks Amila. Can you let me know which nightly build I should take to try out 
the fix?


________________________________
From: Amila Suriarachchi [mailto:[EMAIL PROTECTED]
Sent: Monday, October 29, 2007 4:57 AM
To: [email protected]
Subject: Re: [Axis2] 1.3 wsdl2java generates code with missing methods

I have fixed this issue locally. will commit soon.

Amila.
On 10/25/07, Pantvaidya, Vishwajit <[EMAIL PROTECTED] <mailto:[EMAIL 
PROTECTED]> > wrote:

A quick clarification - the MessageReceiverInOut class generated by wsdl2java 
contains references to the missing methods. As this is an autogenerated class, 
I do not want to edit it myself to remove these problems.



Any insights?



________________________________

From: Pantvaidya, Vishwajit [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>]
Sent: Tuesday, October 23, 2007 5:25 PM
To: [email protected]<mailto:[email protected]>
Subject: Axis2 1.3 wsdl2java generates code with missing methods



I am using wsdl2java to generate java code from a wsdl using wsdl2java options 
"-o -ss -sd -ssi -f -uw -uri -ns2p". The result includes a MessageReceiverInOut 
class that is missing a method resulting in a compiletime error "method 
wrapIsUploadAllowed(OperationStatusType) is undefined for the type 
...MessageReceiverInOut".



I observed that this seems to happen when wsdl parts in different messages 
refer to the same complex type. In such cases, the wrap methods in the 
MessageReceiver class for the first operation is created while that for the 
other one is not created. E.g. in this case the method 
wrapUpload(OperationStatusType) gets created while 
wrapIsUploadAllowed(OperationStatusType) is missing.



Wsdl snippet is included below.



Is this a bug?





                                    <s:complexType name="OperationStatusType">

                                                <s:sequence>

                                                            <s:element 
name="successFlag" type="s:boolean"/>

                                                            <s:element 
name="messageLevel" type="s:string"/>

                                                            <s:element 
name="messageCode" type="s:string"/>

                                                            <s:element 
name="message" type="s:string"/>

                                                </s:sequence>

                                    </s:complexType>

                                    <s:element name="OperationStatusElement" 
type="tns:OperationStatusType"/>



                                    <s:element name="UploadRequestElement">

                                                <s:complexType>

                                                            <s:sequence>

                                                                        
<s:element name="sessiontoken" type="s:string"/>

                                                                        
<s:element name="trackingnumber" type="s:string"/>

                                                                        
<s:element name="version" type="s:int"/>

                                                            </s:sequence>

                                                </s:complexType>>

                                    </s:element>



                                    <s:element 
name="IsUploadAllowedRequestElement">

                                                <s:complexType>

                                                            <s:sequence>

                                                                        
<s:element name="SessionToken" type="s:string"></s:element>

                                                                        
<s:element name="TrackingNumber" type="s:string"></s:element>

                                                                        
<s:element name="Version" type="s:int"></s:element>

                                                            </s:sequence>

                                                </s:complexType>

                                    </s:element>

...         <wsdl:message name="UploadRequest">

                        <wsdl:part name="uploadrequest" 
element="tns:UploadRequestElement"></wsdl:part>

            </wsdl:message>

            <wsdl:message name="UploadResponse">

                        <wsdl:part name="uploadoperationstatus" 
element="tns:OperationStatusElement"></wsdl:part>

            </wsdl:message>



            <wsdl:message name="IsUploadAllowedRequest">

                        <wsdl:part name="uploadcheckrequest" 
element="tns:IsUploadAllowedRequestElement"></wsdl:part>

            </wsdl:message>

            <wsdl:message name="IsUploadAllowedResponse">

                        <wsdl:part name="uploadcheckoperationstatus" 
element="tns:OperationStatusElement"></wsdl:part>

            </wsdl:message>

...

                        <wsdl:operation name="Upload">

                                    <wsdl:input 
message="tns:UploadRequest"></wsdl:input>

                                    <wsdl:output 
message="tns:UploadResponse"></wsdl:output>

                        </wsdl:operation>

                        <wsdl:operation name="IsUploadAllowed">

                                    <wsdl:input 
message="tns:IsUploadAllowedRequest"></wsdl:input>

                                    <wsdl:output 
message="tns:IsUploadAllowedResponse"></wsdl:output>

                        </wsdl:operation>

...

                        <soap:binding 
transport="http://schemas.xmlsoap.org/soap/http"; style="document"/>

                        <wsdl:operation name="Upload">

                                    <soap:operation soapAction="" 
style="document"/>

                                    <wsdl:input>

                                                <soap:body use="literal"/>

                                    </wsdl:input>

                                    <wsdl:output>

                                                <soap:body use="literal"/>

                                    </wsdl:output>

                        </wsdl:operation>

                        <wsdl:operation name="IsUploadAllowed">

                                    <soap:operation soapAction="" 
style="document"/>

                                    <wsdl:input>

                                                <soap:body use="literal"/>

                                    </wsdl:input>

                                    <wsdl:output>

                                                <soap:body use="literal"/>

                                    </wsdl:output>

                        </wsdl:operation>

...



--
Amila Suriarachchi,
WSO2 Inc.

Reply via email to