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