Skip to content

Commit fe29684

Browse files
committed
Merge branch '2.18' into 2.19
2 parents 59a2e22 + 7ced550 commit fe29684

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

release-notes/VERSION-2.x

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ Project: jackson-databind
6767
#4908: Deserialization behavior change with @JsonCreator and
6868
@ConstructorProperties between 2.17 and 2.18
6969
(reported by Gustavo B)
70+
#4917: `BigDecimal` deserialization issue when using `@JsonCreator`
71+
(reported by @dbachdev)
7072
#4922: Failing `@JsonMerge` with a custom Map
7173
(reported by @nlisker)
7274

src/test/java/com/fasterxml/jackson/databind/deser/jdk/JDKNumberDeserTest.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)