@@ -82,6 +82,34 @@ static class NestedBigDecimalHolder2784 {
82
82
public BigDecimalHolder2784 holder ;
83
83
}
84
84
85
+ static class DeserializationIssue4917 {
86
+ public DecimalHolder4917 decimalHolder ;
87
+ public double number ;
88
+ }
89
+
90
+ static class DeserializationIssue4917V2 {
91
+ public DecimalHolder4917 decimalHolder ;
92
+ public int number ;
93
+ }
94
+
95
+ static class DeserializationIssue4917V3 {
96
+ public BigDecimal decimal ;
97
+ public double number ;
98
+ }
99
+
100
+ static class DecimalHolder4917 {
101
+ public BigDecimal value ;
102
+
103
+ private DecimalHolder4917 (BigDecimal value ) {
104
+ this .value = value ;
105
+ }
106
+
107
+ @ JsonCreator (mode = JsonCreator .Mode .DELEGATING )
108
+ static DecimalHolder4917 of (BigDecimal value ) {
109
+ return new DecimalHolder4917 (value );
110
+ }
111
+ }
112
+
85
113
/*
86
114
/**********************************************************************
87
115
/* Helper classes, serializers/deserializers/resolvers
@@ -386,4 +414,35 @@ public void testBigDecimalUnwrapped() throws Exception
386
414
NestedBigDecimalHolder2784 result = mapper .readValue (JSON , NestedBigDecimalHolder2784 .class );
387
415
assertEquals (new BigDecimal ("5.00" ), result .holder .value );
388
416
}
417
+
418
+ // [databind#4917]
419
+ @ Test
420
+ public void bigDecimal4917 () throws Exception
421
+ {
422
+ DeserializationIssue4917 issue = MAPPER .readValue (
423
+ a2q ("{'decimalHolder':100.00,'number':50}" ),
424
+ DeserializationIssue4917 .class );
425
+ assertEquals (new BigDecimal ("100.00" ), issue .decimalHolder .value );
426
+ assertEquals (50.0 , issue .number );
427
+ }
428
+
429
+ @ Test
430
+ public void bigDecimal4917V2 () throws Exception
431
+ {
432
+ DeserializationIssue4917V2 issue = MAPPER .readValue (
433
+ a2q ("{'decimalHolder':100.00,'number':50}" ),
434
+ DeserializationIssue4917V2 .class );
435
+ assertEquals (new BigDecimal ("100.00" ), issue .decimalHolder .value );
436
+ assertEquals (50 , issue .number );
437
+ }
438
+
439
+ @ Test
440
+ public void bigDecimal4917V3 () throws Exception
441
+ {
442
+ DeserializationIssue4917V3 issue = MAPPER .readValue (
443
+ a2q ("{'decimal':100.00,'number':50}" ),
444
+ DeserializationIssue4917V3 .class );
445
+ assertEquals (new BigDecimal ("100.00" ), issue .decimal );
446
+ assertEquals (50 , issue .number );
447
+ }
389
448
}
0 commit comments