Skip to content

Commit

Permalink
Merge branch '2.18' into 2.19
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Feb 5, 2025
2 parents 9fcf1e7 + 0aa97a7 commit c3a1216
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
4 changes: 4 additions & 0 deletions release-notes/VERSION-2.x
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ a pure JSON library.
#1391: Fix issue where the parser can read back old number state when
parsing later numbers
(fix contributed by @pjfanning)
#1397: Jackson changes additional values to infinite in case of special
JSON structures and existing infinite values
(reported by @Rodenstock)
(fix contributed by @pjfanning)

2.18.2 (27-Nov-2024)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
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 static org.junit.jupiter.api.Assertions.assertEquals;

class NumberParsing1397Test extends JUnit5TestBase
{
private TokenStreamFactory JSON_F = newStreamFactory();

final String radiusValue = "179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
final String INPUT_JSON = a2q("{ 'results': [ { " +
"'radius': " + radiusValue + ", " +
"'type': 'center', " +
"'center': { " +
"'x': -11.0, " +
"'y': -2.0 } } ] }");

// [jackson-core#1397]
@Test
public void issue1397() throws Exception
{
for (int mode : ALL_MODES) {
testIssue(JSON_F, mode, INPUT_JSON, true);
testIssue(JSON_F, mode, INPUT_JSON, false);
}
}

private void testIssue(final TokenStreamFactory jsonF,
final int mode,
final String json,
final boolean checkFirstNumValues) throws Exception
{
// checkFirstNumValues=false reproduces the issue in https://github.com/FasterXML/jackson-core/issues/1397
try (JsonParser p = createParser(jsonF, mode, json)) {
assertToken(JsonToken.START_OBJECT, p.nextToken());
assertToken(JsonToken.FIELD_NAME, p.nextToken());
assertEquals("results", p.currentName());
assertToken(JsonToken.START_ARRAY, p.nextToken());
assertToken(JsonToken.START_OBJECT, p.nextToken());
assertToken(JsonToken.FIELD_NAME, p.nextToken());
assertEquals("radius", p.currentName());
assertToken(JsonToken.VALUE_NUMBER_INT, p.nextToken());
assertEquals(JsonParser.NumberType.BIG_INTEGER, p.getNumberType());
assertEquals(radiusValue, p.getNumberValueDeferred());
assertToken(JsonToken.FIELD_NAME, p.nextToken());
assertEquals("type", p.currentName());
assertToken(JsonToken.VALUE_STRING, p.nextToken());
assertEquals("center", p.getText());
assertToken(JsonToken.FIELD_NAME, p.nextToken());
assertEquals("center", p.currentName());
assertToken(JsonToken.START_OBJECT, p.nextToken());
assertToken(JsonToken.FIELD_NAME, p.nextToken());
assertEquals("x", p.currentName());
assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken());
if (checkFirstNumValues) {
assertEquals(JsonParser.NumberType.DOUBLE, p.getNumberType());
assertEquals(Double.valueOf(-11.0d), p.getNumberValueDeferred());
}
assertEquals(Double.valueOf(-11.0d), p.getDoubleValue());
assertToken(JsonToken.FIELD_NAME, p.nextToken());
assertEquals("y", p.currentName());
assertToken(JsonToken.VALUE_NUMBER_FLOAT, p.nextToken());
assertEquals(JsonParser.NumberType.DOUBLE, p.getNumberType());
assertEquals(Double.valueOf(-2.0d), p.getNumberValueDeferred());
assertEquals(Double.valueOf(-2.0d), p.getDoubleValue());
assertToken(JsonToken.END_OBJECT, p.nextToken());
assertToken(JsonToken.END_OBJECT, p.nextToken());
assertToken(JsonToken.END_ARRAY, p.nextToken());
assertToken(JsonToken.END_OBJECT, p.nextToken());
}
}
}

0 comments on commit c3a1216

Please sign in to comment.