Skip to content

Commit

Permalink
Add test showing fix of #4917 (via jackson-core) (#4931)
Browse files Browse the repository at this point in the history
  • Loading branch information
cowtowncoder authored Jan 27, 2025
1 parent d0da72a commit f0c97b7
Show file tree
Hide file tree
Showing 2 changed files with 61 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 @@ -8,6 +8,8 @@ Project: jackson-databind

#4787: Wrong `String.format()` in `StdDelegatingDeserializer` hides actual error
(reported by @Horus1337)
#4917: `BigDecimal` deserialization issue when using `@JsonCreator`
(reported by @dbachdev)

2.17.3 (01-Nov-2024)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,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 @@ -386,4 +414,35 @@ public void testBigDecimalUnwrapped() throws Exception
NestedBigDecimalHolder2784 result = mapper.readValue(JSON, NestedBigDecimalHolder2784.class);
assertEquals(new BigDecimal("5.00"), result.holder.value);
}

// [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 f0c97b7

Please sign in to comment.