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 <[email protected]>
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"));
+  }
 }

Reply via email to