Desserialização polimórfica de Jackson baseada em Enum
Estou trabalhando comJacksonPolimorphicDeserialization, este é o meu código que desserializa na classe apropriada baseada na propriedade 'type':
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type",
defaultImpl = Event.class,
visible = true)
@JsonSubTypes({
@Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"),
@Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"),
})
public abstract class AbstractEvent {
private String type;
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
Está funcionando perfeitamente e meu json se transforma na classe esperada de acordo com o valor 'type'.
No entanto, estou pensando em mover a propriedade 'type' de String para Enum, este é o meu novo código com essa alteração:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type",
defaultImpl = Event.class,
visible = true)
@JsonSubTypes({
@Type(value = SpecialEvent1.class, name = "SPECIAL_EVENT_1"),
@Type(value = SpecialEvent2.class, name = "SPECIAL_EVENT_2"),
})
public abstract class AbstractEvent {
private EventType type;
public EventType getType() {
return type;
}
public void setType(EventType type) {
this.type = type;
}
}
e o Enum:
public enum EventType {
SPECIAL_EVENT_1,
SPECIAL_EVENT_2,
EVENT;
}
O problema é que esta segunda abordagem não está funcionando ... alguma idéia porque ??? posso usar o Enum aqui ???
Obrigado!