javax.xml.bind.annotation.adapters


1. Adapting a LocalDate to an XMLGregorianCalendar

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class LocalDateAdapter extends XmlAdapter<XMLGregorianCalendar, LocalDate> {

    @Override
    public XMLGregorianCalendar marshal(LocalDate localDate) throws Exception {
        return DatatypeFactory.newInstance().newXMLGregorianCalendar(localDate.getYear(), localDate.getMonthValue(), localDate.getDayOfMonth(), 0, 0, 0, 0, 0);
    }

    @Override
    public LocalDate unmarshal(XMLGregorianCalendar xmlGregorianCalendar) throws Exception {
        return LocalDate.of(xmlGregorianCalendar.getYear(), xmlGregorianCalendar.getMonth(), xmlGregorianCalendar.getDay());
    }
}

2. Adapting a ZonedDateTime to an XMLGregorianCalendar

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class ZonedDateTimeAdapter extends XmlAdapter<XMLGregorianCalendar, ZonedDateTime> {

    @Override
    public XMLGregorianCalendar marshal(ZonedDateTime zonedDateTime) throws Exception {
        return DatatypeFactory.newInstance().newXMLGregorianCalendar(zonedDateTime.getYear(), zonedDateTime.getMonthValue(), zonedDateTime.getDayOfMonth(), zonedDateTime.getHour(), zonedDateTime.getMinute(), zonedDateTime.getSecond(), zonedDateTime.getNano()/1000000, zonedDateTime.getOffset().getTotalSeconds()/3600);
    }

    @Override
    public ZonedDateTime unmarshal(XMLGregorianCalendar xmlGregorianCalendar) throws Exception {
        return ZonedDateTime.of(xmlGregorianCalendar.getYear(), xmlGregorianCalendar.getMonth(), xmlGregorianCalendar.getDay(), xmlGregorianCalendar.getHour(), xmlGregorianCalendar.getMinute(), xmlGregorianCalendar.getSecond(), xmlGregorianCalendar.getMillisecond()*1000000, ZoneOffset.ofHoursMinutes(xmlGregorianCalendar.getTimezone(), xmlGregorianCalendar.getTimezone()));
    }
}

3. Adapting a BigDecimal to a String

4. Adapting a Duration to an XMLGregorianCalendarDuration

5. Adapting a File to a ByteArray

6. Adapting a List to an Array

7. Adapting a Map to an Object

8. Adapting an Enum to a String

9. Adapting a boolean to an int

10. Adapting a Date to an XMLGregorianCalendar

11. Adapting a URI to a String

12. Adapting a URL to a String

13. Adapting an IOException to a String

14. Adapting a MalformedURLException to a String