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