unmarshal parse jaxbunmarshaller ejemplo java jaxb

java - parse - ¿Cómo aplico globalmente un XmlAdapter a un programa JAXB?



parse xml java jaxb (1)

Puede registrar su XmlAdapter a nivel de paquete y hacer que se aplique a todos los campos / propiedades de ese tipo dentro de ese paquete:

com / example / package-info.java

@XmlJavaTypeAdapters({ @XmlJavaTypeAdapter(value=BigDecimalAdapter.class, type=BigDecimal.class) }) package com.example; import javax.xml.bind.annotation.adapters.*;

Para más información

Estoy usando JAXB (a través de un lío de JaxWS y CXF) y tratando de ordenar el tipo BigDecimal en una cadena (número) e int (exponente) porque ahora tenemos una interfaz que no puede interpretar BigDecimal gracias a problemas de configuración regional.

Lo que intento es usar un XmlAdapter para convertir BigDecimal en mi propio tipo, BigDecimalUnScaled. Esto funciona bien siempre que coloque mi anotación @XmlJavaTypeAdapter directamente en el campo. Sin embargo, lo que realmente me gustaría hacer es ponerlo en la implementación de mi servicio web y aplicarlo globalmente a todos los BigDecimales sin tener que ordenar cada objeto devuelto. ¿Hay alguna manera de que pueda hacer esto?

P.ej

Interface DummyWebService -- Get Return Object (Return object is a POJO with say an ID and a BigDecimal value) Implementation default -- No type annotation, uses default BigDecimal marshaller Marshalled Implementation -- XmlTypeAdapters implementation, should globally use BigDecimal

Intenté simplemente poner el adaptador en la implementación, pero no funciona.

¿Algunas ideas?