You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/02/16 05:45:34 UTC

svn commit: r628238 - in /ode/branches/APACHE_ODE_1.1/utils/src: main/java/org/apache/ode/utils/ISO8601DateParser.java test/java/org/apache/ode/utils/ISO8601DateParserTest.java

Author: mriou
Date: Fri Feb 15 20:45:34 2008
New Revision: 628238

URL: http://svn.apache.org/viewvc?rev=628238&view=rev
Log:
Fixing schema date format for milliseconds.

Modified:
    ode/branches/APACHE_ODE_1.1/utils/src/main/java/org/apache/ode/utils/ISO8601DateParser.java
    ode/branches/APACHE_ODE_1.1/utils/src/test/java/org/apache/ode/utils/ISO8601DateParserTest.java

Modified: ode/branches/APACHE_ODE_1.1/utils/src/main/java/org/apache/ode/utils/ISO8601DateParser.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/utils/src/main/java/org/apache/ode/utils/ISO8601DateParser.java?rev=628238&r1=628237&r2=628238&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.1/utils/src/main/java/org/apache/ode/utils/ISO8601DateParser.java (original)
+++ ode/branches/APACHE_ODE_1.1/utils/src/main/java/org/apache/ode/utils/ISO8601DateParser.java Fri Feb 15 20:45:34 2008
@@ -70,6 +70,14 @@
                     // insert milliseconds
                     buffer.insert(19, ".000");
                 }
+                if (buffer.charAt(19) == '.' && (buffer.length() < 22 ||
+                        (buffer.lastIndexOf("-") < 23 && buffer.lastIndexOf("-") > 19) ||
+                        (buffer.lastIndexOf("+") < 23 && buffer.lastIndexOf("+") > 0)))
+                    buffer.insert(20, "0");
+                if (buffer.charAt(19) == '.' && (buffer.length() < 22 ||
+                        (buffer.lastIndexOf("-") < 23 && buffer.lastIndexOf("-") > 19) ||
+                        (buffer.lastIndexOf("+") < 23 && buffer.lastIndexOf("+") > 0)))
+                    buffer.insert(20, "0");
                 if (buffer.length() > 23) {
                     // append timezone
                     pattern = pattern + "Z";

Modified: ode/branches/APACHE_ODE_1.1/utils/src/test/java/org/apache/ode/utils/ISO8601DateParserTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.1/utils/src/test/java/org/apache/ode/utils/ISO8601DateParserTest.java?rev=628238&r1=628237&r2=628238&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.1/utils/src/test/java/org/apache/ode/utils/ISO8601DateParserTest.java (original)
+++ ode/branches/APACHE_ODE_1.1/utils/src/test/java/org/apache/ode/utils/ISO8601DateParserTest.java Fri Feb 15 20:45:34 2008
@@ -28,43 +28,68 @@
 
 public class ISO8601DateParserTest extends TestCase {
 
-  public void test1() throws ParseException {
-    String in = "2004-05-31T09:19:31-05:00";
+    public void test1() throws ParseException {
+        String in = "2004-05-31T09:19:31-05:00";
 
-    Date d = ISO8601DateParser.parse(in);
-    assertDate(d, 2004, 5, 31, 9, 19, 31, "GMT-5");
-  }
-
-  public void test2() throws ParseException {
-    String in = "2004-06-23T17:25:31-00:00";
-    Date d = ISO8601DateParser.parse(in);
-    assertDate(d, 2004, 6, 23, 17, 25, 31, "GMT");
-  }
-
-  public void test3() throws ParseException {
-    String in = "2004-06-23T17:25-00:00";
-    Date d = ISO8601DateParser.parse(in);
-    assertDate(d, 2004, 6, 23, 17, 25, 0, "GMT");
-  }
-
-  public void test4() throws ParseException {
-    String in = "2002-10-02T10:00:00-05:00";
-    Date d = ISO8601DateParser.parse(in);
-    assertDate(d, 2002, 10, 2, 10, 0, 0, "GMT-5");
-  }
-
-  private void assertDate(Date d, int year, int month, int day,
-                         int hour, int minute, int second, String tz) {
-    Calendar cal = Calendar.getInstance();
-    cal.setTime(d);
-    cal.setTimeZone(TimeZone.getTimeZone(tz));
-
-    assertEquals(year, cal.get(Calendar.YEAR));
-    assertEquals(month - 1, cal.get(Calendar.MONTH));
-    assertEquals(day, cal.get(Calendar.DAY_OF_MONTH));
-    assertEquals(hour, cal.get(Calendar.HOUR_OF_DAY));
-    assertEquals(minute, cal.get(Calendar.MINUTE));
-    assertEquals(second, cal.get(Calendar.SECOND));
-  }
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2004, 5, 31, 9, 19, 31, 0, "GMT-5");
+    }
+
+    public void test2() throws ParseException {
+        String in = "2004-06-23T17:25:31-00:00";
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2004, 6, 23, 17, 25, 31, 0, "GMT");
+    }
+
+    public void test3() throws ParseException {
+        String in = "2004-06-23T17:25-00:00";
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2004, 6, 23, 17, 25, 0, 0, "GMT");
+    }
+
+    public void test4() throws ParseException {
+        String in = "2002-10-02T10:00:00-05:00";
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2002, 10, 2, 10, 0, 0, 0, "GMT-5");
+    }
+
+    public void test5() throws ParseException {
+        String in = "2008-02-15T18:44:54.9-08:00";
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2008, 2, 15, 18, 44, 54, 9, "GMT-8");
+    }
+
+    public void test6() throws ParseException {
+        String in = "2008-02-15T18:44:54.109-08:00";
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2008, 2, 15, 18, 44, 54, 109, "GMT-8");
+    }
+
+    public void test7() throws ParseException {
+        String in = "2004-06-23T17:25:31.6";
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2004, 6, 23, 17, 25, 31, 6, null);
+    }
+
+    public void test8() throws ParseException {
+        String in = "2004-06-23T17:25:10.826";
+        Date d = ISO8601DateParser.parse(in);
+        assertDate(d, 2004, 6, 23, 17, 25, 10, 826, null);
+    }
+
+    private void assertDate(Date d, int year, int month, int day,
+                            int hour, int minute, int second, int ms, String tz) {
+        Calendar cal = Calendar.getInstance();
+        cal.setTime(d);
+        if (tz != null) cal.setTimeZone(TimeZone.getTimeZone(tz));
+
+        assertEquals(year, cal.get(Calendar.YEAR));
+        assertEquals(month - 1, cal.get(Calendar.MONTH));
+        assertEquals(day, cal.get(Calendar.DAY_OF_MONTH));
+        assertEquals(hour, cal.get(Calendar.HOUR_OF_DAY));
+        assertEquals(minute, cal.get(Calendar.MINUTE));
+        assertEquals(second, cal.get(Calendar.SECOND));
+        assertEquals(ms, cal.get(Calendar.MILLISECOND));
+    }
 
 }