private static Class< ? > lookIntoCommonClassLoader(final String className) { try { synchronized (CommonClassLoader.LOCK) { return load(CommonClassLoader.getCurrent(), className); } } catch (final ClassNotFoundException e) { return null; } }
private static Class< ? > lookIntoGlobalClassLoader(Repository repository, String className) { ClassLoader classLoader = getGlobalClassLoader(repository, className); if (classLoader != null) { try { Class< ? > result = load(classLoader, className); if (result != null && result.getClassLoader().equals(classLoader)) { return result; } } catch (ClassNotFoundException e) { return null; } } return null; }
public static Class< ? > getClass(final PackageDefinitionUUID packageUUID, final String className) throws ClassNotFoundException { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Looking for class " + className + ", in package : " + packageUUID); } Class< ? > result = null; if (packageUUID != null) { result = lookIntoPackageClassLoader(packageUUID, className); } if (result != null) { return result; } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Class " + className + " not found in packageClassLoaders..."); } result = lookIntoCommonClassLoader(className); if (result != null) { return result; } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Class " + className + " not found in globalClassLoaders..."); } //maybe it is present in the current classLoader ? It may be a class delivered in bonita jar ? return load(ClassDataLoader.class.getClassLoader(), className); }
public static Class< ? > getClass(PackageDefinitionUUID packageUUID, String className) throws ClassNotFoundException { if (LOG.isLoggable(Level.FINE)) { LOG.fine("Looking for class " + className + ", in package : " + packageUUID); } Repository repository = EnvTool.getRepository(); Class< ? > result = lookIntoPackageClassLoader(packageUUID, repository, className); if (result != null) { return result; } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Class " + className + " not found in packageClassLoaders..."); } result = lookIntoGlobalClassLoader(repository, className); if (result != null) { return result; } if (LOG.isLoggable(Level.FINE)) { LOG.fine("Class " + className + " not found in globalClassLoaders..."); } //maybe it is present in the current classLoader ? It may be a class delivered in bonita jar ? return load(ClassDataLoader.class.getClassLoader(), className); }
private static Class< ? > lookIntoPackageClassLoader(PackageDefinitionUUID packageUUID, Repository repository, String className) { 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)) { BonitaClassLoader bonitaClassLoader = new BonitaClassLoader(packageClassData.getClasses()); packageClassLoaders.put(packageUUID, bonitaClassLoader); } ClassLoader classLoader = packageClassLoaders.get(packageUUID); try { Class< ? > result = load(classLoader, className); if (result != null && result.getClassLoader().equals(classLoader)) { return result; } } catch (ClassNotFoundException e) { return null; } } return null; }
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; }