[OLINGO-1176]Correct handling nanoseconds for Json format
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 @@
       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 @@
       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 @@
     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);