Joda Format DateTime pour XMLGregorianCalendar Type

Je suis en utilisant JAXB 2.2.8-b01 impl et j'ai un schéma qui a un xs:date élément qui crée un XMLGregorianCalendar instance. Je vais essayer d'obtenir un Joda-Time DateTime format d'horodatage mais depuis que je dois avoir un XMLGregorianCalendar exemple, je ne suis pas sûr que c'est possible. Des idées?

Schéma XSD:

<xs:element type="xs:date" name="date-archived" minOccurs="0" maxOccurs="1" nillable="false"/>

JAXB Généré Propriété:

@XmlSchemaType(name = "date")
protected XMLGregorianCalendar date;

Conversion XML Classe:

//java.util.Date being passed


private XMLGregorianCalendar converToGregorianCal(Date date) {
    DatatypeFactory df = null;
    try {
        df = DatatypeFactory.newInstance();
    } catch (DatatypeConfigurationException e) {
        LOG.error("error getting DatatypeFactory instance " + e.getMessage()); 
    }
    if (date == null) {
        return null;
    } else {
        GregorianCalendar gc = new GregorianCalendar();
        gc.setTimeInMillis(date.getTime());
        return df.newXMLGregorianCalendar(gc);
    }
}
Pour info, le Joda-Time le projet est maintenant dans entretien, avec l'équipe conseiller de migration de la java.de temps les classes. Voir Tutoriel Oracle. myXMLGregorianCalendar.toGregorianCalendar().toZonedDateTime().toString()
Vrai, aussi longtemps que vous êtes à l'aide de Java 8. Avec l'héritage de Java 7 (ou 6 ou 5) les Joda-Time est le meilleur moyen.
Une grande partie de la java.temps fonctionnalité a été porté à Java 6 & 7 dans le ThreeTen-Backport projet. Lorsque vous éventuellement passer à Java 8 ou version ultérieure, vous aurez besoin de faire un peu plus que de passer votre import consolidés.
Grâce à la mise en exergue de cette arrière-port. Je n'étais pas au courant de cela. Que ferait la transition vers Java 8 plus lisse.

OriginalL'auteur c12 | 2014-01-22