Blob Blame History Raw
From 2666e94ba8571dfc474d465b99c901e7a5f24e72 Mon Sep 17 00:00:00 2001
From: Marco Fargetta <mfargett@redhat.com>
Date: Thu, 21 Mar 2024 12:35:13 +0100
Subject: [PATCH] Remove ch.randelshofer.fastdoubleparser

---
 .../jackson/core/io/BigDecimalParser.java     | 47 +------------------
 .../jackson/core/io/BigIntegerParser.java     | 41 ----------------
 .../jackson/core/io/NumberInput.java          | 24 +---------
 .../jackson/core/io/BigDecimalParserTest.java |  6 +--
 .../jackson/core/io/BigIntegerParserTest.java | 46 ------------------
 5 files changed, 7 insertions(+), 157 deletions(-)
 delete mode 100644 src/main/java/com/fasterxml/jackson/core/io/BigIntegerParser.java
 delete mode 100644 src/test/java/com/fasterxml/jackson/core/io/BigIntegerParserTest.java

diff --git a/src/main/java/com/fasterxml/jackson/core/io/BigDecimalParser.java b/src/main/java/com/fasterxml/jackson/core/io/BigDecimalParser.java
index a90121ce..74f19bd8 100644
--- a/src/main/java/com/fasterxml/jackson/core/io/BigDecimalParser.java
+++ b/src/main/java/com/fasterxml/jackson/core/io/BigDecimalParser.java
@@ -1,7 +1,5 @@
 package com.fasterxml.jackson.core.io;
 
-import ch.randelshofer.fastdoubleparser.JavaBigDecimalParser;
-
 import java.math.BigDecimal;
 
 /**
@@ -55,14 +53,8 @@ public final class BigDecimalParser
      */
     public static BigDecimal parse(final char[] chars, final int off, final int len) {
         try {
-            if (len < 500) {
-                return new BigDecimal(chars, off, len);
-            }
-            return JavaBigDecimalParser.parseBigDecimal(chars, off, len);
-
-        // 20-Aug-2022, tatu: Although "new BigDecimal(...)" only throws NumberFormatException
-        //    operations by "parseBigDecimal()" can throw "ArithmeticException", so handle both:
-        } catch (ArithmeticException | NumberFormatException e) {
+            return new BigDecimal(chars, off, len);
+        } catch (NumberFormatException e) {
             throw _parseFailure(e, new String(chars, off, len));
         }
     }
@@ -82,42 +74,7 @@ public final class BigDecimalParser
         return parse(chars, 0, chars.length);
     }
 
-    /**
-     * Internal Jackson method. Please do not use.
-     *<p>
-     * Note: Caller MUST pre-validate that given String represents a valid representation
-     * of {@link BigDecimal} value: parsers in {@code jackson-core} do that; other
-     * code must do the same.
-     *
-     * @param valueStr
-     * @return BigDecimal value
-     * @throws NumberFormatException
-     */
-    public static BigDecimal parseWithFastParser(final String valueStr) {
-        try {
-            return JavaBigDecimalParser.parseBigDecimal(valueStr);
-        } catch (ArithmeticException | NumberFormatException e) {
-            throw _parseFailure(e, valueStr);
-        }
-    }
 
-    /**
-     * Internal Jackson method. Please do not use.
-     *<p>
-     * Note: Caller MUST pre-validate that given String represents a valid representation
-     * of {@link BigDecimal} value: parsers in {@code jackson-core} do that; other
-     * code must do the same.
-     *
-     * @return BigDecimal value
-     * @throws NumberFormatException
-     */
-    public static BigDecimal parseWithFastParser(final char[] ch, final int off, final int len) {
-        try {
-            return JavaBigDecimalParser.parseBigDecimal(ch, off, len);
-        } catch (ArithmeticException | NumberFormatException e) {
-            throw _parseFailure(e, new String(ch, off, len));
-        }
-    }
 
     private static NumberFormatException _parseFailure(Exception e, String fullValue) {
         String desc = e.getMessage();
diff --git a/src/main/java/com/fasterxml/jackson/core/io/BigIntegerParser.java b/src/main/java/com/fasterxml/jackson/core/io/BigIntegerParser.java
deleted file mode 100644
index 777c3f45..00000000
--- a/src/main/java/com/fasterxml/jackson/core/io/BigIntegerParser.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.fasterxml.jackson.core.io;
-
-import ch.randelshofer.fastdoubleparser.JavaBigIntegerParser;
-
-import java.math.BigInteger;
-
-import static com.fasterxml.jackson.core.io.BigDecimalParser.MAX_CHARS_TO_REPORT;
-
-/**
- * Helper class used to implement more optimized parsing of {@link BigInteger} for REALLY
- * big values (over 500 characters).
- *
- * @since 2.15
- */
-public final class BigIntegerParser
-{
-    private BigIntegerParser() {}
-
-    public static BigInteger parseWithFastParser(final String valueStr) {
-        try {
-            return JavaBigIntegerParser.parseBigInteger(valueStr);
-        } catch (NumberFormatException nfe) {
-            final String reportNum = valueStr.length() <= MAX_CHARS_TO_REPORT ?
-                    valueStr : valueStr.substring(0, MAX_CHARS_TO_REPORT) + " [truncated]";
-            throw new NumberFormatException("Value \"" + reportNum
-                    + "\" can not be represented as `java.math.BigInteger`, reason: " + nfe.getMessage());
-        }
-    }
-
-    public static BigInteger parseWithFastParser(final String valueStr, final int radix) {
-        try {
-            return JavaBigIntegerParser.parseBigInteger(valueStr, radix);
-        } catch (NumberFormatException nfe) {
-            final String reportNum = valueStr.length() <= MAX_CHARS_TO_REPORT ?
-                    valueStr : valueStr.substring(0, MAX_CHARS_TO_REPORT) + " [truncated]";
-            throw new NumberFormatException("Value \"" + reportNum
-                    + "\" can not be represented as `java.math.BigInteger` with radix " + radix +
-                    ", reason: " + nfe.getMessage());
-        }
-    }
-}
diff --git a/src/main/java/com/fasterxml/jackson/core/io/NumberInput.java b/src/main/java/com/fasterxml/jackson/core/io/NumberInput.java
index 86c73a89..a51eb875 100644
--- a/src/main/java/com/fasterxml/jackson/core/io/NumberInput.java
+++ b/src/main/java/com/fasterxml/jackson/core/io/NumberInput.java
@@ -1,8 +1,5 @@
 package com.fasterxml.jackson.core.io;
 
-import ch.randelshofer.fastdoubleparser.JavaDoubleParser;
-import ch.randelshofer.fastdoubleparser.JavaFloatParser;
-
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.util.regex.Pattern;
@@ -397,7 +394,7 @@ public final class NumberInput
      * @since v2.14
      */
     public static double parseDouble(final String s, final boolean useFastParser) throws NumberFormatException {
-        return useFastParser ? JavaDoubleParser.parseDouble(s) : Double.parseDouble(s);
+        return Double.parseDouble(s);
     }
 
     /**
@@ -422,9 +419,6 @@ public final class NumberInput
      * @since v2.14
      */
     public static float parseFloat(final String s, final boolean useFastParser) throws NumberFormatException {
-        if (useFastParser) {
-            return JavaFloatParser.parseFloat(s);
-        }
         return Float.parseFloat(s);
     }
 
@@ -448,9 +442,6 @@ public final class NumberInput
      * @since v2.15
      */
     public static BigDecimal parseBigDecimal(final String s, final boolean useFastParser) throws NumberFormatException {
-        if (useFastParser) {
-            return BigDecimalParser.parseWithFastParser(s);
-        }
         return BigDecimalParser.parse(s);
     }
 
@@ -481,9 +472,6 @@ public final class NumberInput
                                              final boolean useFastParser)
             throws NumberFormatException
     {
-        if (useFastParser) {
-            return BigDecimalParser.parseWithFastParser(ch, off, len);
-        }
         return BigDecimalParser.parse(ch, off, len);
     }
 
@@ -507,9 +495,7 @@ public final class NumberInput
      * @since v2.15
      */
     public static BigDecimal parseBigDecimal(final char[] ch, final boolean useFastParser) throws NumberFormatException {
-        return useFastParser ?
-                BigDecimalParser.parseWithFastParser(ch, 0, ch.length) :
-                BigDecimalParser.parse(ch);
+        return BigDecimalParser.parse(ch);
     }
 
     /**
@@ -533,9 +519,6 @@ public final class NumberInput
      * @since v2.15
      */
     public static BigInteger parseBigInteger(final String s, final boolean useFastParser) throws NumberFormatException {
-        if (useFastParser) {
-            return BigIntegerParser.parseWithFastParser(s);
-        }
         return new BigInteger(s);
     }
 
@@ -549,9 +532,6 @@ public final class NumberInput
      */
     public static BigInteger parseBigIntegerWithRadix(final String s, final int radix,
             final boolean useFastParser) throws NumberFormatException {
-        if (useFastParser) {
-            return BigIntegerParser.parseWithFastParser(s, radix);
-        }
         return new BigInteger(s, radix);
     }
 
diff --git a/src/test/java/com/fasterxml/jackson/core/io/BigDecimalParserTest.java b/src/test/java/com/fasterxml/jackson/core/io/BigDecimalParserTest.java
index 4a4bc5c5..1c06f0b4 100644
--- a/src/test/java/com/fasterxml/jackson/core/io/BigDecimalParserTest.java
+++ b/src/test/java/com/fasterxml/jackson/core/io/BigDecimalParserTest.java
@@ -16,7 +16,7 @@ public class BigDecimalParserTest extends com.fasterxml.jackson.core.BaseTest
 
     public void testLongInvalidStringFastParse() {
         try {
-            BigDecimalParser.parseWithFastParser(genLongInvalidString());
+            BigDecimalParser.parse(genLongInvalidString());
             fail("expected NumberFormatException");
         } catch (NumberFormatException nfe) {
             assertTrue("exception message starts as expected?", nfe.getMessage().startsWith("Value \"AAAAA"));
@@ -39,8 +39,8 @@ public class BigDecimalParserTest extends com.fasterxml.jackson.core.BaseTest
         final BigDecimal EXP = new BigDecimal(num);
 
         // Parse from String first, then char[]
-        assertEquals(EXP, BigDecimalParser.parseWithFastParser(num));
-        assertEquals(EXP, BigDecimalParser.parseWithFastParser(num.toCharArray(), 0, num.length()));
+        assertEquals(EXP, BigDecimalParser.parse(num));
+        assertEquals(EXP, BigDecimalParser.parse(num.toCharArray(), 0, num.length()));
     }
 
     static String genLongInvalidString() {
diff --git a/src/test/java/com/fasterxml/jackson/core/io/BigIntegerParserTest.java b/src/test/java/com/fasterxml/jackson/core/io/BigIntegerParserTest.java
deleted file mode 100644
index 7b8265d7..00000000
--- a/src/test/java/com/fasterxml/jackson/core/io/BigIntegerParserTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.fasterxml.jackson.core.io;
-
-public class BigIntegerParserTest extends com.fasterxml.jackson.core.BaseTest {
-
-    public void testFastParseBigIntegerFailsWithENotation() {
-        String num = "2e308";
-        try {
-            BigIntegerParser.parseWithFastParser(num);
-            fail("expected NumberFormatException");
-        } catch (NumberFormatException nfe) {
-            // expected
-        }
-    }
-
-    public void testLongStringFastParseBigInteger() {
-        try {
-            BigIntegerParser.parseWithFastParser(genLongString());
-            fail("expected NumberFormatException");
-        } catch (NumberFormatException nfe) {
-            assertTrue("exception message starts as expected?", nfe.getMessage().startsWith("Value \"AAAAA"));
-            assertTrue("exception message value contains: truncated", nfe.getMessage().contains("truncated"));
-            assertTrue("exception message value contains: BigInteger", nfe.getMessage().contains("BigInteger"));
-        }
-    }
-
-    public void testLongStringFastParseBigIntegerRadix() {
-        try {
-            BigIntegerParser.parseWithFastParser(genLongString(), 8);
-            fail("expected NumberFormatException");
-        } catch (NumberFormatException nfe) {
-            assertTrue("exception message starts as expected?", nfe.getMessage().startsWith("Value \"AAAAA"));
-            assertTrue("exception message value contains: truncated", nfe.getMessage().contains("truncated"));
-            assertTrue("exception message value contains: radix 8", nfe.getMessage().contains("radix 8"));
-            assertTrue("exception message value contains: BigInteger", nfe.getMessage().contains("BigInteger"));
-        }
-    }
-
-    static String genLongString() {
-        final int len = 1500;
-        final StringBuilder sb = new StringBuilder(len);
-        for (int i = 0; i < len; i++) {
-            sb.append("A");
-        }
-        return sb.toString();
-    }
-}
-- 
2.44.0