Skip to content

Commit c692e7f

Browse files
committedMar 20, 2025·
Merge branch '2.19'

File tree

2 files changed

+76
-0
lines changed

2 files changed

+76
-0
lines changed
 

‎cbor/src/test/java/tools/jackson/dataformat/cbor/mapper/NumberBeanTest.java

+38
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
import org.junit.jupiter.api.Test;
88

9+
import com.fasterxml.jackson.annotation.JsonCreator;
910
import com.fasterxml.jackson.annotation.JsonUnwrapped;
11+
import com.fasterxml.jackson.annotation.JsonValue;
1012

1113
import tools.jackson.core.JsonToken;
1214
import tools.jackson.core.JsonGenerator;
@@ -51,6 +53,26 @@ static class NestedBigDecimalHolder2784 {
5153
public BigDecimalHolder2784 holder;
5254
}
5355

56+
// for [databind#4917]
57+
static class DeserializationIssue4917 {
58+
public DecimalHolder4917 decimalHolder;
59+
public double number;
60+
}
61+
62+
static class DecimalHolder4917 {
63+
@JsonValue
64+
BigDecimal value;
65+
66+
private DecimalHolder4917(BigDecimal value) {
67+
this.value = value;
68+
}
69+
70+
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
71+
static DecimalHolder4917 of(BigDecimal value) {
72+
return new DecimalHolder4917(value);
73+
}
74+
}
75+
5476
/*
5577
/**********************************************************
5678
/* Test methods
@@ -259,4 +281,20 @@ public void testBigDecimalWithBuffering() throws Exception
259281
NestedBigDecimalHolder2784.class);
260282
assertEquals(VALUE, result.holder.value);
261283
}
284+
285+
// [databind#4917]
286+
@Test
287+
public void testIssue4917() throws Exception {
288+
final String bd = "100.00";
289+
final double d = 50.0;
290+
final DeserializationIssue4917 value = new DeserializationIssue4917();
291+
value.decimalHolder = DecimalHolder4917.of(new BigDecimal(bd));
292+
value.number = d;
293+
final byte[] data = MAPPER.writeValueAsBytes(value);
294+
295+
final DeserializationIssue4917 result = MAPPER.readValue(
296+
data, DeserializationIssue4917.class);
297+
assertEquals(value.decimalHolder.value, result.decimalHolder.value);
298+
assertEquals(value.number, result.number);
299+
}
262300
}

‎smile/src/test/java/tools/jackson/dataformat/smile/mapper/NumberBeanTest.java

+38
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66

77
import org.junit.jupiter.api.Test;
88

9+
import com.fasterxml.jackson.annotation.JsonCreator;
910
import com.fasterxml.jackson.annotation.JsonUnwrapped;
11+
import com.fasterxml.jackson.annotation.JsonValue;
1012

1113
import tools.jackson.core.JsonToken;
1214
import tools.jackson.core.JsonParser;
@@ -45,6 +47,26 @@ static class NestedBigDecimalHolder2784 {
4547
public BigDecimalHolder2784 holder;
4648
}
4749

50+
// for [databind#4917]
51+
static class DeserializationIssue4917 {
52+
public DecimalHolder4917 decimalHolder;
53+
public double number;
54+
}
55+
56+
static class DecimalHolder4917 {
57+
@JsonValue
58+
BigDecimal value;
59+
60+
private DecimalHolder4917(BigDecimal value) {
61+
this.value = value;
62+
}
63+
64+
@JsonCreator(mode = JsonCreator.Mode.DELEGATING)
65+
static DecimalHolder4917 of(BigDecimal value) {
66+
return new DecimalHolder4917(value);
67+
}
68+
}
69+
4870
/*
4971
/**********************************************************
5072
/* Test methods
@@ -208,4 +230,20 @@ public void testBigDecimalWithBuffering() throws Exception
208230
NestedBigDecimalHolder2784.class);
209231
assertEquals(VALUE, result.holder.value);
210232
}
233+
234+
// [databind#4917]
235+
@Test
236+
public void testIssue4917() throws Exception {
237+
final String bd = "100.00";
238+
final double d = 50.0;
239+
final DeserializationIssue4917 value = new DeserializationIssue4917();
240+
value.decimalHolder = DecimalHolder4917.of(new BigDecimal(bd));
241+
value.number = d;
242+
final byte[] data = MAPPER.writeValueAsBytes(value);
243+
244+
final DeserializationIssue4917 result = MAPPER.readValue(
245+
data, DeserializationIssue4917.class);
246+
assertEquals(value.decimalHolder.value, result.decimalHolder.value);
247+
assertEquals(value.number, result.number);
248+
}
211249
}

0 commit comments

Comments
 (0)
Please sign in to comment.