According to the JAXWS spec, wrapper types are NOT allowed to contain
wildcards. The xs:any is considered a wildcard. Thus, it's not
unwrappable.
That said, wsld2java is still broken for this case as it's generating a
void return instead of a GetApprovedTermsResponse return . That's
really not good. Off to log a bug for that.
Dan
On Thursday 24 January 2008, Benjamin Coiffe wrote:
> Hi,
>
>
>
> The WSDL pasted at the end of this email contains two methods:
> getApprovedTerms, verifyTerm. There signatures are very close, yet,
> verifyItem is wrappable and getApprovedTerms isn't...Can somebody
> please explain me why?
>
> I am working with CXF 2.0.1 patched. I did update TypeClassSerializer
> to fix a couple of bugs.
>
> When I execute this code:
>
>
>
> DynamicClientFactory dynamicClientFactory =
> DynamicClientFactory.newInstance(bus);
>
> Client client = dynamicClientFactory.createClient(wsdl);
>
> ServiceInfo model =
> client.getEndpoint().getService().getServiceInfos().get(0);
>
> InterfaceInfo interfaceInfo = model.getInterface();
>
> Collection<OperationInfo> operationInfos =
> interfaceInfo.getOperations();
>
> for(OperationInfo operationInfo:operationInfos){
>
> MessageInfo outputMessageInfo = operationInfo.getInput();
>
> Map<QName,MessagePartInfo> map =
> outputMessageInfo.getMessagePartsMap();
>
> for(Entry<QName,MessagePartInfo> entry : map.entrySet()){
>
> MessagePartInfo messagePartInfo = entry.getValue();
>
> if(messagePartInfo.getTypeClass() == null){
>
> throw new Exception("Should not happened!!")
>
> }
>
> }
>
> }
>
> }
>
>
>
> The Exception is unfortunately thrown:-( and should not be. I tried to
> find a way to fix it myself but I am running out of ideas!
>
> My patched TypeClassInitializer is the latest code from the source
> repository.
>
>
>
> Any Help would be really appreciated.
>
> Thanks,
>
>
>
> BEnjamin
>
>
>
>
>
> <?xml version='1.0' encoding='UTF-8'?>
>
> <definitions name="cvServiceDefinitions"
> targetNamespace="http://sii.gri.roche.com"
> xmlns="http://schemas.xmlsoap.org/wsdl/"
> xmlns:s0="http://sii.gri.roche.com"
> xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/">
>
> <types>
>
> <xs:schema attributeFormDefault="unqualified"
> elementFormDefault="qualified"
> targetNamespace="http://sii.gri.roche.com"
> xmlns:s0="http://sii.gri.roche.com"
> xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <xs:element name="getApprovedTerms">
>
> <xs:complexType>
>
> <xs:sequence>
>
> <xs:element name="domainName" type="xs:string"/>
>
> <xs:element name="appName" type="xs:string"/>
>
> <xs:element name="viewName" type="xs:string"/>
>
> </xs:sequence>
>
> </xs:complexType>
>
> </xs:element>
>
> <xs:element name="getApprovedTermsResponse">
>
> <xs:complexType>
>
> <xs:sequence>
>
> <xs:any/>
>
> </xs:sequence>
>
> </xs:complexType>
>
> </xs:element>
>
> <xs:element name="verifyTerm">
>
> <xs:complexType>
>
> <xs:sequence>
>
> <xs:element name="domainName" type="xs:string"/>
>
> <xs:element name="termName" type="xs:string"/>
>
> <xs:element name="appName" type="xs:string"/>
>
> <xs:element name="viewName" type="xs:string"/>
>
> </xs:sequence>
>
> </xs:complexType>
>
> </xs:element>
>
> <xs:element name="verifyTermResponse">
>
> <xs:complexType>
>
> <xs:sequence>
>
> <xs:element name="ReturnVerifyTerm" type="xs:boolean"/>
>
> </xs:sequence>
>
> </xs:complexType>
>
> </xs:element>
>
> </xs:schema>
>
>
>
> </types>
>
> <message name="verifyTerm">
>
> <part element="s0:verifyTerm" name="parameters"/>
>
> </message>
>
> <message name="verifyTermResponse">
>
> <part element="s0:verifyTermResponse" name="parameters"/>
>
> </message>
>
> <message name="getApprovedTerms">
>
> <part element="s0:getApprovedTerms" name="parameters"/>
>
> </message>
>
> <message name="getApprovedTermsResponse">
>
> <part element="s0:getApprovedTermsResponse" name="parameters"/>
>
> </message>
>
> <portType name="cvPortType">
>
>
>
> <operation name="getApprovedTerms" parameterOrder="parameters">
>
> <input message="s0:getApprovedTerms"/>
>
> <output message="s0:getApprovedTermsResponse"/>
>
> </operation>
>
> <operation name="verifyTerm" parameterOrder="parameters">
>
> <input message="s0:verifyTerm"/>
>
> <output message="s0:verifyTermResponse"/>
>
> </operation>
>
> </portType>
>
> <binding name="cvServiceSoapBinding" type="s0:cvPortType">
>
> <s1:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
>
> <operation name="getApprovedTerms">
>
> <s1:operation soapAction="" style="document"/>
>
> <input>
>
> <s1:body parts="parameters" use="literal"/>
>
> </input>
>
> <output>
>
> <s1:body parts="parameters" use="literal"/>
>
> </output>
>
> </operation>
>
> <operation name="verifyTerm">
>
> <s1:operation soapAction="" style="document"/>
>
> <input>
>
> <s1:body parts="parameters" use="literal"/>
>
> </input>
>
> <output>
>
> <s1:body parts="parameters" use="literal"/>
>
> </output>
>
> </operation>
>
> </binding>
>
> <service name="cvService">
>
> <port binding="s0:cvServiceSoapBinding" name="cvPortTypeSoapPort">
>
> <!--<s1:address
> location="http://rnuuspr12.tot.roche.com:8080/cv/cvService"/>-->
>
> <s1:address location="http://localhost:9000"/>
>
> </port>
>
> </service>
>
> </definitions>
--
J. Daniel Kulp
Principal Engineer, IONA
[EMAIL PROTECTED]
http://www.dankulp.com/blog