public URL findResource()

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