Tengo que generar un elemento xml que pueda tener como valor cualquier "tipo primitivo" (xsd: cadena, xsd: booleano, etc.). Ejemplos:JAXB: ¿configura un XmlAdapter solo para un subtipo específico de un elemento?
<field xsi:type="xsd:string" name="aString">String Value</field>
<field xsi:type="xsd:dateTime" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
...
Por lo tanto, utilizan esta aplicación que hace JAXB decidir el xsi:type
del tipo primitivo:
public class Field {
@XmlAttribute
private String name;
@XmlElement
Object value;
}
y está funcionando como se esperaba, pero todo el java.util.Date Obtiene el tipo xs:dateTime
...
Ahora quieren cambiar el comportamiento del contador de referencias sólo cuando el objeto 'valor' es una instancia de java.util.Date a campos obtiene así:
<field xsi:type="xsd:date" name="aDate">2011-10-21</field>
<field xsi:type="xsd:dateTime" name="aDateTime">2011-10-21T12:00:00</field>
lo tanto, crear un adaptador, pero si intento esto:
@XmlElement
@XmlJavaTypeAdapter(DateAdapter.class)
Object value;
El mosto adaptador controla un tipo java.lang.Object
public class DateAdapter extends XmlAdapter<String, Object> {...}
Pero no quiero perder el JAXB Marshallers para todos los demás objetos (Integer, Double, etc.) ...
hay una forma de configurar un adaptador para un subtipo específico de un elemento?
¿Encontró alguna solución para esto? – nhylated
No, realmente ... Tengo un adaptador que maneja la clase Object y administra internamente cada subtipo. No es "agradable", pero funciona. – ggarciao