in src/main/java/com/epam/digital/data/platform/starter/database/config/JooqConfig.java [64:108]
public ConverterProvider converterProvider(@Qualifier("jooqMapper") ObjectMapper jooqMapper) {
return new ConverterProvider() {
final ConverterProvider defaultConverterProvider = new DefaultConverterProvider();
@Override
public <T, U> Converter<T, U> provide(Class<T> tType, Class<U> uType) {
if (uType == LocalDate.class) {
return (Converter<T, U>)
Converter.ofNullable(Date.class, LocalDate.class, Date::toLocalDate, Date::valueOf);
} else if (uType == LocalTime.class) {
return (Converter<T, U>)
Converter.ofNullable(Time.class, LocalTime.class, Time::toLocalTime, Time::valueOf);
} else if (uType == LocalDateTime.class) {
return (Converter<T, U>)
Converter.ofNullable(
Timestamp.class,
LocalDateTime.class,
Timestamp::toLocalDateTime,
Timestamp::valueOf);
} else if (Enum.class.isAssignableFrom(uType)) {
return new EnumConverter(tType, uType);
} else if (tType == JSON.class) {
return Converter.ofNullable(
tType,
uType,
t -> {
try {
return jooqMapper.readValue(((JSON) t).data(), uType);
} catch (Exception var4) {
throw new DataTypeException("JSON mapping error", var4);
}
},
u -> {
try {
return (T) JSON.valueOf(jooqMapper.writeValueAsString(u));
} catch (Exception var3) {
throw new DataTypeException("JSON mapping error", var3);
}
});
} else {
return defaultConverterProvider.provide(tType, uType);
}
}
};
}