| package com.fasterxml.jackson.databind.type; |
| |
| 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<T> { |
| } |
| |
| static class Base implements IFace<Sub> { |
| @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); |
| } |
| } |