Suponiendo que tengo un esquema que describe un elemento raíz clase Root
que contiene un List<Entry>
donde la clase Entry
tiene un nombre de campo obligatorio.Personalización de la gestión de errores del proceso unmarshall JAXB
Aquí es cómo se ve en código:
@XmlRootElement
class Root{
@XmlElement(name="entry")
public List<Entry> entries = Lists.newArrayList();
}
@XmlRootElement
class Entry{
@XmlElement(name="name",required=true)
public String name;
}
Si yo proporciono el siguiente código XML para unmarshalling:
<root>
<entry>
<name>ekeren</name>
</entry>
<entry>
</entry>
</root>
tengo un problema porque la segunda entrada no contiene un nombre. Entonces unmarshall produce null
.
¿Hay alguna manera de personalizar JAXB para separar un objeto Root
que solo contendrá la entrada "buena"?
es una buena idea, gracias. Por supuesto, tendré que configurar eventHandler para que sea tolerante con el error "se requiere campo" pero no debería ser un problema. Me pregunto si hay una solución diferente, estoy tratando de hacer que el usuario de mi sistema (estoy escribiendo una lib para mi grupo que se ocupa de la configuración) pueda establecer fácilmente esta característica. Puedo hacerlo con anotación y una introspección de clase para ver todos los campos que necesitan ser probados para el problema de nombre requerido ... dentro afterUnmarshal (...). Mantendré esto sin respuesta, tal vez haya alguien con una respuesta más adecuada para lo que necesito. – ekeren
@ekeren mira mi edición, afortunadamente eso ayuda. aclamaciones – sfussenegger