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?