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 <ramya.vasa...@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");