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);
+
+    }
 
 }


Reply via email to