[
http://issues.apache.org/jira/browse/AXIS-2115?page=comments#action_12319643 ]
Michael Ward commented on AXIS-2115:
------------------------------------
diff -u JavaBeanHelperWriter.java.orig JavaBeanHelperWriter.java
--- JavaBeanHelperWriter.java.orig 2005-08-22 15:18:05.000000000 -0500
+++ JavaBeanHelperWriter.java 2005-08-22 15:18:05.000000000 -0500
@@ -360,8 +360,15 @@
+ Utils.getNewQNameWithLastLocalPart(xmlName) +
");");
if (xmlType != null) {
- pw.println(" elemField.setXmlType("
+ if (elemType != null &&
+ elemType.getRefType() != null &&
+ elemType.getRefType().getQName() != null) {
+ pw.println(" elemField.setXmlType("
+ +
Utils.getNewQName(elemType.getRefType().getQName()) + ");");
+ } else {
+ pw.println(" elemField.setXmlType("
+ Utils.getNewQName(xmlType) + ");");
+ }
}
if (elem.getMinOccursIs0()) {
> axis 1.2.1 fails to deserialize xs:date in responses
> ----------------------------------------------------
>
> Key: AXIS-2115
> URL: http://issues.apache.org/jira/browse/AXIS-2115
> Project: Apache Axis
> Type: Bug
> Components: WSDL processing
> Versions: 1.2, 1.2.1
> Environment: windows xp pro
> Reporter: Michael Ward
> Priority: Critical
>
> Axis 1.2.1, as a client, seems to be failing to deserialize responses
> properly and completely fails when parsing a date returned from an Axis 1.1
> document/literal service. Listed below are 3 scenarios where the same WSDL
> was used to generate the client and serverside bindings using WSDL2Java. I
> ended up making a change to one of the WSDL2Java classes to get this working.
> This may or may not need to be filed as a bug and I'm not sure if the change
> I made is safe or if it just solves my problem.
>
> I found through debugging that during deserialization that axis 1.2.1 would
> always end up stepping into lines 291-297 of the BeanDeserializer where the
> comment states that it is an error if the deserializer is not found at this
> point. After comparing the generated 1.1 and 1.2.1 binding classes I found
> that making the following change fixed my problem. I've also attached the
> WSDL used below.
>
> $ diff ./axis-1_2_1/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java
> ./axis-1_2_1/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java.orig
> 363,369c363
> < if (elemType != null &&
> < elemType.getRefType() != null &&
> < elemType.getRefType().getQName() != null) {
> < pw.println(" elemField.setXmlType("
> < +
> Utils.getNewQName(elemType.getRefType().getQName()) + ");");
> < } else {
> < pw.println(" elemField.setXmlType("
> ---
> > pw.println(" elemField.setXmlType("
> 371d364
> < }
>
> If someone could take a look and let me know if I should be doing something
> else I would appreciate it. Unfortunately having everyone upgrade to 1.2.1
> is not an option right now so I really need this type of interoperability to
> work.
>
> thanks,
> -mike
>
>
>
> <wsdl:definitions xmlns="http://test.axis.com/wsdl2java/"
> xmlns:soapbind="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema"
> targetNamespace="http://test.axis.com/wsdl2java/" name="axisTest">
> <wsdl:types>
> <xs:schema targetNamespace="http://test.axis.com/wsdl2java/"
> xmlns="http://test.axis.com/wsdl2java/"
> xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified"
> attributeFormDefault="unqualified">
> <xs:element name="testString" type="xs:string"/>
> <xs:element name="testDate" type="xs:date"/>
> <xs:complexType name="WSDLTest_Type">
> <xs:sequence>
> <xs:element ref="testString" minOccurs="1" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="WSDLTestResponse_Type">
> <xs:sequence>
> <xs:element ref="testDate" minOccurs="1" maxOccurs="1"/>
> </xs:sequence>
> </xs:complexType>
> <xs:element name="getWSDLTest" type="WSDLTest_Type"/>
> <xs:element name="getWSDLTestResponse"
> type="WSDLTestResponse_Type"/>
> </xs:schema>
> </wsdl:types>
> <wsdl:message name="GetWSDLTestRequestMessage">
> <wsdl:part name="getWSDLTestRequest" element="getWSDLTest"/>
> </wsdl:message>
> <wsdl:message name="GetWSDLTestResponseMessage">
> <wsdl:part name="getWSDLTestResponse" element="getWSDLTestResponse"/>
> </wsdl:message>
> <wsdl:portType name="GetWSDLTestPortType">
> <wsdl:operation name="getWSDLTest">
> <wsdl:input message="GetWSDLTestRequestMessage"/>
> <wsdl:output message="GetWSDLTestResponseMessage"/>
> </wsdl:operation>
> </wsdl:portType>
> <wsdl:binding name="GetWSDLTestSoapBinding" type="GetWSDLTestPortType">
> <soapbind:binding style="document"
> transport="http://schemas.xmlsoap.org/soap/http"/>
> <wsdl:operation name="getWSDLTest" >
> <soapbind:operation style="document"
> soapAction="http://service.wellsfargo.com/provider/pcs/account/2004/"/>
> <wsdl:input>
> <soapbind:body parts="getWSDLTestRequest" use="literal"/>
> </wsdl:input>
> <wsdl:output>
> <soapbind:body parts="getWSDLTestResponse" use="literal"/>
> </wsdl:output>
> </wsdl:operation>
> </wsdl:binding>
> <wsdl:service name="GetWSDLTestService">
> <wsdl:port name="getWSDLTest" binding="GetWSDLTestSoapBinding">
> <soapbind:address
> location="http://localhost:7001/services/getWSDLTest/"/>
> </wsdl:port>
> </wsdl:service>
> </wsdl:definitions>
>
>
>
>
>
>
>
> Axis 1.1 Client --> Axis 1.1 Service
> Request:
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <getWSDLTest xmlns="http://test.axis.com/wsdl2java/">
> <testString>Test String</testString>
> </getWSDLTest>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Response:
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <getWSDLTestResponse xmlns="http://test.axis.com/wsdl2java/">
> <testDate>2005-07-12</testDate>
> </getWSDLTestResponse>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Result: works!!
>
>
>
> Axis 1.2.1 Client --> Axis 1.1 Service
> Request:
> <?xml version="1.0" encoding="utf-8"?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>
> <soapenv:Body>
> <getWSDLTest xmlns="http://test.axis.com/wsdl2java/">
> <testString xsi:type="xsd:string">Test String</testString>
> </getWSDLTest>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Response:
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <getWSDLTestResponse xmlns="http://test.axis.com/wsdl2java/">
> <testDate>2005-07-12</testDate>
> </getWSDLTestResponse>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Result: Client fails to deserialize with `java.lang.NumberFormatException:
> Invalid date/time`
>
>
>
> Axis 1.2.1-fix Client --> Axis 1.1 Service
> Request:
> <?xml version="1.0" encoding="utf-8"?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
>
> <soapenv:Body>
> <getWSDLTest xmlns="http://test.axis.com/wsdl2java/">
> <testString>Test String</testString>
> </getWSDLTest>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Response:
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <soapenv:Body>
> <getWSDLTestResponse xmlns="http://test.axis.com/wsdl2java/">
> <testDate>2005-07-12</testDate>
> </getWSDLTestResponse>
> </soapenv:Body>
> </soapenv:Envelope>
>
> Result: works!!
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira