Skip to content

Commit 7ced550

Browse files
committed
Merge branch '2.17' into 2.18
2 parents b1a61bb + f0c97b7 commit 7ced550

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
@@ -27,6 +27,8 @@ Project: jackson-databind
2727
#4908: Deserialization behavior change with @JsonCreator and
2828
@ConstructorProperties between 2.17 and 2.18
2929
(reported by Gustavo B)
30+
#4917: `BigDecimal` deserialization issue when using `@JsonCreator`
31+
(reported by @dbachdev)
3032
#4922: Failing `@JsonMerge` with a custom Map
3133
(reported by @nlisker)
3234

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
@@ -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

Comments
 (0)