From a98159ffd44a52080841d19198c916dc1deb00d6 Mon Sep 17 00:00:00 2001 From: Milkin Date: Wed, 1 Aug 2018 17:19:15 -0400 Subject: [PATCH] TokenBuffer.copyCurrentEvent does not expect getNumberType return null. --- .../jackson/dataformat/ion/IonParser.java | 2 ++ .../jackson/dataformat/ion/IonParserTest.java | 25 ++++++++++++++++--- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/ion/src/main/java/com/fasterxml/jackson/dataformat/ion/IonParser.java b/ion/src/main/java/com/fasterxml/jackson/dataformat/ion/IonParser.java index 89655b376..59f392131 100644 --- a/ion/src/main/java/com/fasterxml/jackson/dataformat/ion/IonParser.java +++ b/ion/src/main/java/com/fasterxml/jackson/dataformat/ion/IonParser.java @@ -245,6 +245,8 @@ public NumberType getNumberType() throws IOException } else { return NumberType.INT; } + case FLOAT: + return NumberType.DOUBLE; default: } } diff --git a/ion/src/test/java/com/fasterxml/jackson/dataformat/ion/IonParserTest.java b/ion/src/test/java/com/fasterxml/jackson/dataformat/ion/IonParserTest.java index a8126ddf9..2615034d4 100644 --- a/ion/src/test/java/com/fasterxml/jackson/dataformat/ion/IonParserTest.java +++ b/ion/src/test/java/com/fasterxml/jackson/dataformat/ion/IonParserTest.java @@ -13,18 +13,18 @@ */ package com.fasterxml.jackson.dataformat.ion; - + import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonToken; import com.fasterxml.jackson.core.ObjectReadContext; -import com.fasterxml.jackson.dataformat.ion.IonFactory; -import com.fasterxml.jackson.dataformat.ion.IonParser; import org.junit.Assert; +import software.amazon.ion.IonReader; import software.amazon.ion.IonSystem; import software.amazon.ion.IonValue; import software.amazon.ion.system.IonSystemBuilder; +import java.io.IOException; import java.math.BigInteger; import org.junit.Test; @@ -58,4 +58,23 @@ public void testGetNumberType() throws Exception { Assert.assertEquals(JsonToken.VALUE_NUMBER_FLOAT, floatParser.nextToken()); Assert.assertEquals(JsonParser.NumberType.DOUBLE, floatParser.getNumberType()); } + + @Test + public void testFloatType() throws IOException + { + final ObjectReadContext ctxt = ObjectReadContext.empty(); + + final byte[] data = "{ score:0.291e0 }".getBytes(); + IonSystem ion = IonSystemBuilder.standard().build(); + final IonValue ionFloat = ion.newFloat(Float.MAX_VALUE); + IonReader reader = ionFloat.getSystem().newReader(data, 0, data.length); + // Find the object + reader.next(); + // Step into the object + reader.stepIn(); + // Step next. + reader.next(); + final IonParser floatParser = new IonFactory().createParser(ctxt, reader); + Assert.assertEquals(JsonParser.NumberType.DOUBLE, floatParser.getNumberType()); + } }