package com.fasterxml.jackson.failing;
import com.fasterxml.jackson.annotation.*;
import com.fasterxml.jackson.databind.*;
// Test for [databind#1328]; does not actually reproduce the issue at this point.
public class EnumAsExternalPropertyId1328Test extends BaseMapTest
{
static class Bean1328 {
public Type1328 type;
@JsonTypeInfo(property = "type", include = JsonTypeInfo.As.EXTERNAL_PROPERTY, use = JsonTypeInfo.Id.NAME,
visible=true)
@JsonSubTypes({
@JsonSubTypes.Type(value = A.class,name = "A"),
@JsonSubTypes.Type(value = B.class,name = "B")
})
public Interface1328 obj;
}
static interface Interface1328 { }
enum Type1328 {
A, B;
}
static class A implements Interface1328 {
public int a;
}
static class B implements Interface1328 {
public int b;
}
/*
/**********************************************************
/* Test methods
/**********************************************************
*/
private final ObjectMapper MAPPER = new ObjectMapper();
public void testExternalTypeIdAsEnum() throws Exception
{
final String JSON = aposToQuotes("{ 'type':'A', 'obj': { 'a' : 4 } }'");
Bean1328 result = MAPPER.readValue(JSON, Bean1328.class);
assertNotNull(result.obj);
assertSame(A.class, result.obj.getClass());
assertEquals(4, ((A) result.obj).a);
assertSame(Type1328.A, result.type);
}
}