[ 
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

Reply via email to