@@ -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
@@ -412,4 +440,34 @@ public void bigDecimal4694FromBytes() throws Exception
412440 assertEquals (BIG_DEC , MAPPER .readValue (b , 0 , b .length , BigDecimal .class ));
413441 }
414442
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+ }
415473}
0 commit comments