in src/main/java/org/apache/sling/commons/classloader/impl/PackageAdminClassLoader.java [244:272]
protected Class<?> loadClass(final String name, final boolean resolve) throws ClassNotFoundException {
final Class<?> cachedClass = this.classCache.get(name);
if ( cachedClass != null ) {
return cachedClass;
}
if ( negativeClassCache.contains(name) ) {
throw new ClassNotFoundException("Class not found " + name);
}
String packageName = getPackageFromClassName(name);
Class<?> clazz;
try {
clazz = super.loadClass(name, resolve);
} catch (final ClassNotFoundException cnfe) {
try {
clazz = getClassFromBundles(name);
} catch (ClassNotFoundException innerCNFE) {
negativeClassCache.add(name);
this.factory.addUnresolvedPackage(packageName);
throw innerCNFE;
}
}
if ( clazz == null ) {
negativeClassCache.add(name);
this.factory.addUnresolvedPackage(packageName);
throw new ClassNotFoundException("Class not found " + name);
}
this.classCache.put(name, clazz);
return clazz;
}