Skip to content

Commit 5e0deda

Browse files
committed
Add one more Record test
1 parent 92181df commit 5e0deda

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

src/test-jdk17/java/com/fasterxml/jackson/databind/records/RecordTypeInfo3342Test.java

+46
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,17 @@
11
package com.fasterxml.jackson.databind.records;
22

3+
import com.fasterxml.jackson.annotation.JsonCreator;
4+
import com.fasterxml.jackson.annotation.JsonProperty;
35
import com.fasterxml.jackson.annotation.JsonSubTypes;
46
import com.fasterxml.jackson.annotation.JsonTypeInfo;
7+
58
import com.fasterxml.jackson.databind.ObjectMapper;
69
import com.fasterxml.jackson.databind.testutil.DatabindTestUtil;
10+
711
import org.junit.jupiter.api.Test;
812

913
import static org.junit.jupiter.api.Assertions.assertEquals;
14+
import static org.junit.jupiter.api.Assertions.assertNotNull;
1015

1116
// [databind#3102]
1217
public class RecordTypeInfo3342Test extends DatabindTestUtil
@@ -37,6 +42,36 @@ public record Example(
3742
})
3843
SpiceTolerance tolerance) { }
3944

45+
// Test from https://github.com/FasterXML/jackson-modules-base/pull/249
46+
47+
static record RootRecord249(AbstractMember249 member) {
48+
}
49+
50+
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "@class")
51+
@JsonSubTypes({
52+
@JsonSubTypes.Type(value = StringMember.class, name = "string"),
53+
@JsonSubTypes.Type(value = IntMember.class, name = "int")
54+
})
55+
static abstract class AbstractMember249 { }
56+
57+
static final class StringMember extends AbstractMember249 {
58+
final String val;
59+
60+
@JsonCreator
61+
public StringMember(@JsonProperty("val") String val) {
62+
this.val = val;
63+
}
64+
}
65+
66+
static final class IntMember extends AbstractMember249 {
67+
final int val;
68+
69+
@JsonCreator
70+
public IntMember(@JsonProperty("val") int val) {
71+
this.val = val;
72+
}
73+
}
74+
4075
private final ObjectMapper MAPPER = newJsonMapper();
4176

4277
@Test
@@ -60,4 +95,15 @@ public void testSerializeDeserializeJsonSubType_HIGH() throws Exception {
6095
Example value = MAPPER.readValue(json, Example.class);
6196
assertEquals(record, value);
6297
}
98+
99+
// Test from https://github.com/FasterXML/jackson-modules-base/pull/249
100+
@Test
101+
public void testDeserializeRecordWithAbstractMember() throws Exception {
102+
RootRecord249 value = MAPPER.readValue(
103+
"{\"member\":{\"@class\":\"string\",\"val\":\"Hello, abstract member!\"}}",
104+
RootRecord249.class);
105+
assertNotNull(value.member());
106+
assertEquals(StringMember.class, value.member().getClass());
107+
assertEquals("Hello, abstract member!", ((StringMember)value.member()).val);
108+
}
63109
}

0 commit comments

Comments
 (0)