Skip to content

Commit

Permalink
Add test cases for issue FasterXML#3992.
Browse files Browse the repository at this point in the history
  • Loading branch information
yihtserns committed Oct 6, 2023
1 parent dc19ee8 commit 7bdecb1
Showing 1 changed file with 36 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
}

Expand Down Expand Up @@ -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));
}

/*
Expand Down

0 comments on commit 7bdecb1

Please sign in to comment.