Skip to content

Commit 7bdecb1

Browse files
committed
Add test cases for issue FasterXML#3992.
1 parent dc19ee8 commit 7bdecb1

File tree

1 file changed

+36
-2
lines changed

1 file changed

+36
-2
lines changed

src/test-jdk14/java/com/fasterxml/jackson/databind/records/RecordWithJsonIgnoreTest.java

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@ public String name() {
2222
}
2323
}
2424

25+
record RecordWithIgnoreComponentOverriddenAccessor(int id, @JsonIgnore String name) {
26+
27+
// @JsonIgnore on overridden method is not automatically inherited by overriding method
28+
@Override
29+
public String name() {
30+
return name;
31+
}
32+
}
33+
2534
record RecordWithIgnorePrimitiveType(@JsonIgnore int id, String name) {
2635
}
2736

@@ -71,8 +80,33 @@ public void testSerializeJsonIgnoreAccessorRecord() throws Exception {
7180
}
7281

7382
public void testDeserializeJsonIgnoreAccessorRecord() throws Exception {
74-
RecordWithIgnoreAccessor value = MAPPER.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithIgnoreAccessor.class);
75-
assertEquals(new RecordWithIgnoreAccessor(123, null), value);
83+
RecordWithIgnoreAccessor expected = new RecordWithIgnoreAccessor(123, null);
84+
85+
assertEquals(expected, MAPPER.readValue("{\"id\":123}", RecordWithIgnoreAccessor.class));
86+
assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":null}", RecordWithIgnoreAccessor.class));
87+
assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithIgnoreAccessor.class));
88+
}
89+
90+
91+
/*
92+
/**********************************************************************
93+
/* Test methods, JsonIgnore component, but accessor method was overridden without re-annotating with JsonIgnore
94+
/**********************************************************************
95+
*/
96+
97+
public void testSerializeJsonIgnoreComponentOverrideAccessorRecord() throws Exception {
98+
String json = MAPPER.writeValueAsString(new RecordWithIgnoreComponentOverriddenAccessor(123, "Bob"));
99+
assertEquals("{\"id\":123}", json);
100+
}
101+
102+
public void testDeserializeJsonIgnoreComponentOverrideAccessorRecord() throws Exception {
103+
RecordWithIgnoreComponentOverriddenAccessor expected = new RecordWithIgnoreComponentOverriddenAccessor(123, null);
104+
105+
assertEquals(expected, MAPPER.readValue("{\"id\":123}", RecordWithIgnoreComponentOverriddenAccessor.class));
106+
assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":null}", RecordWithIgnoreComponentOverriddenAccessor.class));
107+
108+
// BUG: Deserialization should've ignored 'name' - caused by jackson-databind/pull/3737
109+
// assertEquals(expected, MAPPER.readValue("{\"id\":123,\"name\":\"Bob\"}", RecordWithIgnoreComponentOverriddenAccessor.class));
76110
}
77111

78112
/*

0 commit comments

Comments
 (0)