diff --git a/src/test/java/com/fasterxml/jackson/failing/TestTypeFactoryWithRecursiveTypes.java b/src/test/java/com/fasterxml/jackson/failing/TestTypeFactoryWithRecursiveTypes.java new file mode 100644 index 0000000000..fa9e781090 --- /dev/null +++ b/src/test/java/com/fasterxml/jackson/failing/TestTypeFactoryWithRecursiveTypes.java @@ -0,0 +1,32 @@ +package com.fasterxml.jackson.failing; + +import java.io.IOException; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.databind.BaseMapTest; +import com.fasterxml.jackson.databind.type.TypeFactory; + + +// https://github.com/FasterXML/jackson-databind/issues/1647 +public class TestTypeFactoryWithRecursiveTypes extends BaseMapTest { + + static interface IFace { + } + + static class Base implements IFace { + @JsonProperty int base = 1; + } + + static class Sub extends Base { + @JsonProperty int sub = 2; + } + + public void testBasePropertiesIncludedWhenSerializingSubWhenSubTypeLoadedAfterBaseType() throws IOException { + TypeFactory tf = TypeFactory.defaultInstance(); + tf.constructType(Base.class); + tf.constructType(Sub.class); + Sub sub = new Sub(); + String serialized = objectMapper().writeValueAsString(sub); + assertEquals("{\"base\":1,\"sub\":2}", serialized); + } +}