Skip to content

Commit f0c76cd

Browse files
committed
Merge pull request msgpack#242 from msgpack/issue_231
Fix wrong convertion fron long to int
2 parents ea618fc + febcfde commit f0c76cd

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ public BigDecimal getDecimalValue() throws IOException {
287287
NumberValue number = ref.asNumber();
288288
//optimization to not convert the value to BigInteger unnecessarily
289289
if (number.isValidByte() || number.isValidShort() || number.isValidInt() || number.isValidLong()) {
290-
return BigDecimal.valueOf(number.asInt());
290+
return BigDecimal.valueOf(number.asLong());
291291
}
292292
else {
293293
return new BigDecimal(number.asBigInteger());

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import java.math.BigDecimal;
1515
import java.math.BigInteger;
1616
import java.nio.ByteBuffer;
17+
import java.util.ArrayList;
1718
import java.util.Arrays;
1819
import java.util.List;
1920
import java.util.Map;
@@ -373,4 +374,16 @@ public void testDisableFeatureAutoCloseSource() throws IOException {
373374
objectMapper.readValue(in, new TypeReference<List<Integer>>() {});
374375
objectMapper.readValue(in, new TypeReference<List<Integer>>() {});
375376
}
377+
378+
@Test
379+
public void testParseBigDecimal() throws IOException {
380+
ArrayList<BigDecimal> list = new ArrayList<BigDecimal>();
381+
list.add(new BigDecimal(Long.MAX_VALUE));
382+
ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory());
383+
byte[] bytes = objectMapper.writeValueAsBytes(list);
384+
385+
ArrayList<BigDecimal> result = objectMapper.readValue(
386+
bytes, new TypeReference<ArrayList<BigDecimal>>() {});
387+
assertEquals(list, result);
388+
}
376389
}

0 commit comments

Comments
 (0)