in src/main/java/org/apache/sling/commons/classloader/impl/PackageAdminClassLoader.java [181:212]
public URL findResource(final String name) {
final URL cachedURL = urlCache.get(name);
if ( cachedURL != null ) {
return cachedURL;
}
URL url = super.findResource(name);
if ( url == null ) {
String packageName = getPackageFromResource(name);
Bundle providingBundle = packageProviders.get(packageName);
if (providingBundle == null) {
Set<Bundle> bundles = findBundlesForPackage(getPackageFromResource(name));
for (Bundle bundle : bundles) {
url = bundle.getResource(name);
if (url != null) {
urlCache.put(name, url);
this.factory.addUsedBundle(bundle);
packageProviders.put(packageName, bundle);
LOGGER.debug("Marking bundle {}:{} as the provider for API package {}.", bundle.getSymbolicName(), bundle
.getVersion().toString(), packageName);
return url;
}
}
} else {
url = providingBundle.getResource(name);
if (url == null) {
LOGGER.debug("Cannot find resource {} in bundle {}:{} which was marked as the provider for package {}.", name,
providingBundle.getSymbolicName(), providingBundle.getVersion().toString(), packageName);
}
}
}
return url;
}