private Adapter doLazyLookup()

in johnzon-mapper/src/main/java/org/apache/johnzon/mapper/map/LazyConverterMap.java [149:307]


    private Adapter<?, ?> doLazyLookup(final AdapterKey key) {
        final Type from = key.getFrom();
        if (from == Date.class) {
            return addDateConverter(key);
        }
        if (from == URI.class) {
            return add(key, new ConverterAdapter<>(new URIConverter(), URI.class));
        }
        if (from == URL.class) {
            return add(key, new ConverterAdapter<>(new URLConverter(), URL.class));
        }
        if (from == Class.class) {
            return add(key, new ConverterAdapter<>(new ClassConverter(), Class.class));
        }
        if (from == String.class) {
            return add(key, new ConverterAdapter<>(new StringConverter(), String.class));
        }
        if (from == BigDecimal.class && useBigIntegerStringAdapter) {
            return add(key, new ConverterAdapter<>(new BigDecimalConverter(), BigDecimal.class));
        }
        if (from == BigInteger.class && useBigDecimalStringAdapter) {
            return add(key, new ConverterAdapter<>(new BigIntegerConverter(), BigInteger.class));
        }
        if (from == Locale.class) {
            return add(key, new LocaleConverter());
        }
        if (from == Period.class) {
            return add(key, new ConverterAdapter<>(new Converter<Period>() {
                @Override
                public String toString(final Period instance) {
                    return instance.toString();
                }

                @Override
                public Period fromString(final String text) {
                    return Period.parse(text);
                }
            }, Period.class));
        }
        if (from == Duration.class) {
            return add(key, new ConverterAdapter<>(new Converter<Duration>() {
                @Override
                public String toString(final Duration instance) {
                    return instance.toString();
                }

                @Override
                public Duration fromString(final String text) {
                    return Duration.parse(text);
                }
            }, Duration.class));
        }
        if (from == Calendar.class) {
            return addCalendarConverter(key);
        }
        if (from == GregorianCalendar.class) {
            return addGregorianCalendar(key);
        }
        if (from == TimeZone.class) {
            return add(key, new ConverterAdapter<>(new Converter<TimeZone>() {
                @Override
                public String toString(final TimeZone instance) {
                    return instance.getID();
                }

                @Override
                public TimeZone fromString(final String text) {
                    checkForDeprecatedTimeZone(text);
                    return TimeZone.getTimeZone(text);
                }
            }, TimeZone.class));
        }
        if (from == ZoneId.class) {
            return add(key, new ConverterAdapter<>(new Converter<ZoneId>() {
                @Override
                public String toString(final ZoneId instance) {
                    return instance.getId();
                }

                @Override
                public ZoneId fromString(final String text) {
                    return ZoneId.of(text);
                }
            }, ZoneId.class));
        }
        if (from == ZoneOffset.class) {
            return add(key, new ConverterAdapter<>(new Converter<ZoneOffset>() {
                @Override
                public String toString(final ZoneOffset instance) {
                    return instance.getId();
                }

                @Override
                public ZoneOffset fromString(final String text) {
                    return ZoneOffset.of(text);
                }
            }, ZoneOffset.class));
        }
        if (from == SimpleTimeZone.class) {
            return add(key, new ConverterAdapter<>(new Converter<SimpleTimeZone>() {
                @Override
                public String toString(final SimpleTimeZone instance) {
                    return instance.getID();
                }

                @Override
                public SimpleTimeZone fromString(final String text) {
                    checkForDeprecatedTimeZone(text);
                    final TimeZone timeZone = TimeZone.getTimeZone(text);
                    return new SimpleTimeZone(timeZone.getRawOffset(), timeZone.getID());
                }
            }, SimpleTimeZone.class));
        }
        if (from == Instant.class) {
            return addInstantConverter(key);
        }
        if (from == LocalDate.class) {
            return addLocalDateConverter(key);
        }
        if (from == LocalTime.class) {
            return add(key, new ConverterAdapter<>(new Converter<LocalTime>() {
                @Override
                public String toString(final LocalTime instance) {
                    return instance.toString();
                }

                @Override
                public LocalTime fromString(final String text) {
                    return LocalTime.parse(text);
                }
            }, LocalTime.class));
        }
        if (from == LocalDateTime.class) {
            return addLocalDateTimeConverter(key);
        }
        if (from == ZonedDateTime.class) {
            return addZonedDateTimeConverter(key);
        }
        if (from == OffsetDateTime.class) {
            return addOffsetDateTimeConverter(key);
        }
        if (from == OffsetTime.class) {
            return add(key, new ConverterAdapter<>(new Converter<OffsetTime>() {
                @Override
                public String toString(final OffsetTime instance) {
                    return instance.toString();
                }

                @Override
                public OffsetTime fromString(final String text) {
                    return OffsetTime.parse(text);
                }
            }, OffsetTime.class));
        }
        if (from == UUID.class) {
            return add(key, new ConverterAdapter<>(new UUIDConverter(), UUID.class));
        }
        return null;
    }