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-odata4.git
The following commit(s) were added to refs/heads/master by this push:
new 3b85879 [OLINGO-1478]Fix jackson parser for handling big numbers
3b85879 is described below
commit 3b8587973ca3313927c20d4cecf2af1e521e73c1
Author: ramya vasanth <[email protected]>
AuthorDate: Thu Aug 27 10:10:52 2020 +0530
[OLINGO-1478]Fix jackson parser for handling big numbers
---
.../server/core/deserializer/json/ODataJsonDeserializer.java | 1 +
.../apache/olingo/server/tecsvc/provider/PropertyProvider.java | 2 ++
.../deserializer/json/ODataJsonDeserializerEntityTest.java | 10 ++++++++++
3 files changed, 13 insertions(+)
diff --git
a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
index ac29475..9b4fc8e 100644
---
a/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
+++
b/lib/server-core/src/main/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializer.java
@@ -334,6 +334,7 @@ public class ODataJsonDeserializer implements
ODataDeserializer {
private ObjectNode parseJsonTree(final InputStream stream) throws
IOException, DeserializerException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(DeserializationFeature.FAIL_ON_READING_DUP_TREE_KEY,
true);
+ objectMapper.configure(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS,
true);
JsonParser parser = new JsonFactory(objectMapper).createParser(stream);
final JsonNode tree = parser.getCodec().readTree(parser);
if (tree == null || !tree.isObject()) {
diff --git
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
index 4c306d3..febb04e 100644
---
a/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
+++
b/lib/server-tecsvc/src/main/java/org/apache/olingo/server/tecsvc/provider/PropertyProvider.java
@@ -454,6 +454,8 @@ public class PropertyProvider {
public static final CsdlProperty propertyDecimal_ExplicitNullable = new
CsdlProperty()
.setName("PropertyDecimal")
.setType(nameDecimal)
+ .setPrecision(31)
+ .setScale(14)
.setNullable(true);
public static final CsdlProperty propertyDouble = new CsdlProperty()
diff --git
a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
index 8961a1b..25ce502 100644
---
a/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
+++
b/lib/server-test/src/test/java/org/apache/olingo/server/core/deserializer/json/ODataJsonDeserializerEntityTest.java
@@ -1885,4 +1885,14 @@ public class ODataJsonDeserializerEntityTest extends
AbstractODataDeserializerTe
version.add("4.01");
return odata.createDeserializer(contentType, metadata,
version).entity(stream, entityType);
}
+
+ @Test
+ public void testEntityLargeNumbers() throws Exception {
+ String entityString =
+ "{\"PropertyKey\":327," +
+
"\"PropertyDecimal\":12345678912345678.1234567891234}";
+ final Entity entity = deserialize(entityString, "ETAllNullable");
+ assertNotNull(entity);
+ assertEquals(new BigDecimal("12345678912345678.1234567891234"),
entity.getProperties().get(1).getValue());
+ }
}