diff --git a/jakarta-jsonp/src/test/java/com/fasterxml/jackson/datatype/jsonp/JsonValueDeserializationTest.java b/jakarta-jsonp/src/test/java/com/fasterxml/jackson/datatype/jsonp/JsonValueDeserializationTest.java index cf198c7..d034744 100644 --- a/jakarta-jsonp/src/test/java/com/fasterxml/jackson/datatype/jsonp/JsonValueDeserializationTest.java +++ b/jakarta-jsonp/src/test/java/com/fasterxml/jackson/datatype/jsonp/JsonValueDeserializationTest.java @@ -10,6 +10,17 @@ public class JsonValueDeserializationTest extends TestBase { + static class ObjectImpl { + JsonValue obj1; + JsonValue obj2; + + @ConstructorProperties({"obj1", "obj2"}) + public ObjectImpl(JsonValue obj1, JsonValue obj2) { + this.obj1 = obj1; + this.obj2 = obj2; + } + } + private final ObjectMapper MAPPER = newMapper(); public void testSimpleArray() throws Exception @@ -115,20 +126,12 @@ public void testNullNode() throws Exception // for [datatype-jsr353#19] public void testConstructorProperties() throws Exception { - final String JSON = "{\"obj1\":{}}"; - ObjectImpl ob = MAPPER.readValue(JSON, ObjectImpl.class); + ObjectImpl ob = MAPPER.readValue("{\"obj1\":{}}", ObjectImpl.class); assertTrue(ob.obj1 instanceof JsonObject); assertNull(ob.obj2); - } - - static class ObjectImpl { - JsonValue obj1; - JsonValue obj2; - @ConstructorProperties({"obj1", "obj2"}) - public ObjectImpl(JsonValue obj1, JsonValue obj2) { - this.obj1 = obj1; - this.obj2 = obj2; - } + ObjectImpl ob2 = MAPPER.readValue("{\"obj2\":null}", ObjectImpl.class); + assertNull(ob2.obj1); + assertSame(JsonValue.NULL, ob2.obj2); } } diff --git a/jsr-353/src/test/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializationTest.java b/jsr-353/src/test/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializationTest.java index 2c72120..3d7d250 100644 --- a/jsr-353/src/test/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializationTest.java +++ b/jsr-353/src/test/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializationTest.java @@ -10,6 +10,18 @@ public class JsonValueDeserializationTest extends TestBase { + // for [datatype-jsr353#19] + static class ObjectImpl { + JsonValue obj1; + JsonValue obj2; + + @ConstructorProperties({"obj1", "obj2"}) + public ObjectImpl(JsonValue obj1, JsonValue obj2) { + this.obj1 = obj1; + this.obj2 = obj2; + } + } + private final ObjectMapper MAPPER = newMapper(); public void testSimpleArray() throws Exception @@ -115,20 +127,12 @@ public void testNullNode() throws Exception // for [datatype-jsr353#19] public void testConstructorProperties() throws Exception { - final String JSON = "{\"obj1\":{}}"; - ObjectImpl ob = MAPPER.readValue(JSON, ObjectImpl.class); + ObjectImpl ob = MAPPER.readValue("{\"obj1\":{}}", ObjectImpl.class); assertTrue(ob.obj1 instanceof JsonObject); assertNull(ob.obj2); - } - - static class ObjectImpl { - JsonValue obj1; - JsonValue obj2; - @ConstructorProperties({"obj1", "obj2"}) - public ObjectImpl(JsonValue obj1, JsonValue obj2) { - this.obj1 = obj1; - this.obj2 = obj2; - } + ObjectImpl ob2 = MAPPER.readValue("{\"obj2\":null}", ObjectImpl.class); + assertNull(ob2.obj1); + assertSame(JsonValue.NULL, ob2.obj2); } } diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index d2c592b..8cc27ad 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -14,6 +14,9 @@ Modules: #17: Add configurable amount representations for Joda Money module (contributed by Andrzej P) +#19: `JsonValue.NULL` deserialization has different behaviours with constructor properties + vs public properties + (contributed by xdrsynapse@github) 2.13.2 (06-Mar-2022) 2.13.1 (19-Dec-2021)