You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-commits@axis.apache.org by sa...@apache.org on 2011/09/27 14:15:28 UTC

svn commit: r1176349 - in /axis/axis2/java/core/trunk/modules/adb: src/org/apache/axis2/databinding/utils/ConverterUtil.java test/org/apache/axis2/databinding/utils/ConverterUtilTest.java

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