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]