1- package com .fasterxml .jackson .datatype .jsr310 .tofix ;
1+ package com .fasterxml .jackson .datatype .jsr310 .deser ;
22
33import java .time .Instant ;
44
55import org .junit .jupiter .api .Test ;
66
77import com .fasterxml .jackson .databind .JsonNode ;
88import com .fasterxml .jackson .databind .ObjectMapper ;
9+ import com .fasterxml .jackson .databind .cfg .JsonNodeFeature ;
910import com .fasterxml .jackson .datatype .jsr310 .ModuleTestBase ;
10- import com .fasterxml .jackson .datatype .jsr310 .testutil .failure .JacksonTestFailureExpected ;
1111
1212import static org .junit .jupiter .api .Assertions .*;
1313
1414// [modules-java8#307]: Loss of precision via JsonNode for BigDecimal-valued
1515// things (like Instant)
16- public class InstanceViaBigDecimal307Test extends ModuleTestBase
16+ // Solved via `JsonNodeFeature.USE_BIG_DECIMAL_FOR_FLOATS` added in Jackson 2.19
17+ public class InstantViaBigDecimal307Test extends ModuleTestBase
1718{
1819 static class Wrapper307 {
1920 public Instant value ;
@@ -24,7 +25,10 @@ protected Wrapper307() { }
2425
2526 private final Instant ISSUED_AT = Instant .ofEpochSecond (1234567890 ).plusNanos (123456789 );
2627
27- private ObjectMapper MAPPER = newMapper ();
28+ private ObjectMapper MAPPER = mapperBuilder ()
29+ // added in 2.19
30+ .enable (JsonNodeFeature .USE_BIG_DECIMAL_FOR_FLOATS )
31+ .build ();
2832
2933 @ Test
3034 public void instantViaReadValue () throws Exception {
@@ -33,7 +37,6 @@ public void instantViaReadValue() throws Exception {
3337 assertEquals (ISSUED_AT , deserialized .value );
3438 }
3539
36- @ JacksonTestFailureExpected
3740 @ Test
3841 public void instantViaReadTree () throws Exception {
3942 String serialized = MAPPER .writeValueAsString (new Wrapper307 (ISSUED_AT ));
0 commit comments