Sync from SUSE:SLFO:Main jackson-core revision af71e92899033de251be5e7cfa8016b7

This commit is contained in:
Adrian Schröter 2024-05-31 14:38:58 +02:00
parent 74a80af589
commit 10e2dce764
6 changed files with 197 additions and 103 deletions

View File

@ -15,8 +15,6 @@ it out. We can add it back in if we wish to package it later.
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 0e42d163..e350d3c3 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 @@
@ -25,40 +23,64 @@ index 0e42d163..e350d3c3 100644
-import ch.randelshofer.fastdoubleparser.JavaBigDecimalParser;
-
import java.math.BigDecimal;
import java.util.Arrays;
@@ -62,28 +60,6 @@ public final class BigDecimalParser
/**
@@ -55,10 +53,7 @@ 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);
+ return new BigDecimal(chars, off, len);
// 20-Aug-2022, tatu: Although "new BigDecimal(...)" only throws NumberFormatException
// operations by "parseBigDecimal()" can throw "ArithmeticException", so handle both:
@@ -82,43 +77,6 @@ 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 (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.BigDecimal`, reason: " + nfe.getMessage());
- } 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 (NumberFormatException nfe) {
- final String reportNum = len <= MAX_CHARS_TO_REPORT ?
- new String(ch, off, len) : new String(ch, off, MAX_CHARS_TO_REPORT) + " [truncated]";
- throw new NumberFormatException("Value \"" + reportNum
- + "\" can not be represented as `java.math.BigDecimal`, reason: " + nfe.getMessage());
- } catch (ArithmeticException | NumberFormatException e) {
- throw _parseFailure(e, new String(ch, off, len));
- }
- }
-
private static BigDecimal parseBigDecimal(final char[] chars, final int off, final int len, final int splitLen) {
boolean numHasSign = false;
boolean expHasSign = false;
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
private static NumberFormatException _parseFailure(Exception e, String fullValue) {
String desc = e.getMessage();
// 05-Feb-2021, tatu: Alas, JDK mostly has null message so:
--- a/src/main/java/com/fasterxml/jackson/core/io/BigIntegerParser.java
+++ /dev/null
@@ -1,41 +0,0 @@
@ -103,8 +125,6 @@ index 777c3f45..00000000
- }
- }
-}
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 e216f48a..f8f0f2c6 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 @@
@ -115,8 +135,8 @@ index e216f48a..f8f0f2c6 100644
-
import java.math.BigDecimal;
import java.math.BigInteger;
@@ -385,7 +382,7 @@ public final class NumberInput
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 {
@ -125,38 +145,37 @@ index e216f48a..f8f0f2c6 100644
}
/**
@@ -407,7 +404,7 @@ public final class NumberInput
@@ -422,9 +419,6 @@ public final class NumberInput
* @since v2.14
*/
public static float parseFloat(final String s, final boolean useFastParser) throws NumberFormatException {
- return useFastParser ? JavaFloatParser.parseFloat(s) : Float.parseFloat(s);
+ return Float.parseFloat(s);
- if (useFastParser) {
- return JavaFloatParser.parseFloat(s);
- }
return Float.parseFloat(s);
}
/**
@@ -427,9 +424,7 @@ public final class NumberInput
@@ -448,9 +442,6 @@ public final class NumberInput
* @since v2.15
*/
public static BigDecimal parseBigDecimal(final String s, final boolean useFastParser) throws NumberFormatException {
- return useFastParser ?
- BigDecimalParser.parseWithFastParser(s) :
- BigDecimalParser.parse(s);
+ return BigDecimalParser.parse(s);
- if (useFastParser) {
- return BigDecimalParser.parseWithFastParser(s);
- }
return BigDecimalParser.parse(s);
}
/**
@@ -455,9 +450,7 @@ public final class NumberInput
public static BigDecimal parseBigDecimal(final char[] ch, final int off, final int len,
@@ -481,9 +472,6 @@ public final class NumberInput
final boolean useFastParser)
throws NumberFormatException {
- return useFastParser ?
- BigDecimalParser.parseWithFastParser(ch, off, len) :
- BigDecimalParser.parse(ch, off, len);
+ return BigDecimalParser.parse(ch, off, len);
throws NumberFormatException
{
- if (useFastParser) {
- return BigDecimalParser.parseWithFastParser(ch, off, len);
- }
return BigDecimalParser.parse(ch, off, len);
}
/**
@@ -477,9 +470,7 @@ public final class NumberInput
@@ -507,9 +495,7 @@ public final class NumberInput
* @since v2.15
*/
public static BigDecimal parseBigDecimal(final char[] ch, final boolean useFastParser) throws NumberFormatException {
@ -167,78 +186,76 @@ index e216f48a..f8f0f2c6 100644
}
/**
@@ -500,11 +491,7 @@ public final class NumberInput
@@ -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);
- } else {
- return parseBigInteger(s);
- }
+ return parseBigInteger(s);
return new BigInteger(s);
}
/**
@@ -517,10 +504,6 @@ public final class NumberInput
@@ -549,9 +532,6 @@ public final class NumberInput
*/
public static BigInteger parseBigIntegerWithRadix(final String s, final int radix,
final boolean useFastParser) throws NumberFormatException {
final boolean useFastParser) throws NumberFormatException {
- if (useFastParser) {
- return BigIntegerParser.parseWithFastParser(s, radix);
- } else {
- return new BigInteger(s, radix);
- }
+ return new BigInteger(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 a4e41cd3..436d74cd 100644
--- a/src/test/java/com/fasterxml/jackson/core/io/BigDecimalParserTest.java
+++ b/src/test/java/com/fasterxml/jackson/core/io/BigDecimalParserTest.java
@@ -2,26 +2,17 @@ package com.fasterxml.jackson.core.io;
public class BigDecimalParserTest extends com.fasterxml.jackson.core.BaseTest {
public void testLongStringParse() {
- try {
- BigDecimalParser.parse(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"));
@@ -10,19 +10,13 @@ class BigDecimalParserTest extends com.f
{
@Test
void longInvalidStringParse() {
+ final int len = 1500;
+ final StringBuilder sb = new StringBuilder(len);
+ for (int i = 0; i < len; i++) {
+ sb.append("A");
}
+ }
try {
- BigDecimalParser.parse(genLongInvalidString());
- fail("expected NumberFormatException");
- } catch (NumberFormatException nfe) {
- assertTrue(nfe.getMessage().startsWith("Value \"AAAAA"), "exception message starts as expected?");
- assertTrue(nfe.getMessage().contains("truncated"), "exception message value contains truncated");
- }
- }
-
- public void testLongStringFastParse() {
try {
- BigDecimalParser.parseWithFastParser(genLongString());
- @Test
- void longInvalidStringFastParse() {
- try {
- BigDecimalParser.parseWithFastParser(genLongInvalidString());
+ BigDecimalParser.parse(sb.toString());
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(nfe.getMessage().startsWith("Value \"AAAAA"), "exception message starts as expected?");
@@ -69,4 +63,7 @@ class BigDecimalParserTest extends com.f
sb.append('1');
return sb.toString();
}
-
- private String genLongString() {
- return BigIntegerParserTest.genLongString();
- }
+ private String genLongString() {
+ return BigIntegerParserTest.genLongString();
+ }
}
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 @@
@@ -1,54 +0,0 @@
-package com.fasterxml.jackson.core.io;
-
-public class BigIntegerParserTest extends com.fasterxml.jackson.core.BaseTest {
-import org.junit.jupiter.api.Test;
-
- public void testFastParseBigIntegerFailsWithENotation() {
-import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
-
-class BigIntegerParserTest extends com.fasterxml.jackson.core.JUnit5TestBase {
-
- @Test
- void fastParseBigIntegerFailsWithENotation() {
- String num = "2e308";
- try {
- BigIntegerParser.parseWithFastParser(num);
@ -248,26 +265,28 @@ index 7b8265d7..00000000
- }
- }
-
- public void testLongStringFastParseBigInteger() {
- @Test
- void longStringFastParseBigInteger() {
- 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"));
- assertTrue(nfe.getMessage().startsWith("Value \"AAAAA"), "exception message starts as expected?");
- assertTrue(nfe.getMessage().contains("truncated"), "exception message value contains: truncated");
- assertTrue(nfe.getMessage().contains("BigInteger"), "exception message value contains: BigInteger");
- }
- }
-
- public void testLongStringFastParseBigIntegerRadix() {
- @Test
- void longStringFastParseBigIntegerRadix() {
- 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"));
- assertTrue(nfe.getMessage().startsWith("Value \"AAAAA"), "exception message starts as expected?");
- assertTrue(nfe.getMessage().contains("truncated"), "exception message value contains: truncated");
- assertTrue(nfe.getMessage().contains("radix 8"), "exception message value contains: radix 8");
- assertTrue(nfe.getMessage().contains("BigInteger"), "exception message value contains: BigInteger");
- }
- }
-
@ -280,6 +299,3 @@ index 7b8265d7..00000000
- return sb.toString();
- }
-}
--
2.40.1

BIN
jackson-core-2.15.2.tar.gz (Stored with Git LFS)

Binary file not shown.

BIN
jackson-core-2.17.1.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -11,12 +11,13 @@
<property name="project.groupId" value="com.fasterxml.jackson.core"/>
<property name="project.artifactId" value="jackson-core"/>
<property name="project.name" value="Jackson-core"/>
<property name="project.version" value="2.15.2"/>
<property name="project.version" value="2.17.1"/>
<property name="project.vendor" value="FasterXML"/>
<property name="project.description" value="Core Jackson processing abstractions (aka Streaming API), implementation for JSON"/>
<property name="bundle.version" value="${project.version}"/>
<property name="compiler.source" value="1.8"/>
<property name="compiler.release" value="8"/>
<property name="compiler.source" value="1.${compiler.release}"/>
<property name="compiler.target" value="${compiler.source}"/>
<property name="build.finalName" value="${project.artifactId}-${project.version}"/>
@ -77,6 +78,7 @@
debug="true"
optimize="false"
deprecation="true"
release="${compiler.release}"
target="${compiler.target}"
verbose="false"
fork="false"
@ -106,6 +108,7 @@
debug="true"
optimize="false"
deprecation="true"
release="${compiler.release}"
target="${compiler.target}"
verbose="false"
fork="false"

View File

@ -1,3 +1,78 @@
-------------------------------------------------------------------
Mon May 20 12:29:23 UTC 2024 - Gus Kenion <gus.kenion@suse.com>
- Update to 2.17.1
* #1241: Fix `NumberInput.looksLikeValidNumber()` implementation
(contributed by @pjfanning)
* #1256: Revert #1117: change default recycler pool back to
`threadLocalPool()` for 2.17.1
- Includes changes from 2.17.0
* #507: Add `JsonWriteFeature.ESCAPE_FORWARD_SLASHES` to allow
escaping of '/' for String values (contributed by Joo-Hyuk K)
* #1117: Change default `RecylerPool` implementation to
`newLockFreePool` (from `threadLocalPool`)
* #1137: Improve detection of "is a NaN" to only consider
explicit cases, not `double` overflow/underflow
* #1145: `JsonPointer.appendProperty(String)` does not escape the
property name (reported by Robert E)
* #1149: Add `JsonParser.getNumberTypeFP()`
* #1157: Use fast parser (FDP) for large `BigDecimal`s (500+
chars) (contributed by @pjfanning)
* #1169: `ArrayIndexOutOfBoundsException` for specific invalid
content, with Reader-based parser
* #1173: `JsonLocation` consistently off by one character for
many invalid JSON parsing cases (reported by Paul B)
* #1179: Allow configuring `DefaultPrettyPrinter` separators for
empty Arrays and Objects (contributed by Guillaume L)
* #1186: `BufferRecycler` should avoid setting replacement if one
already returned, bigger (suggested by @kkkkkhhhh)
* #1195: Use `BufferRecycler` provided by output (`OutputStream`,
`Writer`) object if available (contributed by Mario F)
* #1202: Add `RecyclerPool.clear()` method for dropping all
pooled Objects
* #1203: Faster division by 1000 (contributed by @xtonik)
* #1205:
JsonFactory.setStreamReadConstraints(StreamReadConstraints)
fails to update "maxNameLength" for symbol tables (reported by
@denizk)
* #1217: Optimize char comparison using bitwise OR (contributed
by @xtonik)
* #1218: Simplify Unicode surrogate pair conversion for
generation (contributed by @xtonik)
-------------------------------------------------------------------
Fri Mar 8 08:33:47 UTC 2024 - Gus Kenion <gkenion@suse.com>
- Update to 2.16.1
* 2.16.1 (24-Dec-2023)
+ #1141: NPE in Version.equals() if snapshot-info null
+ #1161: NPE in "FastDoubleParser", method "JavaBigDecimalParser.parseBigDecimal()"
+ #1168: JsonPointer.append(JsonPointer.tail()) includes the original pointer
* 2.16.0 (15-Nov-2023)
+ #991: Change StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION default to false in Jackson 2.16
+ #1007: Improve error message for StreamReadConstraints violations
+ #1015: JsonFactory implementations should respect CANONICALIZE_FIELD_NAMES
+ #1035: Root cause for failing test for testMangledIntsBytes() in ParserErrorHandlingTest
+ #1036: Allow all array elements in JsonPointerBasedFilter
+ #1039: Indicate explicitly blocked sources as "REDACTED" instead of "UNKNOWN" in JsonLocation
+ #1041: Start using AssertJ in unit tests
+ #1042: Allow configuring spaces before and/or after the colon in DefaultPrettyPrinter (for Canonical JSON)
+ #1046: Add configurable limit for the maximum number of bytes/chars of content to parse before failing
+ #1047: Add configurable limit for the maximum length of Object property names to parse before failing
+ #1048: Add configurable processing limits for JSON generator (StreamWriteConstraints)
+ #1050: Compare _snapshotInfo in Version
+ #1051: Add JsonGeneratorDecorator to allow decorating JsonGenerators
+ #1064: Add full set of BufferRecyclerPool implementations
+ #1066: Add configurable error report behavior via ErrorReportConfiguration
+ #1081: Make ByteSourceJsonBootstrapper use StringReader for < 8KiB byte[] inputs
+ #1089: Allow pluggable buffer recycling via new RecyclerPool extension point
+ #1136: Change parsing error message to mention -INF
-------------------------------------------------------------------
Wed Feb 21 10:45:26 UTC 2024 - Gus Kenion <gus.kenion@suse.com>
- Use %patch -P N instead of deprecated %patchN.
-------------------------------------------------------------------
Mon Aug 21 13:05:24 UTC 2023 - Fridrich Strba <fstrba@suse.com>

View File

@ -1,7 +1,7 @@
#
# spec file for package jackson-core
#
# Copyright (c) 2023 SUSE LLC
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -17,7 +17,7 @@
Name: jackson-core
Version: 2.15.2
Version: 2.17.1
Release: 0
Summary: Core part of Jackson
License: Apache-2.0
@ -46,7 +46,7 @@ This package contains API documentation for %{name}.
%prep
%setup -q -n %{name}-%{name}-%{version}
cp %{SOURCE1} build.xml
%patch0 -p1
%patch -P 0 -p1
%pom_remove_dep "ch.randelshofer:fastdoubleparser"
%build