Skip to content

Commit 8616daf

Browse files
authored
Merge pull request #527 from msgpack/conv-num2str
Support numeric types in MessagePackParser.getText()
2 parents 981c9c7 + bd0ebe1 commit 8616daf

File tree

3 files changed

+342
-242
lines changed

3 files changed

+342
-242
lines changed

msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackParser.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -383,6 +383,14 @@ public String getText()
383383
return stringValue;
384384
case BYTES:
385385
return new String(bytesValue, MessagePack.UTF8);
386+
case INT:
387+
return String.valueOf(intValue);
388+
case LONG:
389+
return String.valueOf(longValue);
390+
case DOUBLE:
391+
return String.valueOf(doubleValue);
392+
case BIG_INT:
393+
return String.valueOf(biValue);
386394
default:
387395
throw new IllegalStateException("Invalid type=" + type);
388396
}

msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackParserTest.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,9 @@ public void testReadPrimitives()
365365
MessagePacker packer = MessagePack.newDefaultPacker(out);
366366
packer.packString("foo");
367367
packer.packDouble(3.14);
368+
packer.packInt(Integer.MIN_VALUE);
368369
packer.packLong(Long.MAX_VALUE);
370+
packer.packBigInteger(BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.ONE));
369371
byte[] bytes = {0x00, 0x11, 0x22};
370372
packer.packBinaryHeader(bytes.length);
371373
packer.writePayload(bytes);
@@ -374,10 +376,24 @@ public void testReadPrimitives()
374376
JsonParser parser = factory.createParser(new FileInputStream(tempFile));
375377
assertEquals(JsonToken.VALUE_STRING, parser.nextToken());
376378
assertEquals("foo", parser.getText());
379+
377380
assertEquals(JsonToken.VALUE_NUMBER_FLOAT, parser.nextToken());
378381
assertEquals(3.14, parser.getDoubleValue(), 0.0001);
382+
assertEquals("3.14", parser.getText());
383+
384+
assertEquals(JsonToken.VALUE_NUMBER_INT, parser.nextToken());
385+
assertEquals(Integer.MIN_VALUE, parser.getIntValue());
386+
assertEquals(Integer.MIN_VALUE, parser.getLongValue());
387+
assertEquals("-2147483648", parser.getText());
388+
379389
assertEquals(JsonToken.VALUE_NUMBER_INT, parser.nextToken());
380390
assertEquals(Long.MAX_VALUE, parser.getLongValue());
391+
assertEquals("9223372036854775807", parser.getText());
392+
393+
assertEquals(JsonToken.VALUE_NUMBER_INT, parser.nextToken());
394+
assertEquals(BigInteger.valueOf(Long.MAX_VALUE).add(BigInteger.ONE), parser.getBigIntegerValue());
395+
assertEquals("9223372036854775808", parser.getText());
396+
381397
assertEquals(JsonToken.VALUE_EMBEDDED_OBJECT, parser.nextToken());
382398
assertEquals(bytes.length, parser.getBinaryValue().length);
383399
assertEquals(bytes[0], parser.getBinaryValue()[0]);

0 commit comments

Comments
 (0)