@@ -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
@@ -412,4 +440,34 @@ public void bigDecimal4694FromBytes() throws Exception
412
440
assertEquals (BIG_DEC , MAPPER .readValue (b , 0 , b .length , BigDecimal .class ));
413
441
}
414
442
443
+ // [databind#4917]
444
+ @ Test
445
+ public void bigDecimal4917 () throws Exception
446
+ {
447
+ DeserializationIssue4917 issue = MAPPER .readValue (
448
+ a2q ("{'decimalHolder':100.00,'number':50}" ),
449
+ DeserializationIssue4917 .class );
450
+ assertEquals (new BigDecimal ("100.00" ), issue .decimalHolder .value );
451
+ assertEquals (50.0 , issue .number );
452
+ }
453
+
454
+ @ Test
455
+ public void bigDecimal4917V2 () throws Exception
456
+ {
457
+ DeserializationIssue4917V2 issue = MAPPER .readValue (
458
+ a2q ("{'decimalHolder':100.00,'number':50}" ),
459
+ DeserializationIssue4917V2 .class );
460
+ assertEquals (new BigDecimal ("100.00" ), issue .decimalHolder .value );
461
+ assertEquals (50 , issue .number );
462
+ }
463
+
464
+ @ Test
465
+ public void bigDecimal4917V3 () throws Exception
466
+ {
467
+ DeserializationIssue4917V3 issue = MAPPER .readValue (
468
+ a2q ("{'decimal':100.00,'number':50}" ),
469
+ DeserializationIssue4917V3 .class );
470
+ assertEquals (new BigDecimal ("100.00" ), issue .decimal );
471
+ assertEquals (50 , issue .number );
472
+ }
415
473
}
0 commit comments