private Optional getDataTypeConverter()

in library/camel-kamelets-utils/src/main/java/org/apache/camel/kamelets/utils/format/DefaultDataTypeRegistry.java [140:178]


    private Optional<DataTypeConverter> getDataTypeConverter(String scheme, String name) {
        if (dataTypeConverterResolver == null) {
             dataTypeConverterResolver = Optional.ofNullable(camelContext.getRegistry().findSingleByType(DataTypeConverterResolver.class))
                     .orElseGet(DefaultDataTypeConverterResolver::new);
        }

        // Looking for matching beans in Camel registry first
        Optional<DataTypeConverter> dataTypeConverter = Optional.ofNullable(CamelContextHelper.lookup(getCamelContext(),
                String.format("%s-%s", scheme, name), DataTypeConverter.class));

        if (dataTypeConverter.isPresent()) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Found data type {} for scheme {} and name {} in Camel registry", ObjectHelper.name(dataTypeConverter.get().getClass()), scheme, name);
            }
            return dataTypeConverter;
        }

        // Try to retrieve converter from preloaded converters in local cache
        dataTypeConverter = getComponentDataTypeConverters(scheme).stream()
                .filter(dtc -> name.equals(dtc.getName()))
                .findFirst();

        if (dataTypeConverter.isPresent()) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("Found data type {} for scheme {} and name {}", ObjectHelper.name(dataTypeConverter.get().getClass()), scheme, name);
            }
            return dataTypeConverter;
        }

        // Try to lazy load converter via resource path lookup
        dataTypeConverter = dataTypeConverterResolver.resolve(scheme, name, camelContext);
        dataTypeConverter.ifPresent(converter -> getComponentDataTypeConverters(scheme).add(converter));

        if (LOG.isDebugEnabled() && dataTypeConverter.isPresent()) {
            LOG.debug("Resolved data type {} for scheme {} and name {} via resource path", ObjectHelper.name(dataTypeConverter.get().getClass()), scheme, name);
        }

        return dataTypeConverter;
    }