Para un proyecto en el que estoy trabajando, tenemos muchas enumeraciones en uso. El objeto modelo en sí está compuesto de muchas clases pequeñas; este modelo luego lo serializamos a nuestro DB como XML a través de JAXB. Ahora, queremos poder serializar nuestros valores enum usando el retorno de un método particular en la enumeración; que se le da:Proporcionar serialización de valor personalizado para las enumeraciones a través de JAXB
public enum Qualifier {
FOO("1E", "Foo type document"),
BAR("2", "Bar object");
private String code, description;
public Qualifier(String code, String description) {
this.code = code;
this.description = description;
}
public String getCode() {
return this.code;
}
public String getDescription() {
return this.description;
}
}
etc etc En la actualidad, cuando serializado a XML, obtenemos algo como:
<qualifier>FOO</qualifier>
que es como JAXB maneja. Sin embargo, necesitamos que el valor sea el retorno de getCode(), y muchas de nuestras enumeraciones siguen esa convención (con un método estático correspondiente para la búsqueda mediante código), de modo que el fragmento XML anterior se vea como:
<qualifier>1E</qualifier>
en su lugar. Podemos anotarlo con @XmlEnum
y @XmlEnumValue
, pero eso es demasiado tedioso: algunas enumeraciones tienen hasta 30 valores enumerados y su edición manual no es buena. También estamos pensando en usar un serializador personalizado en su lugar, pero me gustaría evitar ir por esa ruta por el momento (pero si ese es el camino a seguir, entonces no tengo ningún problema con él).
¿Alguna idea de cómo?
Hmm ... esto se parece a la que estamos buscando. Mi problema es que no es lo suficientemente general (no se pueden usar genéricos en la enumeración), pero es factible.Será mejor crear un adaptador por enum en lugar de anotar los valores enum. ¡Gracias! – jmibanez