|
6 | 6 |
|
7 | 7 | import org.junit.jupiter.api.Test; |
8 | 8 |
|
| 9 | +import com.fasterxml.jackson.annotation.JsonCreator; |
9 | 10 | import com.fasterxml.jackson.annotation.JsonUnwrapped; |
| 11 | +import com.fasterxml.jackson.annotation.JsonValue; |
| 12 | + |
10 | 13 | import com.fasterxml.jackson.core.JsonParser.NumberType; |
11 | 14 | import com.fasterxml.jackson.core.JsonToken; |
| 15 | + |
12 | 16 | import com.fasterxml.jackson.databind.ObjectMapper; |
13 | 17 | import com.fasterxml.jackson.dataformat.smile.*; |
14 | 18 |
|
@@ -41,6 +45,26 @@ static class NestedBigDecimalHolder2784 { |
41 | 45 | public BigDecimalHolder2784 holder; |
42 | 46 | } |
43 | 47 |
|
| 48 | + // for [databind#4917] |
| 49 | + static class DeserializationIssue4917 { |
| 50 | + public DecimalHolder4917 decimalHolder; |
| 51 | + public double number; |
| 52 | + } |
| 53 | + |
| 54 | + static class DecimalHolder4917 { |
| 55 | + @JsonValue |
| 56 | + BigDecimal value; |
| 57 | + |
| 58 | + private DecimalHolder4917(BigDecimal value) { |
| 59 | + this.value = value; |
| 60 | + } |
| 61 | + |
| 62 | + @JsonCreator(mode = JsonCreator.Mode.DELEGATING) |
| 63 | + static DecimalHolder4917 of(BigDecimal value) { |
| 64 | + return new DecimalHolder4917(value); |
| 65 | + } |
| 66 | + } |
| 67 | + |
44 | 68 | /* |
45 | 69 | /********************************************************** |
46 | 70 | /* Test methods |
@@ -204,4 +228,20 @@ public void testBigDecimalWithBuffering() throws Exception |
204 | 228 | NestedBigDecimalHolder2784.class); |
205 | 229 | assertEquals(VALUE, result.holder.value); |
206 | 230 | } |
| 231 | + |
| 232 | + // [databind#4917] |
| 233 | + @Test |
| 234 | + public void testIssue4917() throws Exception { |
| 235 | + final String bd = "100.00"; |
| 236 | + final double d = 50.0; |
| 237 | + final DeserializationIssue4917 value = new DeserializationIssue4917(); |
| 238 | + value.decimalHolder = DecimalHolder4917.of(new BigDecimal(bd)); |
| 239 | + value.number = d; |
| 240 | + final byte[] data = MAPPER.writeValueAsBytes(value); |
| 241 | + |
| 242 | + final DeserializationIssue4917 result = MAPPER.readValue( |
| 243 | + data, DeserializationIssue4917.class); |
| 244 | + assertEquals(value.decimalHolder.value, result.decimalHolder.value); |
| 245 | + assertEquals(value.number, result.number); |
| 246 | + } |
207 | 247 | } |
0 commit comments