File tree Expand file tree Collapse file tree 3 files changed +18
-2
lines changed
main/java/com/fasterxml/jackson/dataformat/ion
test/java/com/fasterxml/jackson/dataformat/ion Expand file tree Collapse file tree 3 files changed +18
-2
lines changed Original file line number Diff line number Diff line change @@ -414,8 +414,8 @@ private long _getLongValue() throws IOException {
414414 try {
415415 if (this .getNumberType () == NumberType .BIG_INTEGER ) {
416416 BigInteger bigInteger = _reader .bigIntegerValue ();
417- if (BI_MIN_INT .compareTo (bigInteger ) > 0 || BI_MAX_INT .compareTo (bigInteger ) < 0 ) {
418- this . reportOverflowLong ();
417+ if (BI_MIN_LONG .compareTo (bigInteger ) > 0 || BI_MAX_LONG .compareTo (bigInteger ) < 0 ) {
418+ reportOverflowLong ();
419419 }
420420 return bigInteger .longValue ();
421421 } else {
Original file line number Diff line number Diff line change 55import org .hamcrest .Matchers ;
66import org .junit .jupiter .api .Test ;
77
8+ import com .fasterxml .jackson .core .JsonParser ;
9+ import com .fasterxml .jackson .core .JsonToken ;
810import com .fasterxml .jackson .core .exc .InputCoercionException ;
911
1012import static org .hamcrest .MatcherAssert .assertThat ;
@@ -72,4 +74,15 @@ private void _testLongCoercionFail(BigInteger input) throws Exception
7274 }
7375 }
7476
77+ // [dataformats-binary#569]: incorrect overflow fail for long values (from BigInteger)
78+ @ Test
79+ public void testLongAsBigIntegerSize () throws Exception {
80+ // Note: Values: Long.MAX_VALUE through Long.MAX_VALUE -7 are considered LONG by Ion.
81+ BigInteger bigIntLongValue = new BigInteger (Long .MAX_VALUE + "" ).subtract (BigInteger .TEN );
82+ IonParser bigIntLongParser = (IonParser ) new IonFactory ().createParser (bigIntLongValue .toString ());
83+ assertEquals (JsonToken .VALUE_NUMBER_INT , bigIntLongParser .nextToken ());
84+ assertEquals (JsonParser .NumberType .BIG_INTEGER , bigIntLongParser .getNumberType ());
85+ assertEquals (JsonParser .NumberTypeFP .UNKNOWN , bigIntLongParser .getNumberTypeFP ());
86+ assertEquals (bigIntLongValue .longValue (), bigIntLongParser .getLongValue ());
87+ }
7588}
Original file line number Diff line number Diff line change @@ -37,6 +37,9 @@ Active maintainers:
3737
38382.18 .4 (not yet released )
3939
40+ #569 : (ion) `IonParser` fails to parse some `long` values saying
41+ they are out of range when they are not
42+ (reported , fix suggested by @seadbrane )
4043- (ion ) Upgrade `ion - java ` to 1.11 .10 (from 1.11 .9 )
4144
42452.18 .3 (28 - Feb - 2025 )
You can’t perform that action at this time.
0 commit comments