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>
...

Reply via email to