From c131165722c2d76d52f79f86f1e039af3123186e Mon Sep 17 00:00:00 2001 From: joohyukkim Date: Fri, 28 Apr 2023 00:14:17 +0900 Subject: [PATCH 1/4] Create RecordDeserialization3897Test.java --- .../RecordDeserialization3897Test.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java diff --git a/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java b/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java new file mode 100644 index 0000000000..22d5cdef37 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java @@ -0,0 +1,21 @@ +package com.fasterxml.jackson.failing; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.BaseMapTest; + +// [databinding#3897] record class breaks deserialization when there's only a single field, and marked Access.WRITE_ONLY +public class RecordDeserialization3897Test extends BaseMapTest { + + public record Example( + @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) + String value + ) {} + + public void testRecordWithWriteOnly() throws Exception { + final String JSON = a2q("{'value':'foo'}"); + + Example result = newJsonMapper().readValue(JSON, Example.class); + + assertEquals("foo", result.value()); + } +} From b3954a0807b77b6206bdf8b2c88afeba1354299b Mon Sep 17 00:00:00 2001 From: joohyukkim Date: Fri, 28 Apr 2023 00:19:03 +0900 Subject: [PATCH 2/4] Update RecordDeserialization3897Test.java --- .../jackson/failing/RecordDeserialization3897Test.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java b/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java index 22d5cdef37..36559fff50 100644 --- a/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java +++ b/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java @@ -3,7 +3,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.BaseMapTest; -// [databinding#3897] record class breaks deserialization when there's only a single field, and marked Access.WRITE_ONLY +// [databinding#3897] This is failing test for `Record` class deserialization with single field annotated with +// `JsonProperty.Access.WRITE_ONLY`. Regression from Jackson 2.14.2 public class RecordDeserialization3897Test extends BaseMapTest { public record Example( @@ -11,11 +12,12 @@ public record Example( String value ) {} + // Passes in 2.14.2, but does not in 2.15.0 public void testRecordWithWriteOnly() throws Exception { final String JSON = a2q("{'value':'foo'}"); Example result = newJsonMapper().readValue(JSON, Example.class); - + assertEquals("foo", result.value()); } } From 2bd6bfeec935d144a82368151cb2e84128b65c2a Mon Sep 17 00:00:00 2001 From: joohyukkim Date: Fri, 28 Apr 2023 00:24:31 +0900 Subject: [PATCH 3/4] Update RecordDeserialization3897Test.java --- .../jackson/failing/RecordDeserialization3897Test.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java b/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java index 36559fff50..8f32429f6b 100644 --- a/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java +++ b/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java @@ -7,7 +7,7 @@ // `JsonProperty.Access.WRITE_ONLY`. Regression from Jackson 2.14.2 public class RecordDeserialization3897Test extends BaseMapTest { - public record Example( + record Example( @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) String value ) {} From cfac52478066564b9aaed7e311f9d2df5508f594 Mon Sep 17 00:00:00 2001 From: joohyukkim Date: Fri, 28 Apr 2023 00:28:17 +0900 Subject: [PATCH 4/4] Fix record class location --- .../databind}/failing/RecordDeserialization3897Test.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/{test/java/com/fasterxml/jackson => test-jdk14/java/com/fasterxml/jackson/databind}/failing/RecordDeserialization3897Test.java (94%) diff --git a/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java b/src/test-jdk14/java/com/fasterxml/jackson/databind/failing/RecordDeserialization3897Test.java similarity index 94% rename from src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java rename to src/test-jdk14/java/com/fasterxml/jackson/databind/failing/RecordDeserialization3897Test.java index 8f32429f6b..c827303440 100644 --- a/src/test/java/com/fasterxml/jackson/failing/RecordDeserialization3897Test.java +++ b/src/test-jdk14/java/com/fasterxml/jackson/databind/failing/RecordDeserialization3897Test.java @@ -1,4 +1,4 @@ -package com.fasterxml.jackson.failing; +package com.fasterxml.jackson.databind.failing; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.databind.BaseMapTest;