Fixes: Big integer's last some digits become zero after read.

Project: http://git-wip-us.apache.org/repos/asf/metamodel/repo
Commit: http://git-wip-us.apache.org/repos/asf/metamodel/commit/a4c18b38
Tree: http://git-wip-us.apache.org/repos/asf/metamodel/tree/a4c18b38
Diff: http://git-wip-us.apache.org/repos/asf/metamodel/diff/a4c18b38

Branch: refs/heads/master
Commit: a4c18b387d6d117d7f75ce8f81ae321e9510bcbc
Parents: 3982a58
Author: hling <[email protected]>
Authored: Mon Aug 13 18:19:39 2018 +0800
Committer: hling <[email protected]>
Committed: Mon Aug 13 18:19:39 2018 +0800

----------------------------------------------------------------------
 .../main/java/org/apache/metamodel/util/NumberComparator.java   | 4 ++++
 .../java/org/apache/metamodel/util/NumberComparatorTest.java    | 5 ++++-
 2 files changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/metamodel/blob/a4c18b38/core/src/main/java/org/apache/metamodel/util/NumberComparator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/metamodel/util/NumberComparator.java 
b/core/src/main/java/org/apache/metamodel/util/NumberComparator.java
index 84c1fd2..1c42083 100644
--- a/core/src/main/java/org/apache/metamodel/util/NumberComparator.java
+++ b/core/src/main/java/org/apache/metamodel/util/NumberComparator.java
@@ -136,6 +136,10 @@ public final class NumberComparator implements 
Comparator<Object> {
             } catch (NumberFormatException e) {
             }
             try {
+                return new BigInteger(stringValue);
+            } catch (NumberFormatException e) {
+            }            
+            try {
                 return Double.parseDouble(stringValue);
             } catch (NumberFormatException e) {
             }

http://git-wip-us.apache.org/repos/asf/metamodel/blob/a4c18b38/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java
----------------------------------------------------------------------
diff --git 
a/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java 
b/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java
index e138607..c416feb 100644
--- a/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java
+++ b/core/src/test/java/org/apache/metamodel/util/NumberComparatorTest.java
@@ -50,7 +50,10 @@ public class NumberComparatorTest {
     public void testToNumberLong() throws Exception {
         assertEquals(4212000000l, NumberComparator.toNumber("4212000000"));
     }
-
+    @Test
+    public void testToNumberBigInteger() throws Exception {
+        assertEquals(new BigInteger("42120000000000004212"), 
NumberComparator.toNumber("42120000000000004212"));
+    }    
     @Test
     public void testToNumberDouble() throws Exception {
         assertEquals(42.12, NumberComparator.toNumber("42.12"));

Reply via email to