Thanks for the replay , it was very helpful

but,
there is no way to configure the Adb to replace the converter to some other
custom one , or the favorite one ,to fix the problem and change that in the
ADB ,so the fix will be a permanent and will not require to change the
Convertor in every new version of axis that i will use.

thanks again ,
Zvika.



Jon Diprose wrote:
> 
> Hi,
> 
> Hit exactly the same problem recently. Detailed reading of the spec seems
> to 
> indicate that adb implements the minimum required by the spec, though
> perhaps 
> falls short in the requirement to properly document this.
> 
> I spent a while rewriting convertToDateTime myself before I discovered
> that 
> (apologies for wrapping):
> 
> 
> import
> com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;
> 
> [snip]
> 
> public static Calendar convertToDateTime(String source) {
>      return XMLGregorianCalendarImpl.parse(source).toGregorianCalendar();
> }
> 
> seemed to do a much more through job. Xerces and xml-apis.jar are in the 
> classpath, so why not? This implementation rounds fractional seconds to
> the 
> nearest millisecond, deals with BCE dates and year > 9999 and provides a
> pure 
> Gregorian calendar as per the spec. The only other major difference seems
> to 
> be that it throws IllegalArgumentExceptions where the original threw 
> NumberFormatExceptions. Might be nice to have the option of throwing an 
> exception if there is loss of precision but it does what I needed it to
> do.
> 
> Unfortunately, the same class is too clever to reliably return an 
> xsd:dateTime-formatted string for convertToString(...) - it gives any of
> the 
> other xsd date/time formats depending on which fields are set in the
> calendar 
> - see javadocs. I ended up with:
> 
> public static String convertToString(Calendar value) {
> 
>      // Set BCE flag if appropriate
>      String era = "";
>      if (GregorianCalendar.BC == value.get(Calendar.ERA)) {
>          era = "-";
>      }
> 
>      // Build an appropriate SimpleDateFormat for the Zulu timezone
>      // SimpleDateFormat seems to handle the variable length year itself
>      // Spec indicates it should be pure Greogian
>      SimpleDateFormat zulu = new SimpleDateFormat(era + 
> "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
>      GregorianCalendar c = new GregorianCalendar();
>      c.setGregorianChange(new Date(Long.MIN_VALUE));
>      c.setTimeZone(TimeZone.getTimeZone("GMT"));
>      zulu.setCalendar(c);
> 
>      // Sun JDK bug 
> http://developer.java.sun.com/developer/bugParade/bugs/4229798.html
>      // Has been fixed since 1.4?
>      return zulu.format(value.getTime());
> 
> }
> 
> Of course, you could just ensure that all the fields are set first and use 
> XMLGregorianCalendarImpl again.
> 
> I've got updated test cases and a rebuilt axis2-adb-1.2.jar somewhere as
> well, 
> but its built for java5 so I think not strictly speaking correct.
> 
> Sorry, don't have the source checked out or maven set up or anything. I'm 
> happy to send my source files to someone who does, if anyone wants them?
> 
> Jon
> 
> 
> 
> 
> zvika wrote:
>> hi!
>> 
>> we started to make use of a webservice with generating an Apache Axis2
>> ADB
>> webservice client stub. 
>> the webservice itself is provided by .NET on a IIS server.
>> 
>> the problem we have is that when the webservice serialize a DateTime
>> Object
>> in a format of yyyy-MM-dd'T'HH:mm:ss.ssssss'Z'   ssssss - dynamic
>> positions
>> for the fractional seconds
>> but the ADB (org.apache.axis2.databinding.utils.ConvertorUtil ) that used
>> by
>> Axis2 expect to format like yyyy-MM-dd'T'HH:mm:ss.sss'Z' when the
>> fractional
>> seconds no more then a three positions
>> 
>> we understands from the webservice suppliers that the format is as define
>> in
>> W3 specification 
>> http://www.w3.org/TR/xmlschema-2/#dateTime
>> http://www.w3.org/TR/xmlschema-2/#dateTime 
>> 
>> some samples that we get in invoking the  webservice 
>> 2007-06-20T17:00:37.8380863GMT+02:00
>> 2007-06-20T17:00:45.3GMT+02:00
>> 
>> 
>> java.lang.RuntimeException: java.lang.NumberFormatException: Unparseable
>> date: "2007-06-20T17:00:37.8380863GMT+02:00"
>>      at
>> com.orbograph.www.orboservice.OrboServiceStub.fromOM(OrboServiceStub.java:9400)
>>      at
>> com.orbograph.www.orboservice.OrboServiceStub.GetServerTime(OrboServiceStub.java:777)
>> 
>> 
>> 
>> 
>> Thanks,
>> zvika.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/axis2-Calendar-convertToDateTime-tf3952614.html#a11229001
Sent from the Axis - User mailing list archive at Nabble.com.


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

Reply via email to