This is an automated email from the ASF dual-hosted git repository.

ramyav pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata2.git


The following commit(s) were added to refs/heads/master by this push:
     new 2c5a87a  [OLINGO-1176]Correct handling nanoseconds for Json format
2c5a87a is described below

commit 2c5a87ab54f448cfff167d95821065b529ac8952
Author: ramya vasanth <[email protected]>
AuthorDate: Thu Oct 24 10:37:51 2019 +0530

    [OLINGO-1176]Correct handling nanoseconds for Json format
---
 .../src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java | 4 +++-
 .../java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java    | 4 +++-
 .../java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java    | 5 +++++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
index dddb0a2..fdd0702 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTime.java
@@ -146,7 +146,9 @@ public class EdmDateTime extends AbstractSimpleType {
       return returnType.cast(dateTimeValue.getTime());
     } else if (returnType.isAssignableFrom(Timestamp.class)) {
         Timestamp timestamp = new Timestamp(dateTimeValue.getTimeInMillis());
-        timestamp.setNanos(nanoSeconds);
+        if (literalKind != EdmLiteralKind.JSON) {
+          timestamp.setNanos(nanoSeconds);
+        }
         return returnType.cast(timestamp);
     } else {
       throw new 
EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
diff --git 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
index 9f5abff..b2c4321 100644
--- 
a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
+++ 
b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/EdmDateTimeOffset.java
@@ -130,7 +130,9 @@ public class EdmDateTimeOffset extends AbstractSimpleType {
       return returnType.cast(new Date(millis));
     } else if (returnType.isAssignableFrom(Timestamp.class)) {
         Timestamp timestamp = new Timestamp(millis);
-        timestamp.setNanos(nanoSeconds);
+        if (literalKind != EdmLiteralKind.JSON) {
+          timestamp.setNanos(nanoSeconds);
+        }
         return returnType.cast(timestamp);
     } else {
       throw new 
EdmSimpleTypeException(EdmSimpleTypeException.VALUE_TYPE_NOT_SUPPORTED.addContent(returnType));
diff --git 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
index b0ce2f5..0908e1d 100644
--- 
a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
+++ 
b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/EdmSimpleTypeTest.java
@@ -1230,6 +1230,11 @@ public class EdmSimpleTypeTest extends BaseTest {
     assertEquals(dateTime, 
instance.valueOfString("datetimeoffset'2012-02-29T01:02:03Z'", 
EdmLiteralKind.URI, null,
         Calendar.class));
 
+    assertEquals(Long.parseLong("1454889571199"), 
instance.valueOfString("/Date(1454889571199)/", 
+        EdmLiteralKind.JSON, null, Timestamp.class).getTime());
+    assertEquals(Long.parseLong("145488957119912456"), 
instance.valueOfString("/Date(145488957119912456)/", 
+        EdmLiteralKind.JSON, null, Timestamp.class).getTime());
+        
     dateTime.clear();
     dateTime.setTimeZone(TimeZone.getTimeZone("GMT-01:30"));
     dateTime.set(2012, 1, 29, 1, 2, 3);

Reply via email to