package com.fasterxml.jackson.databind.objectid;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
public class ObjectId825Test extends BaseMapTest
{
@JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="oidString")
public static class AbstractEntity {
public String oidString;
}
public static class TestA extends AbstractEntity {
public TestAbst testAbst;
public TestD d;
}
static class TestAbst extends AbstractEntity { }
static class TestC extends TestAbst {
public TestD d;
}
static class TestD extends AbstractEntity { }
private final ObjectMapper DEF_TYPING_MAPPER = new ObjectMapper();
{
DEF_TYPING_MAPPER.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
}
public void testDeserialize() throws Exception {
TestA a = new TestA();
a.oidString = "oidA";
TestC c = new TestC();
c.oidString = "oidC";
a.testAbst = c;
TestD d = new TestD();
d.oidString = "oidD";
c.d = d;
a.d = d;
String json = DEF_TYPING_MAPPER.writeValueAsString(a);
// System.out.println("JSON: " + json);
TestA testADeserialized = DEF_TYPING_MAPPER.readValue(json, TestA.class);
assertNotNull(testADeserialized);
assertNotNull(testADeserialized.d);
assertEquals("oidD", testADeserialized.d.oidString);
}
}