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