You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@tuscany.apache.org by Ron Gavlin <rg...@yahoo.com> on 2007/01/09 22:42:33 UTC

DataHelperImpl.toDateTime() problems?

Greetings,

Based on my reading of the spec, DataHelperImpl.toDateTime(Calendar) should return a String compatible with the XML Schema dateTime. Consider the code snippet below:

import commonj.sdo.helper.DataHelper;

System.out.println(DataHelper.INSTANCE.toDateTime(DataHelper.INSTANCE.toCalendar("2007-01-01T00:00:00.200Z"))

This snippet prints the result:
(java.lang.String) 2007-01-01T00:00:00.200 GMT 

instead of 
(java.lang.String) 2007-01-01T00:00:00.200Z

The GMT suffix seems incorrect to me. The following code supports this assertion by throwing an IllegalArgumentException when it encounters the " GMT" suffix generated by the DataHelper.toDateTime() method.

import javax.xml.datatype.DatatypeFactory;

DatatypeFactory.newInstance().newXMLGregorianCalendar("2007-01-01T00:00:00.200 GMT");

Do you agree this is a bug? If so, I'll be glad to open a JIRA.

- Ron

---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-user-help@ws.apache.org


Re: DataHelperImpl.toDateTime() problems?

Posted by kelvin goodson <ke...@gmail.com>.
Ron,

   I think you are correct.  The spec says ...

The String representation of DateTime, Duration, Time, Day, Month, MonthDay,
Year, YearMonth, and YearMonthDay follows the lexical representation defined
in XML Schema for the corresponding data types: dateTime, duration, time,
gDay, gMonth, gMonthDay, gYear, gYearMonth, and Date respectively.

and the XML schema definition at
http://www.w3.org/TR/xmlschema-2/#dateTime-timezones seems to be overriden
by the errata at http://www.w3.org/2001/05/xmlschema-errata#e2-45 which
gives ...

The lexical representation of a timezone is a string of the form: (('+' |
'-') hh ':' mm) | 'Z', where *hh* is a two-digit numeral (with leading zeros
as required) that represents the hours, *mm* is a two-digit numeral that
represents the minutes, '+' indicates a nonnegative duration, and '-'
indicates a nonpositive duration. The mapping so defined is one-to-one,
except that '+00:00', '00:00', and 'Z' all represent the same zero-length
duration timezone, UTC; 'Z' is its canonical representation.

  so please raise a JIRA, and of course I have to say it ... a fix would be
great too ;-)

Cheers, Kelvin.



On 09/01/07, Ron Gavlin <rg...@yahoo.com> wrote:
>
> Greetings,
>
> Based on my reading of the spec, DataHelperImpl.toDateTime(Calendar)
> should return a String compatible with the XML Schema dateTime. Consider the
> code snippet below:
>
> import commonj.sdo.helper.DataHelper;
>
> System.out.println(DataHelper.INSTANCE.toDateTime(
> DataHelper.INSTANCE.toCalendar("2007-01-01T00:00:00.200Z"))
>
> This snippet prints the result:
> (java.lang.String) 2007-01-01T00:00:00.200 GMT
>
> instead of
> (java.lang.String) 2007-01-01T00:00:00.200Z
>
> The GMT suffix seems incorrect to me. The following code supports this
> assertion by throwing an IllegalArgumentException when it encounters the "
> GMT" suffix generated by the DataHelper.toDateTime() method.
>
> import javax.xml.datatype.DatatypeFactory;
>
> DatatypeFactory.newInstance().newXMLGregorianCalendar("2007-01-01T00:00:
> 00.200 GMT");
>
> Do you agree this is a bug? If so, I'll be glad to open a JIRA.
>
> - Ron
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tuscany-user-unsubscribe@ws.apache.org
> For additional commands, e-mail: tuscany-user-help@ws.apache.org
>
>