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