Repository: olingo-odata4
Updated Branches:
  refs/heads/master 5004f4b1f -> a47e9f6ad


[OLINGO-796] Add support for java.sql.time


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/a47e9f6a
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/a47e9f6a
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/a47e9f6a

Branch: refs/heads/master
Commit: a47e9f6ad2571e333654d737c80cd5a810fc1fff
Parents: 5004f4b
Author: Christian Holzer <[email protected]>
Authored: Tue Dec 8 16:01:35 2015 +0100
Committer: Christian Holzer <[email protected]>
Committed: Tue Dec 8 16:01:35 2015 +0100

----------------------------------------------------------------------
 .../edm/primitivetype/EdmDateTimeOffset.java    |  8 +++++-
 .../primitivetype/EdmDateTimeOffsetTest.java    | 16 ++++++++++--
 .../edm/primitivetype/EdmTimeOfDayTest.java     | 26 +++++++++++++++++++-
 3 files changed, 46 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a47e9f6a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
index 61344fb..a7f57d1 100644
--- 
a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
+++ 
b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffset.java
@@ -18,6 +18,7 @@
  */
 package org.apache.olingo.commons.core.edm.primitivetype;
 
+import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.Calendar;
 import java.util.Date;
@@ -140,6 +141,8 @@ public final class EdmDateTimeOffset extends 
SingletonPrimitiveType {
       Timestamp timestamp = new Timestamp(dateTimeValue.getTimeInMillis());
       timestamp.setNanos(nanoSeconds);
       return returnType.cast(timestamp);
+    } else if(returnType.isAssignableFrom(Time.class)) {
+      return returnType.cast(new Time(dateTimeValue.getTimeInMillis()));
     } else {
       throw new ClassCastException("unsupported return type " + 
returnType.getSimpleName());
     }
@@ -202,7 +205,10 @@ public final class EdmDateTimeOffset extends 
SingletonPrimitiveType {
    */
   protected static <T> Calendar createDateTime(final T value) throws 
EdmPrimitiveTypeException {
     Calendar dateTimeValue;
-    if (value instanceof Date) {
+    if(value instanceof Time) {
+      dateTimeValue = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+      dateTimeValue.setTimeInMillis(((Time) value).getTime());
+    } else if (value instanceof Date) {
       // Although java.util.Date, as stated in its documentation,
       // "is intended to reflect coordinated universal time (UTC)",
       // its getName() method uses the default time zone. And so do we.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a47e9f6a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
index 17ea5ce..a352703 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDateTimeOffsetTest.java
@@ -21,6 +21,7 @@ package org.apache.olingo.commons.core.edm.primitivetype;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+import java.sql.Time;
 import java.sql.Timestamp;
 import java.util.Calendar;
 import java.util.Date;
@@ -75,7 +76,11 @@ public class EdmDateTimeOffsetTest extends 
PrimitiveTypeBaseTest {
     assertEquals("2012-02-29T23:32:03.007Z", instance.valueToString(millis, 
null, null, 3, null, null));
     assertEquals("1969-12-31T23:59:59.9Z", instance.valueToString(-100L, null, 
null, 1, null, null));
     assertEquals("1969-12-31T23:59:59.98Z", instance.valueToString(-20L, null, 
null, 2, null, null));
-
+    
+    assertEquals("2012-02-29T23:32:03.007Z", instance.valueToString(new 
Time(millis), null, null, 3, null, null));
+    assertEquals("1969-12-31T23:59:59.9Z", instance.valueToString(new 
Time(-100L), null, null, 1, null, null));
+    assertEquals("1969-12-31T23:59:59.98Z", instance.valueToString(new 
Time(-20L), null, null, 2, null, null));
+    
     final Date date = new Date(millis);
     final String time = date.toString().substring(11, 19);
     assertTrue(instance.valueToString(date, null, null, 3, null, 
null).contains(time));
@@ -128,7 +133,14 @@ public class EdmDateTimeOffsetTest extends 
PrimitiveTypeBaseTest {
         Long.class));
     assertEquals(Long.valueOf(120L), 
instance.valueOfString("1970-01-01T00:00:00.12", null, null, 2, null, null,
         Long.class));
-
+    
+    assertEquals(new Time(120000L), instance.valueOfString("1970-01-01T00:02", 
null, null, null, null, null,
+        Time.class));
+    assertEquals(new Time(12L), 
instance.valueOfString("1970-01-01T00:00:00.012", null, null, 3, null, null,
+        Time.class));
+    assertEquals(new Time(120L), 
instance.valueOfString("1970-01-01T00:00:00.12", null, null, 2, null, null,
+        Time.class));
+    
     expectFacetsErrorInValueOfString(instance, "2012-02-29T23:32:02.9Z", null, 
null, null, null, null);
     expectFacetsErrorInValueOfString(instance, "2012-02-29T23:32:02.9Z", null, 
null, 0, null, null);
     expectContentErrorInValueOfString(instance, "2012-02-29T23:32:02X");

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/a47e9f6a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDayTest.java
----------------------------------------------------------------------
diff --git 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDayTest.java
 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDayTest.java
index bdd45a2..e663724 100644
--- 
a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDayTest.java
+++ 
b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmTimeOfDayTest.java
@@ -20,6 +20,7 @@ package org.apache.olingo.commons.core.edm.primitivetype;
 
 import static org.junit.Assert.assertEquals;
 
+import java.sql.Time;
 import java.util.Calendar;
 import java.util.TimeZone;
 
@@ -60,7 +61,30 @@ public class EdmTimeOfDayTest extends PrimitiveTypeBaseTest {
 
     expectTypeErrorInValueToString(instance, 0);
   }
-
+  
+  @Test
+  public void toTimeObject() throws Exception {
+    Calendar dateTime = Calendar.getInstance();
+    dateTime.clear();
+    dateTime.setTimeZone(TimeZone.getTimeZone("GMT"));
+    dateTime.set(Calendar.HOUR, 12);
+    
+    Time timeValue = instance.valueOfString("12:00:00", null, null, null, 
null, null, Time.class);
+    assertEquals(dateTime.getTimeInMillis(), timeValue.getTime());
+  }
+  
+  @Test
+  public void fromTimeObject() throws Exception {
+    Calendar dateTime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
+    dateTime.clear();
+    dateTime.set(Calendar.HOUR, 5);
+    dateTime.set(Calendar.MINUTE, 59);
+    dateTime.set(Calendar.SECOND, 23);
+    
+    Time time = new Time(dateTime.getTimeInMillis());
+    assertEquals("05:59:23", instance.valueToString(time, null, null, null, 
null, null));
+  }
+  
   @Test
   public void valueOfString() throws Exception {
     Calendar dateTime = Calendar.getInstance();

Reply via email to