From 7bdecb162f9766797c0b6e6fd54835717c5d4fe9 Mon Sep 17 00:00:00 2001 From: Yih Tsern Date: Tue, 3 Oct 2023 22:51:15 +0800 Subject: [PATCH] Add test cases for issue #3992. --- .../records/RecordWithJsonIgnoreTest.java | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/src/test-jdk14/java/com/fasterxml/jackson/databind/records/RecordWithJsonIgnoreTest.java b/src/test-jdk14/java/com/fasterxml/jackson/databind/records/RecordWithJsonIgnoreTest.java index 3004cbebf9f..1ddbbcb5084 100644 --- a/src/test-jdk14/java/com/fasterxml/jackson/databind/records/RecordWithJsonIgnoreTest.java +++ b/src/test-jdk14/java/com/fasterxml/jackson/databind/records/RecordWithJsonIgnoreTest.java @@ -22,6 +22,15 @@ public String name() { } } + record RecordWithIgnoreComponentOverriddenAccessor(int id, @JsonIgnore String name) { + + // @JsonIgnore on overridden method is not automatically inherited by overriding method + @Override + public String name() { + return name; + } + } + record RecordWithIgnorePrimitiveType(@JsonIgnore int id, String name) { } @@ -71,8 +80,33 @@ public void testSerializeJsonIgnoreAccessorRecord() throws Exception { } public void testDeserializeJsonIgnoreAccessorRecord() throws Exception { - RecordWithIgnoreAccessor value = MAPPER.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithIgnoreAccessor.class); - assertEquals(new RecordWithIgnoreAccessor(123, null), value); + RecordWithIgnoreAccessor expected = new RecordWithIgnoreAccessor(123, null); + + assertEquals(expected, MAPPER.readValue("{\"id\":123}", RecordWithIgnoreAccessor.class)); + assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":null}", RecordWithIgnoreAccessor.class)); + assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithIgnoreAccessor.class)); + } + + + /* + /********************************************************************** + /* Test methods, JsonIgnore component, but accessor method was overridden without re-annotating with JsonIgnore + /********************************************************************** + */ + + public void testSerializeJsonIgnoreComponentOverrideAccessorRecord() throws Exception { + String json = MAPPER.writeValueAsString(new RecordWithIgnoreComponentOverriddenAccessor(123, "Bob")); + assertEquals("{\"id\":123}", json); + } + + public void testDeserializeJsonIgnoreComponentOverrideAccessorRecord() throws Exception { + RecordWithIgnoreComponentOverriddenAccessor expected = new RecordWithIgnoreComponentOverriddenAccessor(123, null); + + assertEquals(expected, MAPPER.readValue("{\"id\":123}", RecordWithIgnoreComponentOverriddenAccessor.class)); + assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":null}", RecordWithIgnoreComponentOverriddenAccessor.class)); + + // BUG: Deserialization should've ignored 'name' - caused by jackson-databind/pull/3737 + // assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithIgnoreComponentOverriddenAccessor.class)); } /*