in core/camel-core-osgi/src/main/java/org/apache/camel/core/osgi/impl/Activator.java [254:294]
protected void registerTypeConverterLoader(Bundle bundle, List<BaseService> resolvers) {
if (canSee(bundle, TypeConverter.class)) {
URL url1 = bundle.getEntry(META_INF_TYPE_CONVERTER);
URL url2 = bundle.getEntry(META_INF_TYPE_CONVERTER_LOADER);
URL url3 = bundle.getEntry(META_INF_FALLBACK_TYPE_CONVERTER);
if (url2 != null) {
LOG.debug("Found TypeConverterLoader in bundle {}", bundle.getSymbolicName());
Set<String> packages = getConverterPackages(bundle.getEntry(META_INF_TYPE_CONVERTER_LOADER));
if (LOG.isTraceEnabled()) {
LOG.trace("Found {} {} packages: {}", packages.size(), META_INF_TYPE_CONVERTER_LOADER, packages);
}
for (String pkg : packages) {
if (StringHelper.isClassName(pkg)) {
// its a FQN class name so load it directly
LOG.trace("Loading {} class", pkg);
try {
Class<?> clazz = bundle.loadClass(pkg);
BundleTypeConverterLoader bundleTypeConverterLoader =
new BundleTypeConverterLoader(bundle, url3 != null);
bundleTypeConverterLoader.setTypeConverterLoader((TypeConverterLoader)clazz.getDeclaredConstructor().newInstance());
resolvers.add(bundleTypeConverterLoader);
BundleTypeConverterLoader fallBackBundleTypeConverterLoader =
new BundleTypeConverterLoader(bundle, url3 != null);
// the class could be found and loaded so continue to next
resolvers.add(fallBackBundleTypeConverterLoader);
continue;
} catch (Throwable t) {
// Ignore
LOG.trace("Failed to load " + pkg + " class due " + t.getMessage() + ". This exception will be ignored.", t);
}
}
}
} else if (url1 != null || url3 != null) {
LOG.debug("Found TypeConverter in bundle {}", bundle.getSymbolicName());
resolvers.add(new BundleTypeConverterLoader(bundle, url3 != null));
}
}
}