You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Michael Ward (JIRA)" <ax...@ws.apache.org> on 2005/07/12 23:16:26 UTC

[jira] Created: (AXIS-2115) axis 1.2.1 fails to deserialize xs:date in responses

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


[jira] Commented: (AXIS-2115) axis 1.2.1 fails to deserialize xs:date in responses

Posted by "Davanum Srinivas (JIRA)" <ax...@ws.apache.org>.
    [ http://issues.apache.org/jira/browse/AXIS-2115?page=comments#action_12319641 ] 

Davanum Srinivas commented on AXIS-2115:
----------------------------------------

could you please attach a "diff -u"?

thanks,
dims

> 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


[jira] Commented: (AXIS-2115) axis 1.2.1 fails to deserialize xs:date in responses

Posted by "Michael Ward (JIRA)" <ax...@ws.apache.org>.
    [ 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


[jira] Resolved: (AXIS-2115) axis 1.2.1 fails to deserialize xs:date in responses

Posted by "Davanum Srinivas (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXIS-2115?page=all ]
     
Davanum Srinivas resolved AXIS-2115:
------------------------------------

    Resolution: Fixed

Please try latest CVS / nightly and let me know if you see the problem ASAP!. I see that the code in question (patch that you attached) is not being called when i execute wsdl2java. I also don't see any difference in the response to the axis1.2 client and axis1.2-fix client that you attached. So am confused thoroughly :) So please start with a clean slate (build from axis cvs or pick a nightly build) and let me know.

thanks,
dims

> 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: Blocker

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


[jira] Updated: (AXIS-2115) axis 1.2.1 fails to deserialize xs:date in responses

Posted by "Davanum Srinivas (JIRA)" <ax...@ws.apache.org>.
     [ http://issues.apache.org/jira/browse/AXIS-2115?page=all ]

Davanum Srinivas updated AXIS-2115:
-----------------------------------

    Priority: Blocker  (was: Critical)

Blocker?

> 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: Blocker

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