public Class< ? > findClass(String name) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Looking for class " + name + "... "); } if (classDatas != null && classDatas.containsKey(name)) { byte[] classData = classDatas.get(name); return defineClass(name, classData, 0, classData.length); } if (LOG.isLoggable(Level.FINE)) { LOG.fine("class " + name + " not found."); } return null; }
LOG.fine("Looking for class " + name + "... "); Class< ? > c = findLoadedClass(name); if (LOG.isLoggable(Level.FINE) && c != null) { LOG.fine("Class " + name + " found in loaded classes. "); c = findClass(name); if (LOG.isLoggable(Level.FINE) && c != null) { LOG.fine("Class " + name + " found in current classLoader. "); c = getParent().loadClass(name); if (LOG.isLoggable(Level.FINE) && c != null) { LOG.fine("Class " + name + " found in parent. "); resolveClass(c);
private static Class< ? > lookIntoPackageClassLoader(final PackageDefinitionUUID packageUUID, final String className) { final Repository repository = EngineEnvTool.getRepository(); final PackageClassData packageClassData = repository.getPackageClassData(packageUUID); if (packageClassData != null) { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Class " + className + " is defined in package : " + packageUUID); } if (!packageClassLoaders.containsKey(packageUUID)) { final PackageClassLoader bonitaClassLoader = new PackageClassLoader(packageClassData.getClasses()); packageClassLoaders.put(packageUUID, bonitaClassLoader); } final ClassLoader classLoader = packageClassLoaders.get(packageUUID); try { final Class< ? > result = load(classLoader, className); if (result != null && result.getClassLoader().equals(classLoader)) { return result; } } catch (final ClassNotFoundException e) { return null; } } return null; }