Generated classes for SimpleType has base of dateTime result in wrong 
serialization/deserialization if that type is used as attribute. 
---------------------------------------------------------------------------------------------------------------------------------------

                 Key: AXIS2-3764
                 URL: https://issues.apache.org/jira/browse/AXIS2-3764
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: codegen
    Affects Versions: 1.3
         Environment: Eclipse 3.3, axis2 1.3 , java 6.
            Reporter: Milos Ratkovic
            Priority: Minor


SimpleType has base of dateTime when used as attribute generates following 
serialization : 
       
datumVreme="java.util.GregorianCalendar[time=1209044290989,areFieldsSet=true, 
...

Parser expects this format (ConverterUtil : convertToDateTime):
       // '-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (Z)?

Example : 
wsdl : 
...
      <xsd:simpleType name="DatumVreme">
        <xsd:restriction base="xsd:dateTime" />
      </xsd:simpleType>

      <xsd:element name="InOut">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="in" type="xsd:string"/>
          </xsd:sequence>
          <xsd:attribute name="datumVreme" type="tns:DatumVreme" />
        </xsd:complexType>
      </xsd:element>
...
Exception:
Exception in thread "main" java.lang.NumberFormatException: in valid time zone 
attribute
        at 
org.apache.axis2.databinding.utils.ConverterUtil.convertToDateTime(ConverterUtil.java:609)
        at 
org.example.www.testdatetime.DatumVreme$Factory.fromString(DatumVreme.java:309)
        at org.example.www.testdatetime.InOut$Factory.parse(InOut.java:436)
        at org.example.www.testdatetime.Test.main(Test.java:42)


Generated code :
InOut : 
    public void serialize(final javax.xml.namespace.QName parentQName,
...
            writeAttribute("", "datumVreme", localDatumVreme.toString(),  
xmlWriter);

...

        public static InOut parse(javax.xml.stream.XMLStreamReader reader)
...
                        
object.setDatumVreme(org.example.www.testdatetime.DatumVreme.Factory.fromString(
                                tempAttribDatumVreme, ""));
...


DatumVreme:
    protected java.util.Calendar localDatumVreme;

    public java.lang.String toString() {
        return localDatumVreme.toString();   //  
java.util.GregorianCalendar[time=1209044290989,areFieldsSet=true, ....
    }
...
    public static class Factory {
        public static DatumVreme fromString(java.lang.String value,
...
            
returnValue.setDatumVreme(org.apache.axis2.databinding.utils.ConverterUtil.convertToDateTime(
                    value));
...



My workaround is to change toString method in generated class:

    public java.lang.String toString() {
        //return localDatumVreme.toString();
        return 
org.apache.axis2.databinding.utils.ConverterUtil.convertToString(localDatumVreme);
    }


So I guess fix could be to change code generation for toString method.
There is possibility for similar behavior in case of other based types. 



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to