@@ -81,6 +81,34 @@ static class NestedBigDecimalHolder2784 {
8181 public BigDecimalHolder2784 holder ;
8282 }
8383
84+ static class DeserializationIssue4917 {
85+ public DecimalHolder4917 decimalHolder ;
86+ public double number ;
87+ }
88+
89+ static class DeserializationIssue4917V2 {
90+ public DecimalHolder4917 decimalHolder ;
91+ public int number ;
92+ }
93+
94+ static class DeserializationIssue4917V3 {
95+ public BigDecimal decimal ;
96+ public double number ;
97+ }
98+
99+ static class DecimalHolder4917 {
100+ public BigDecimal value ;
101+
102+ private DecimalHolder4917 (BigDecimal value ) {
103+ this .value = value ;
104+ }
105+
106+ @ JsonCreator (mode = JsonCreator .Mode .DELEGATING )
107+ static DecimalHolder4917 of (BigDecimal value ) {
108+ return new DecimalHolder4917 (value );
109+ }
110+ }
111+
84112 /*
85113 /**********************************************************************
86114 /* Helper classes, serializers/deserializers/resolvers
@@ -415,4 +443,34 @@ public void bigDecimal4694FromBytes() throws Exception
415443 assertEquals (BIG_DEC , MAPPER .readValue (b , 0 , b .length , BigDecimal .class ));
416444 }
417445
446+ // [databind#4917]
447+ @ Test
448+ public void bigDecimal4917 () throws Exception
449+ {
450+ DeserializationIssue4917 issue = MAPPER .readValue (
451+ a2q ("{'decimalHolder':100.00,'number':50}" ),
452+ DeserializationIssue4917 .class );
453+ assertEquals (new BigDecimal ("100.00" ), issue .decimalHolder .value );
454+ assertEquals (50.0 , issue .number );
455+ }
456+
457+ @ Test
458+ public void bigDecimal4917V2 () throws Exception
459+ {
460+ DeserializationIssue4917V2 issue = MAPPER .readValue (
461+ a2q ("{'decimalHolder':100.00,'number':50}" ),
462+ DeserializationIssue4917V2 .class );
463+ assertEquals (new BigDecimal ("100.00" ), issue .decimalHolder .value );
464+ assertEquals (50 , issue .number );
465+ }
466+
467+ @ Test
468+ public void bigDecimal4917V3 () throws Exception
469+ {
470+ DeserializationIssue4917V3 issue = MAPPER .readValue (
471+ a2q ("{'decimal':100.00,'number':50}" ),
472+ DeserializationIssue4917V3 .class );
473+ assertEquals (new BigDecimal ("100.00" ), issue .decimal );
474+ assertEquals (50 , issue .number );
475+ }
418476}
0 commit comments