У Orika есть набор "BuiltinConverters"
Но тот, который сопоставляет XMLGregorianCalendar с java.util.Date, у меня не работает должным образом. Я нашел способ отобразить его с удовлетворительным результатом, но я не могу найти способ заставить Orika использовать его вместо собственного встроенного преобразователя. Я попытался зарегистрировать конвертер в MapperDefinition:
public class MapperDefinition {
private final MapperFactory factory;
private final ConverterFactory converterFactory;
public MapperDefinition() {
factory = new DefaultMapperFactory.Builder().build();
converterFactory = factory.getConverterFactory();
converterFactory.registerConverter(new CustomConverter<XMLGregorianCalendar, Date>() {
@Override
public Date convert(XMLGregorianCalendar source, Type<? extends Date> destinationType) {
LocalDateTime ldt = LocalDateTime.of(source.getYear(), source.getMonth(),
source.getDay(), source.getHour(), source.getMinute(), source.getSecond());
return Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
}
}
}
}
Но отладка показывает, что Orika, кажется, игнорирует мой пользовательский преобразователь и по-прежнему использует свой собственный встроенный преобразователь. Я также не могу найти информацию о переопределении в Руководстве пользователя Orika:
https://orika-mapper.github.io/orika-docs/converters.html
Кто-нибудь знает, можно ли заставить Орику использовать мой способ сопоставления этих двух типов?