From 1e48f398ea23a79c28d89b8b0f657da3e935f5ac Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Wed, 22 Jan 2025 21:28:03 +0100 Subject: [PATCH 1/9] try to fix issue where _numberString is used despite having old value --- .../com/fasterxml/jackson/core/base/ParserBase.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java b/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java index e2d80de125..d2484d838f 100644 --- a/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java +++ b/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java @@ -790,6 +790,7 @@ public int getIntValue() throws IOException } if ((_numTypesValid & NR_INT) == 0) { // wasn't an int natively? convertNumberToInt(); // let's make it so, if possible + _numberString = null; } } return _numberInt; @@ -804,6 +805,7 @@ public long getLongValue() throws IOException } if ((_numTypesValid & NR_LONG) == 0) { convertNumberToLong(); + _numberString = null; } } return _numberLong; @@ -818,6 +820,8 @@ public BigInteger getBigIntegerValue() throws IOException } if ((_numTypesValid & NR_BIGINT) == 0) { convertNumberToBigInteger(); + _numberString = null; + return _numberBigInt; } } return _getBigInteger(); @@ -840,6 +844,8 @@ public float getFloatValue() throws IOException } if ((_numTypesValid & NR_FLOAT) == 0) { convertNumberToFloat(); + _numberString = null; + return _numberFloat; } } return _getNumberFloat(); @@ -854,6 +860,8 @@ public double getDoubleValue() throws IOException } if ((_numTypesValid & NR_DOUBLE) == 0) { convertNumberToDouble(); + _numberString = null; + return _numberDouble; } } return _getNumberDouble(); @@ -868,6 +876,8 @@ public BigDecimal getDecimalValue() throws IOException } if ((_numTypesValid & NR_BIGDECIMAL) == 0) { convertNumberToBigDecimal(); + _numberString = null; + return _numberBigDecimal; } } return _getBigDecimal(); From 6e607eaa5c8cfe2b71ba60bede330c2a50a30d19 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 23 Jan 2025 00:03:23 +0100 Subject: [PATCH 2/9] Create JsonNumberParsingTest.java --- .../core/read/JsonNumberParsingTest.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java diff --git a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java new file mode 100644 index 0000000000..ff9de109b6 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java @@ -0,0 +1,37 @@ +package com.fasterxml.jackson.core.read; + +import com.fasterxml.jackson.core.JUnit5TestBase; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.TokenStreamFactory; +import org.junit.jupiter.api.Test; + +import java.math.BigDecimal; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +class JsonNumberParsingTest extends JUnit5TestBase +{ + // [jackson-databind#4917] + @Test + public void bigDecimal4917() throws Exception + { + final String json = a2q("{'decimalHolder':100.00,'number':50}"); + TokenStreamFactory jsonF = newStreamFactory(); + for (int mode : ALL_MODES) { + try (JsonParser p = createParser(jsonF, MODE_READER, json)) { + assertToken(JsonToken.START_OBJECT, p.nextToken()); + assertToken(JsonToken.FIELD_NAME, p.nextToken()); + assertEquals("decimalHolder", p.currentName()); + assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); + assertEquals(new BigDecimal("100.00"), p.getDecimalValue()); + assertToken(JsonToken.FIELD_NAME, p.nextToken()); + assertEquals("number", p.currentName()); + assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); + assertEquals(50.0, p.getDoubleValue()); + assertEquals(50, p.getIntValue()); + assertToken(JsonToken.END_OBJECT, p.nextToken()); + } + } + } +} From 5c6068e3fab76e3bb9ef7bfd72faca1793c5ba2a Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 23 Jan 2025 11:06:11 +0100 Subject: [PATCH 3/9] Update JsonNumberParsingTest.java --- .../fasterxml/jackson/core/read/JsonNumberParsingTest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java index ff9de109b6..ac465c6f3f 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java +++ b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java @@ -19,15 +19,18 @@ public void bigDecimal4917() throws Exception final String json = a2q("{'decimalHolder':100.00,'number':50}"); TokenStreamFactory jsonF = newStreamFactory(); for (int mode : ALL_MODES) { - try (JsonParser p = createParser(jsonF, MODE_READER, json)) { + try (JsonParser p = createParser(jsonF, mode, json)) { assertToken(JsonToken.START_OBJECT, p.nextToken()); assertToken(JsonToken.FIELD_NAME, p.nextToken()); assertEquals("decimalHolder", p.currentName()); assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); + assertEquals("100.00", p.getNumberValueDeferred()); assertEquals(new BigDecimal("100.00"), p.getDecimalValue()); + assertEquals("100.00", p.getText()); assertToken(JsonToken.FIELD_NAME, p.nextToken()); assertEquals("number", p.currentName()); assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); + assertEquals(Integer.valueOf(50), p.getNumberValueDeferred()); assertEquals(50.0, p.getDoubleValue()); assertEquals(50, p.getIntValue()); assertToken(JsonToken.END_OBJECT, p.nextToken()); From 065ad12cc36d8944cf85910b5cfac02e8d48537a Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 23 Jan 2025 11:37:07 +0100 Subject: [PATCH 4/9] Update JsonNumberParsingTest.java --- .../fasterxml/jackson/core/read/JsonNumberParsingTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java index ac465c6f3f..2c0b957ed4 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java +++ b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java @@ -24,12 +24,14 @@ public void bigDecimal4917() throws Exception assertToken(JsonToken.FIELD_NAME, p.nextToken()); assertEquals("decimalHolder", p.currentName()); assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); - assertEquals("100.00", p.getNumberValueDeferred()); + assertEquals(JsonParser.NumberType.DOUBLE, p.getNumberType()); + assertEquals(Double.valueOf(100.0), p.getNumberValueDeferred()); assertEquals(new BigDecimal("100.00"), p.getDecimalValue()); assertEquals("100.00", p.getText()); assertToken(JsonToken.FIELD_NAME, p.nextToken()); assertEquals("number", p.currentName()); assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); + assertEquals(JsonParser.NumberType.INT, p.getNumberType()); assertEquals(Integer.valueOf(50), p.getNumberValueDeferred()); assertEquals(50.0, p.getDoubleValue()); assertEquals(50, p.getIntValue()); From deb25696bd480b559b5614f748ef817cc51aa8d2 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 23 Jan 2025 11:54:02 +0100 Subject: [PATCH 5/9] Update JsonNumberParsingTest.java --- .../core/read/JsonNumberParsingTest.java | 42 ++++++++++++------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java index 2c0b957ed4..9e9a6d9a72 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java +++ b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java @@ -6,6 +6,7 @@ import com.fasterxml.jackson.core.TokenStreamFactory; import org.junit.jupiter.api.Test; +import java.io.IOException; import java.math.BigDecimal; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -19,24 +20,35 @@ public void bigDecimal4917() throws Exception final String json = a2q("{'decimalHolder':100.00,'number':50}"); TokenStreamFactory jsonF = newStreamFactory(); for (int mode : ALL_MODES) { - try (JsonParser p = createParser(jsonF, mode, json)) { - assertToken(JsonToken.START_OBJECT, p.nextToken()); - assertToken(JsonToken.FIELD_NAME, p.nextToken()); - assertEquals("decimalHolder", p.currentName()); - assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); - assertEquals(JsonParser.NumberType.DOUBLE, p.getNumberType()); + testBigDecimal4917(jsonF, mode, json, false); + testBigDecimal4917(jsonF, mode, json, true); + } + } + + private void testBigDecimal4917(final TokenStreamFactory jsonF, + final int mode, + final String json, + final boolean checkFirstNumValues) throws IOException { + // checkFirstNumValues=false reproduces the issue in https://github.com/FasterXML/jackson-databind/issues/4917 + try (JsonParser p = createParser(jsonF, mode, json)) { + assertToken(JsonToken.START_OBJECT, p.nextToken()); + assertToken(JsonToken.FIELD_NAME, p.nextToken()); + assertEquals("decimalHolder", p.currentName()); + assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken()); + assertEquals(JsonParser.NumberType.DOUBLE, p.getNumberType()); + if (checkFirstNumValues) { assertEquals(Double.valueOf(100.0), p.getNumberValueDeferred()); assertEquals(new BigDecimal("100.00"), p.getDecimalValue()); - assertEquals("100.00", p.getText()); - assertToken(JsonToken.FIELD_NAME, p.nextToken()); - assertEquals("number", p.currentName()); - assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); - assertEquals(JsonParser.NumberType.INT, p.getNumberType()); - assertEquals(Integer.valueOf(50), p.getNumberValueDeferred()); - assertEquals(50.0, p.getDoubleValue()); - assertEquals(50, p.getIntValue()); - assertToken(JsonToken.END_OBJECT, p.nextToken()); } + assertEquals("100.00", p.getText()); + assertToken(JsonToken.FIELD_NAME, p.nextToken()); + assertEquals("number", p.currentName()); + assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); + assertEquals(JsonParser.NumberType.INT, p.getNumberType()); + assertEquals(Integer.valueOf(50), p.getNumberValueDeferred()); + assertEquals(50.0, p.getDoubleValue()); + assertEquals(50, p.getIntValue()); + assertToken(JsonToken.END_OBJECT, p.nextToken()); } } } From b0f35148bfbfb97f1ff9633cd71f6d5b95632a37 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Sat, 25 Jan 2025 15:28:48 +0100 Subject: [PATCH 6/9] Update JsonNumberParsingTest.java --- .../core/read/JsonNumberParsingTest.java | 29 ++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java index 9e9a6d9a72..01eb4aa880 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java +++ b/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java @@ -8,6 +8,7 @@ import java.io.IOException; import java.math.BigDecimal; +import java.math.BigInteger; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -20,16 +21,24 @@ public void bigDecimal4917() throws Exception final String json = a2q("{'decimalHolder':100.00,'number':50}"); TokenStreamFactory jsonF = newStreamFactory(); for (int mode : ALL_MODES) { - testBigDecimal4917(jsonF, mode, json, false); - testBigDecimal4917(jsonF, mode, json, true); + testBigDecimal4917(jsonF, mode, json, false, JsonParser.NumberType.DOUBLE); + testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.DOUBLE); + testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.FLOAT); + testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.BIG_DECIMAL); + testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.BIG_INTEGER); + testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.INT); + testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.LONG); } } private void testBigDecimal4917(final TokenStreamFactory jsonF, final int mode, final String json, - final boolean checkFirstNumValues) throws IOException { + final boolean checkFirstNumValues, + final JsonParser.NumberType secondNumTypeCheck) throws IOException { // checkFirstNumValues=false reproduces the issue in https://github.com/FasterXML/jackson-databind/issues/4917 + // it is useful to check the second number value while requesting different number types + // but the call adjusts state of the parser, so it is better to redo the test and then test w try (JsonParser p = createParser(jsonF, mode, json)) { assertToken(JsonToken.START_OBJECT, p.nextToken()); assertToken(JsonToken.FIELD_NAME, p.nextToken()); @@ -46,7 +55,19 @@ private void testBigDecimal4917(final TokenStreamFactory jsonF, assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken()); assertEquals(JsonParser.NumberType.INT, p.getNumberType()); assertEquals(Integer.valueOf(50), p.getNumberValueDeferred()); - assertEquals(50.0, p.getDoubleValue()); + if (secondNumTypeCheck == JsonParser.NumberType.BIG_DECIMAL) { + assertEquals(new BigDecimal("50"), p.getDecimalValue()); + } else if (secondNumTypeCheck == JsonParser.NumberType.BIG_INTEGER) { + assertEquals(new BigInteger("50"), p.getBigIntegerValue()); + } else if (secondNumTypeCheck == JsonParser.NumberType.FLOAT) { + assertEquals(50.0f, p.getFloatValue()); + } else if (secondNumTypeCheck == JsonParser.NumberType.LONG) { + assertEquals(50L, p.getLongValue()); + } else if (secondNumTypeCheck == JsonParser.NumberType.INT) { + assertEquals(50, p.getIntValue()); + } else { + assertEquals(50.0d, p.getDoubleValue()); + } assertEquals(50, p.getIntValue()); assertToken(JsonToken.END_OBJECT, p.nextToken()); } From 52e5d20d9a8f87f4aace5a8a28992a28668bf97a Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Sun, 26 Jan 2025 16:44:20 -0800 Subject: [PATCH 7/9] Add release notes --- release-notes/VERSION-2.x | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index 694d808376..ec4d6b89f6 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -14,6 +14,12 @@ a pure JSON library. === Releases === ------------------------------------------------------------------------ +2.17.4 (not yet released) + +#1391: Fix issue where the parser can read back old number state when + parsing later numbers + (fix contributed by @pjfanning) + 2.17.3 (01-Nov-2024) #1331: Update to FastDoubleParser v1.0.1 to fix `BigDecimal` decoding problem @@ -23,7 +29,6 @@ a pure JSON library. #1352: Fix infinite loop due to integer overflow when reading large strings (reported by Adam J.S) (fix contributed by @pjfanning) - 2.17.2 (05-Jul-2024) From bfe1fdfec9f6d5941a942f2294cf63d93eedc31e Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Sun, 26 Jan 2025 16:50:12 -0800 Subject: [PATCH 8/9] Test refactoring, rename --- ...Test.java => NumberParsingDb4917Test.java} | 49 +++++++++++-------- 1 file changed, 29 insertions(+), 20 deletions(-) rename src/test/java/com/fasterxml/jackson/core/read/{JsonNumberParsingTest.java => NumberParsingDb4917Test.java} (69%) diff --git a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java b/src/test/java/com/fasterxml/jackson/core/read/NumberParsingDb4917Test.java similarity index 69% rename from src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java rename to src/test/java/com/fasterxml/jackson/core/read/NumberParsingDb4917Test.java index 01eb4aa880..f9cc02ec43 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/JsonNumberParsingTest.java +++ b/src/test/java/com/fasterxml/jackson/core/read/NumberParsingDb4917Test.java @@ -1,41 +1,50 @@ package com.fasterxml.jackson.core.read; +import java.math.BigDecimal; +import java.math.BigInteger; + +import org.junit.jupiter.api.Test; + import com.fasterxml.jackson.core.JUnit5TestBase; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.TokenStreamFactory; -import org.junit.jupiter.api.Test; - -import java.io.IOException; -import java.math.BigDecimal; -import java.math.BigInteger; import static org.junit.jupiter.api.Assertions.assertEquals; -class JsonNumberParsingTest extends JUnit5TestBase +class NumberParsingDb4917Test extends JUnit5TestBase { + private TokenStreamFactory JSON_F = newStreamFactory(); + + final String INPUT_JSON = a2q("{'decimalHolder':100.00,'number':50}"); + // [jackson-databind#4917] @Test - public void bigDecimal4917() throws Exception + public void bigDecimal4917Integers() throws Exception { - final String json = a2q("{'decimalHolder':100.00,'number':50}"); - TokenStreamFactory jsonF = newStreamFactory(); for (int mode : ALL_MODES) { - testBigDecimal4917(jsonF, mode, json, false, JsonParser.NumberType.DOUBLE); - testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.DOUBLE); - testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.FLOAT); - testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.BIG_DECIMAL); - testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.BIG_INTEGER); - testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.INT); - testBigDecimal4917(jsonF, mode, json, true, JsonParser.NumberType.LONG); + testBigDecimal4917(JSON_F, mode, INPUT_JSON, true, JsonParser.NumberType.BIG_INTEGER); + testBigDecimal4917(JSON_F, mode, INPUT_JSON, true, JsonParser.NumberType.INT); + testBigDecimal4917(JSON_F, mode, INPUT_JSON, true, JsonParser.NumberType.LONG); } } + public void bigDecimal4917Floats() throws Exception + { + for (int mode : ALL_MODES) { + testBigDecimal4917(JSON_F, mode, INPUT_JSON, false, JsonParser.NumberType.DOUBLE); + testBigDecimal4917(JSON_F, mode, INPUT_JSON, true, JsonParser.NumberType.DOUBLE); + testBigDecimal4917(JSON_F, mode, INPUT_JSON, true, JsonParser.NumberType.FLOAT); + testBigDecimal4917(JSON_F, mode, INPUT_JSON, true, JsonParser.NumberType.BIG_DECIMAL); + } + } + private void testBigDecimal4917(final TokenStreamFactory jsonF, - final int mode, - final String json, - final boolean checkFirstNumValues, - final JsonParser.NumberType secondNumTypeCheck) throws IOException { + final int mode, + final String json, + final boolean checkFirstNumValues, + final JsonParser.NumberType secondNumTypeCheck) throws Exception + { // checkFirstNumValues=false reproduces the issue in https://github.com/FasterXML/jackson-databind/issues/4917 // it is useful to check the second number value while requesting different number types // but the call adjusts state of the parser, so it is better to redo the test and then test w From 4a16a4a2f1b7d17ce7b6ecc01db0a315253ba40c Mon Sep 17 00:00:00 2001 From: Tatu Saloranta Date: Sun, 26 Jan 2025 17:06:45 -0800 Subject: [PATCH 9/9] Minimize the fix --- .../java/com/fasterxml/jackson/core/base/ParserBase.java | 6 ------ .../jackson/core/read/NumberParsingDb4917Test.java | 1 + 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java b/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java index d2484d838f..4b09c42e54 100644 --- a/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java +++ b/src/main/java/com/fasterxml/jackson/core/base/ParserBase.java @@ -790,7 +790,6 @@ public int getIntValue() throws IOException } if ((_numTypesValid & NR_INT) == 0) { // wasn't an int natively? convertNumberToInt(); // let's make it so, if possible - _numberString = null; } } return _numberInt; @@ -805,7 +804,6 @@ public long getLongValue() throws IOException } if ((_numTypesValid & NR_LONG) == 0) { convertNumberToLong(); - _numberString = null; } } return _numberLong; @@ -820,7 +818,6 @@ public BigInteger getBigIntegerValue() throws IOException } if ((_numTypesValid & NR_BIGINT) == 0) { convertNumberToBigInteger(); - _numberString = null; return _numberBigInt; } } @@ -844,7 +841,6 @@ public float getFloatValue() throws IOException } if ((_numTypesValid & NR_FLOAT) == 0) { convertNumberToFloat(); - _numberString = null; return _numberFloat; } } @@ -860,7 +856,6 @@ public double getDoubleValue() throws IOException } if ((_numTypesValid & NR_DOUBLE) == 0) { convertNumberToDouble(); - _numberString = null; return _numberDouble; } } @@ -876,7 +871,6 @@ public BigDecimal getDecimalValue() throws IOException } if ((_numTypesValid & NR_BIGDECIMAL) == 0) { convertNumberToBigDecimal(); - _numberString = null; return _numberBigDecimal; } } diff --git a/src/test/java/com/fasterxml/jackson/core/read/NumberParsingDb4917Test.java b/src/test/java/com/fasterxml/jackson/core/read/NumberParsingDb4917Test.java index f9cc02ec43..7e6dd7423f 100644 --- a/src/test/java/com/fasterxml/jackson/core/read/NumberParsingDb4917Test.java +++ b/src/test/java/com/fasterxml/jackson/core/read/NumberParsingDb4917Test.java @@ -29,6 +29,7 @@ public void bigDecimal4917Integers() throws Exception } } + @Test public void bigDecimal4917Floats() throws Exception { for (int mode : ALL_MODES) {