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 "Milos Ratkovic (JIRA)" <ji...@apache.org> on 2008/04/24 20:03:22 UTC

[jira] Updated: (AXIS2-3764) Generated classes for simpleType based on dateTime result in wrong serialization/deserialization if that type is used as attribute.

     [ https://issues.apache.org/jira/browse/AXIS2-3764?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Milos Ratkovic updated AXIS2-3764:
----------------------------------

    Description: 
simpleType based on 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. 



  was:
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. 



        Summary: Generated classes for simpleType based on dateTime result in wrong serialization/deserialization if that type is used as attribute.   (was: Generated classes for SimpleType has base of dateTime result in wrong serialization/deserialization if that type is used as attribute. )

> Generated classes for simpleType based on 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
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> simpleType based on 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: axis-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-dev-help@ws.apache.org