public ConverterProvider converterProvider()

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);
        }
      }
    };
  }