blob: a81f6aba6c4dc7e16e4a5c852857cd88bcc7a252 [file] [log] [blame]
package com.fasterxml.jackson.failing;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
public class ExternalTypeIdWithUnwrapped2039Test extends BaseMapTest
{
static class MainType2039 {
public String text;
@JsonUnwrapped public Wrapped2039 wrapped;
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXTERNAL_PROPERTY, property = "subtype")
@JsonSubTypes({ @JsonSubTypes.Type(value = SubA2039.class, name = "SubA") })
public SubType2039 sub;
public void setSub(SubType2039 s) {
sub = s;
}
public void setWrapped(Wrapped2039 w) {
wrapped = w;
}
}
static class Wrapped2039 {
public String wrapped;
}
public static class SubType2039 { }
public static class SubA2039 extends SubType2039 {
@JsonProperty public boolean bool;
}
public void testExternalWithUnwrapped2039() throws Exception
{
final ObjectMapper mapper = newObjectMapper();
final String json = aposToQuotes("{\n"
+"'text': 'this is A',\n"
+"'wrapped': 'yes',\n"
+"'subtype': 'SubA',\n"
+"'sub': {\n"
+" 'bool': true\n"
+"}\n"
+"}");
final MainType2039 main = mapper.readValue(json, MainType2039.class);
assertEquals("this is A", main.text);
assertEquals("yes", main.wrapped.wrapped);
assertNotNull(main.sub);
assertEquals(SubA2039.class, main.sub.getClass()); // <- fails here
assertEquals(true, ((SubA2039) main.sub).bool);
}
}