Lors de l'utilisation de JAXB avec Java-First, les champs/propriétés de type java.util.Date
sont organisés et démasqués en tant que xs:dateTime
et tout fonctionne comme prévu.Dire JAXB à unmarshal <xs:dateTime> à la classe Date à l'aide des annotations
Mais si le type du champ/propriété est Object
, JAXB unmarshals xs:dateTime
à XMLGregorianCalendarImpl
.
Je dois trouver un moyen de rendre les valeurs de date-heure unmarshal JAXB à java.util.Date
en utilisant des annotations. Sinon, je devrai passer en revue toutes les valeurs non-mémorisées dans chaque cas d'utilisation.
Même s'il y avait un after-unmarshall-hook à définir sur les classes contenant des champs d'objet et convertir les instances manuellement serait bon. Mais je ne pouvais pas trouver quelque chose qui puisse être utilisé de cette façon non plus.
Notez que j'ai un accès limité au contexte JAXB, car il est utilisé dans Apache CXF.
L'objet n'est pas toujours une date. Cela peut être de différents types. Dans le XSD généré, il est spécifié en tant que xs: anyType. La date est l'une des valeurs possibles. – Iravanchi
Vous pouvez écrire un XmlAdapter pour convertir entre les types de date. –
J'ai un XmlAdapter pour la conversion entre XMLGregorianCalendar et Date, mais je ne peux pas l'appliquer à un champ de type Object en utilisant @XmlJavaTypeAdapter - il en résulte IllegalAnnotationException. – Iravanchi