@@ -82,6 +82,34 @@ static class NestedBigDecimalHolder2784 {
8282 public BigDecimalHolder2784 holder ;
8383 }
8484
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+
85113 /*
86114 /**********************************************************************
87115 /* Helper classes, serializers/deserializers/resolvers
@@ -386,4 +414,35 @@ public void testBigDecimalUnwrapped() throws Exception
386414 NestedBigDecimalHolder2784 result = mapper .readValue (JSON , NestedBigDecimalHolder2784 .class );
387415 assertEquals (new BigDecimal ("5.00" ), result .holder .value );
388416 }
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+ }
389448}
0 commit comments