Skip to content

Commit

Permalink
Merge branch '2.18' into 2.19
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder committed Jan 27, 2025
2 parents 59a2e22 + 7ced550 commit fe29684
Show file tree
Hide file tree
Showing 2 changed files with 60 additions and 0 deletions.
2 changes: 2 additions & 0 deletions release-notes/VERSION-2.x
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ Project: jackson-databind
#4908: Deserialization behavior change with @JsonCreator and
@ConstructorProperties between 2.17 and 2.18
(reported by Gustavo B)
#4917: `BigDecimal` deserialization issue when using `@JsonCreator`
(reported by @dbachdev)
#4922: Failing `@JsonMerge` with a custom Map
(reported by @nlisker)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,34 @@ static class NestedBigDecimalHolder2784 {
public BigDecimalHolder2784 holder;
}

static class DeserializationIssue4917 {
public DecimalHolder4917 decimalHolder;
public double number;
}

static class DeserializationIssue4917V2 {
public DecimalHolder4917 decimalHolder;
public int number;
}

static class DeserializationIssue4917V3 {
public BigDecimal decimal;
public double number;
}

static class DecimalHolder4917 {
public BigDecimal value;

private DecimalHolder4917(BigDecimal value) {
this.value = value;
}

@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
static DecimalHolder4917 of(BigDecimal value) {
return new DecimalHolder4917(value);
}
}

/*
/**********************************************************************
/* Helper classes, serializers/deserializers/resolvers
Expand Down Expand Up @@ -415,4 +443,34 @@ public void bigDecimal4694FromBytes() throws Exception
assertEquals(BIG_DEC, MAPPER.readValue(b, 0, b.length, BigDecimal.class));
}

// [databind#4917]
@Test
public void bigDecimal4917() throws Exception
{
DeserializationIssue4917 issue = MAPPER.readValue(
a2q("{'decimalHolder':100.00,'number':50}"),
DeserializationIssue4917.class);
assertEquals(new BigDecimal("100.00"), issue.decimalHolder.value);
assertEquals(50.0, issue.number);
}

@Test
public void bigDecimal4917V2() throws Exception
{
DeserializationIssue4917V2 issue = MAPPER.readValue(
a2q("{'decimalHolder':100.00,'number':50}"),
DeserializationIssue4917V2.class);
assertEquals(new BigDecimal("100.00"), issue.decimalHolder.value);
assertEquals(50, issue.number);
}

@Test
public void bigDecimal4917V3() throws Exception
{
DeserializationIssue4917V3 issue = MAPPER.readValue(
a2q("{'decimal':100.00,'number':50}"),
DeserializationIssue4917V3.class);
assertEquals(new BigDecimal("100.00"), issue.decimal);
assertEquals(50, issue.number);
}
}

0 comments on commit fe29684

Please sign in to comment.