Author: sagara Date: Tue Sep 27 12:15:27 2011 New Revision: 1176349 URL: http://svn.apache.org/viewvc?rev=1176349&view=rev Log: Added new method to convert lexical string of a date to Java.util.Date based on javax.xml.datatype package.
Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java Modified: axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java?rev=1176349&r1=1176348&r2=1176349&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java (original) +++ axis/axis2/java/core/trunk/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java Tue Sep 27 12:15:27 2011 @@ -63,6 +63,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.activation.DataHandler; +import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeFactory; +import javax.xml.datatype.XMLGregorianCalendar; import javax.xml.namespace.NamespaceContext; import javax.xml.namespace.QName; import javax.xml.stream.XMLStreamException; @@ -617,6 +620,30 @@ public class ConverterUtil { return calendar.getTime(); + } + + /** + * Convert lexical representation of date to java.util.Date. + * + * @param source + * the source + * @return the date + * + * This method used to parse the lexical string representation + * defined in XML Schema 1.0 Part 2, Section 3.2.[7-14].1 to a + * java.util.Date based on XMLGregorianCalendar. This replaced the + * behavior of convertToDate() method that copied from Axis1 . + */ + public static Date convertXmlToDate(String source) { + try { + XMLGregorianCalendar cal = DatatypeFactory.newInstance() + .newXMLGregorianCalendar(source); + return cal.toGregorianCalendar().getTime(); + } catch (DatatypeConfigurationException e) { + e.printStackTrace(); + } + return null; + } public static Time convertToTime(String s) { @@ -1567,7 +1594,7 @@ public class ConverterUtil { throw new XMLStreamException("Invalid URI"); } } else if ("date".equals(attributeType)) { - returnObject = ConverterUtil.convertToDate(attribValue); + returnObject = ConverterUtil.convertXmlToDate(attribValue); } else if ("dateTime".equals(attributeType)) { returnObject = ConverterUtil.convertToDateTime(attribValue); } else if ("time".equals(attributeType)) { Modified: axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java URL: http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java?rev=1176349&r1=1176348&r2=1176349&view=diff ============================================================================== --- axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java (original) +++ axis/axis2/java/core/trunk/modules/adb/test/org/apache/axis2/databinding/utils/ConverterUtilTest.java Tue Sep 27 12:15:27 2011 @@ -168,5 +168,44 @@ public class ConverterUtilTest extends T TestCase.assertTrue(ConverterUtil.convertToString(c).endsWith("+09:00")); } + + public void testconvertToDateXML() { + + Date date = null; + String dateStr = null; + + dateStr = "2007-02-15"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + dateStr = "2007-02-15Z"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + dateStr = "2007-02-15+05:30"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + dateStr = "2007-02-15-12:30"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + dateStr = "1997-07-16T19:20:30.45+01:00"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + dateStr = "2011-09-27T14:43:55.162+05:30"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + dateStr = "1997-07-16T19:20:30+01:00"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + dateStr = "1994-11-05T13:15:30Z"; + date = ConverterUtil.convertXmlToDate(dateStr); + assertNotNull(date); + + } }