You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ra...@apache.org on 2022/01/25 09:36:14 UTC
[olingo-odata4] branch master updated: [OLINGO-1556]Fix scale handling of BigDecimals in EdmAssistedJsonSerializer
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 72d5e91 [OLINGO-1556]Fix scale handling of BigDecimals in EdmAssistedJsonSerializer
72d5e91 is described below
commit 72d5e9195c1e8e8f1284dc5cd11e1ce9aea5bfef
Author: ramya vasanth <ra...@sap.com>
AuthorDate: Tue Jan 25 15:05:52 2022 +0530
[OLINGO-1556]Fix scale handling of BigDecimals in EdmAssistedJsonSerializer
---
.../serializer/json/EdmAssistedJsonSerializer.java | 2 +-
.../json/EdmAssistedJsonSerializerTest.java | 22 ++++++++++++++++++++++
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
index c011fdd..0759031 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializer.java
@@ -310,7 +310,7 @@ public class EdmAssistedJsonSerializer implements EdmAssistedSerializer {
try {
Integer scale = null;
if (value instanceof BigDecimal) {
- scale = ((BigDecimal) value).scale();
+ scale = Math.max(0, ((BigDecimal) value).scale());
} else {
scale = Constants.DEFAULT_SCALE;
}
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
index ade9d5d..84031a7 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/EdmAssistedJsonSerializerTest.java
@@ -678,4 +678,26 @@ public class EdmAssistedJsonSerializerTest {
serialize(serializerMin, metadata, null, entityCollection, null)
.contains("1.6666666666666667406815349750104360282421112060546875"));
}
+
+ @Test
+ public void entityCollectionWithBigDecimalPropertyIntegerInScientificNotation() throws Exception {
+ EntityCollection entityCollection = new EntityCollection();
+ BigDecimal b = new BigDecimal("1.52E+4");
+ entityCollection.getEntities().add(new Entity()
+ .addProperty(new Property(null, "Property1", ValueType.PRIMITIVE, b)));
+ Assert.assertTrue(
+ serialize(serializerMin, metadata, null, entityCollection, null)
+ .contains("15200"));
+ }
+
+ @Test
+ public void entityCollectionWithBigDecimalPropertyInScientificNotation() throws Exception {
+ EntityCollection entityCollection = new EntityCollection();
+ BigDecimal b = new BigDecimal("1.52123123E+4");
+ entityCollection.getEntities().add(new Entity()
+ .addProperty(new Property(null, "Property1", ValueType.PRIMITIVE, b)));
+ Assert.assertTrue(
+ serialize(serializerMin, metadata, null, entityCollection, null)
+ .contains("15212.3123"));
+ }
}