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 2021/09/17 05:09:45 UTC

[olingo-odata4] branch master updated: [OLINGO-1545]Scientific notation value of Edm.Double cannot be processed

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 de412ea  [OLINGO-1545]Scientific notation value of Edm.Double cannot be processed
de412ea is described below

commit de412ea9712d21f69d33025c4d19b40f5d5ab836
Author: ramya vasanth <ra...@sap.com>
AuthorDate: Fri Sep 17 10:39:32 2021 +0530

    [OLINGO-1545]Scientific notation value of Edm.Double cannot be processed
---
 .../org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java | 2 +-
 .../org/apache/olingo/commons/core/edm/primitivetype/EdmSingle.java | 2 +-
 .../apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java | 3 ++-
 .../apache/olingo/commons/core/edm/primitivetype/EdmSingleTest.java | 6 ++++--
 4 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java
index 3d21b6b..6a3b408 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDouble.java
@@ -85,7 +85,7 @@ public final class EdmDouble extends SingletonPrimitiveType {
       result = bigDecimalValue.doubleValue();
       // "Real" infinite values have been treated already above, so we can throw an exception
       // if the conversion to a double results in an infinite value.
-      if (result.isInfinite() || BigDecimal.valueOf(result).compareTo(bigDecimalValue) != 0) {
+      if (result.isInfinite()) {
         throw new EdmPrimitiveTypeException("The literal '" + value + "' has illegal content.");
       }
     }
diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingle.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingle.java
index 1fd98f0..8803663 100644
--- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingle.java
+++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingle.java
@@ -78,7 +78,7 @@ public final class EdmSingle extends SingletonPrimitiveType {
       result = bigDecimalValue.floatValue();
       // "Real" infinite values have been treated already above, so we can throw an exception
       // if the conversion to a float results in an infinite value.
-      if (result.isInfinite() || bigDecimalValue.compareTo(new BigDecimal(result.toString())) != 0) {
+      if (result.isInfinite()) {
         throw new EdmPrimitiveTypeException("The literal '" + value + "' has illegal content.");
       }
     }
diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java
index 2224265..c301b32 100644
--- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java
+++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmDoubleTest.java
@@ -100,10 +100,11 @@ public class EdmDoubleTest extends PrimitiveTypeBaseTest {
         null, Double.class));
     assertEquals(Float.valueOf(Float.POSITIVE_INFINITY), instance.valueOfString("INF", null, null, null, null, null,
         Float.class));
+    assertEquals(Double.valueOf(1234567890.12345678), instance.valueOfString("1234567890.12345678", 
+    		null, null, null, null, null, Double.class));
 
     expectContentErrorInValueOfString(instance, "0.");
     expectContentErrorInValueOfString(instance, ".0");
-    expectContentErrorInValueOfString(instance, "1234567890.12345678");
     expectContentErrorInValueOfString(instance, "42E400");
     expectContentErrorInValueOfString(instance, "42.42.42");
     expectContentErrorInValueOfString(instance, "42F");
diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingleTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingleTest.java
index d2ca44c..ca8503a 100644
--- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingleTest.java
+++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmSingleTest.java
@@ -81,6 +81,10 @@ public class EdmSingleTest extends PrimitiveTypeBaseTest {
 
   @Test
   public void valueOfString() throws Exception {
+	assertEquals(Double.valueOf(1E-50), instance.valueOfString("1E-50", null, null, null, 
+			null, null, Double.class));
+	assertEquals(Double.valueOf(12345.6789), instance.valueOfString("12345.6789", null, 
+			null, null, null, null, Double.class));
     assertEquals(Float.valueOf(1.42F), instance.valueOfString("1.42", null, null, null, null, null, Float.class));
     assertEquals(Double.valueOf(-42.42), instance.valueOfString("-42.42", null, null, null, null, null, Double.class));
     assertEquals(Float.valueOf(42.0F), instance.valueOfString("42", null, null, null, null, null, Float.class));
@@ -106,8 +110,6 @@ public class EdmSingleTest extends PrimitiveTypeBaseTest {
 
     expectContentErrorInValueOfString(instance, "0.");
     expectContentErrorInValueOfString(instance, ".0");
-    expectContentErrorInValueOfString(instance, "1E-50");
-    expectContentErrorInValueOfString(instance, "12345.6789");
     expectContentErrorInValueOfString(instance, "42E42");
     expectContentErrorInValueOfString(instance, "42.42.42");
     expectContentErrorInValueOfString(instance, "42.42.42");