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"));
+  }
 }