protected ClassLoader initClassLoader() throws RulesInstantiationException {// Required for lazy if (classLoader == null) { SimpleBundleClassLoader simpleBundleClassLoader = new SimpleBundleClassLoader(Thread.currentThread() .getContextClassLoader()); ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(simpleBundleClassLoader); classLoader = getEngineFactory().getCompiledOpenClass().getClassLoader(); //simpleBundleClassLoader.addClassLoader(newClassLoader); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } //classLoader = simpleBundleClassLoader; } return classLoader; }
protected ClassLoader buildClassLoader(AbstractProjectDependencyManager dependencyManager) { ClassLoader projectClassLoader = dependencyManager.getClassLoader(modules.iterator().next().getProject()); SimpleBundleClassLoader simpleBundleClassLoader = new SimpleBundleClassLoader(null); simpleBundleClassLoader.addClassLoader(projectClassLoader); return simpleBundleClassLoader; }
if (bundleClassLoader instanceof SimpleBundleClassLoader && bundleClassLoader.getParent() == this) { SimpleBundleClassLoader sbc = ((SimpleBundleClassLoader) bundleClassLoader); clazz = sbc.findLoadedClassInBundle(name); if (clazz == null) { clazz = sbc.findClassInBundles(name, c); clazz = ((SimpleBundleClassLoader) bundleClassLoader).loadClass(name, c); } else { clazz = bundleClassLoader.loadClass(name);
/** * Searches for class in bundle classLoaders. */ protected Class<?> findClassInBundles(String name) { Set<ClassLoader> c = Collections.newSetFromMap(new IdentityHashMap<ClassLoader, Boolean>()); return findClassInBundles(name, c); }
protected Class<?> findLoadedClassInBundle(String name) { return findLoadedClass(name); }
/** * Searches for class in bundle classLoaders. */ protected Class<?> findClassInBundles(String name) { Set<ClassLoader> c = Collections.newSetFromMap(new IdentityHashMap<ClassLoader, Boolean>()); return findClassInBundles(name, c); }
protected Class<?> findLoadedClassInBundle(String name) { return findLoadedClass(name); }
protected ClassLoader initClassLoader() throws RulesInstantiationException {// Required for lazy if (classLoader == null) { SimpleBundleClassLoader simpleBundleClassLoader = new SimpleBundleClassLoader(Thread.currentThread() .getContextClassLoader()); ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(simpleBundleClassLoader); classLoader = getEngineFactory().getCompiledOpenClass().getClassLoader(); //simpleBundleClassLoader.addClassLoader(newClassLoader); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } //classLoader = simpleBundleClassLoader; } return classLoader; }
protected ClassLoader buildClassLoader(AbstractProjectDependencyManager dependencyManager) { ClassLoader projectClassLoader = dependencyManager.getClassLoader(modules.iterator().next().getProject()); SimpleBundleClassLoader simpleBundleClassLoader = new SimpleBundleClassLoader(null); simpleBundleClassLoader.addClassLoader(projectClassLoader); return simpleBundleClassLoader; }
if (bundleClassLoader instanceof SimpleBundleClassLoader && bundleClassLoader.getParent() == this) { SimpleBundleClassLoader sbc = ((SimpleBundleClassLoader) bundleClassLoader); clazz = sbc.findLoadedClassInBundle(name); if (clazz == null) { clazz = sbc.findClassInBundles(name, c); clazz = ((SimpleBundleClassLoader) bundleClassLoader).loadClass(name, c); } else { clazz = bundleClassLoader.loadClass(name);
protected Class<?> loadClass(String name, Set<ClassLoader> c) throws ClassNotFoundException { Class<?> clazz = findClassInBundles(name, c); if (clazz != null) { return clazz; } return super.loadClass(name); }
protected CompiledOpenClass initializeOpenClass() { // Change class loader to OpenLBundleClassLoader // // ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); try { // if current bundle is dependency of parent bundle it must be // visible // for parent bundle // if (!(oldClassLoader instanceof OpenLBundleClassLoader)) { ClassLoader newClassLoader = new SimpleBundleClassLoader(oldClassLoader); Thread.currentThread().setContextClassLoader(newClassLoader); } return OpenLManager.compileModuleWithErrors(getOpenL(), getSourceCode(), executionMode, dependencyManager); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } }
public ClassLoader getClassLoader(ProjectDescriptor project) { getDependencyLoaders(); if (classLoaders.get(project.getName()) != null) { return classLoaders.get(project.getName()); } SimpleBundleClassLoader classLoader = new SimpleBundleClassLoader(project.getClassPathUrls(), rootClassLoader); classLoader.addClassLoader(project.getClassLoader(false)); if (project.getDependencies() != null) { for (ProjectDependencyDescriptor projectDependencyDescriptor : project.getDependencies()) { if (getProjectDescriptors() != null) { for (ProjectDescriptor projectDescriptor : getProjectDescriptors()) { if (projectDependencyDescriptor.getName().equals(projectDescriptor.getName())) { classLoader.addClassLoader(getClassLoader(projectDescriptor)); break; } } } } } classLoaders.put(project.getName(), classLoader); return classLoader; }
protected Class<?> loadClass(String name, Set<ClassLoader> c) throws ClassNotFoundException { Class<?> clazz = findClassInBundles(name, c); if (clazz != null) { return clazz; } return super.loadClass(name); }
protected CompiledOpenClass initializeOpenClass() { // Change class loader to OpenLBundleClassLoader // // ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); try { // if current bundle is dependency of parent bundle it must be // visible // for parent bundle // if (!(oldClassLoader instanceof OpenLBundleClassLoader)) { ClassLoader newClassLoader = new SimpleBundleClassLoader(oldClassLoader); Thread.currentThread().setContextClassLoader(newClassLoader); } return OpenLManager.compileModuleWithErrors(getOpenL(), getSourceCode(), executionMode, dependencyManager); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } }
@Override protected ClassLoader initClassLoader() throws RulesInstantiationException { SimpleBundleClassLoader classLoader = new SimpleBundleClassLoader(Thread.currentThread() .getContextClassLoader()); for (Module module : modules) { try { CompiledDependency compiledDependency = getDependencyManager().loadDependency( new Dependency(DependencyType.MODULE, new IdentifierNode(null, null, module.getName(), null))); CompiledOpenClass compiledOpenClass = compiledDependency.getCompiledOpenClass(); classLoader.addClassLoader(compiledOpenClass.getClassLoader()); } catch (OpenLCompilationException e) { throw new RulesInstantiationException(e.getMessage(), e); } } return classLoader; }
@SuppressWarnings("deprecation") protected ClassLoader initClassLoader() { ProjectDescriptor project = getModule().getProject(); ClassLoader parent = project.getClassLoader(false); SimpleBundleClassLoader classLoader = new SimpleBundleClassLoader(project.getClassPathUrls(), parent); return classLoader; }
public ClassLoader getClassLoader(ProjectDescriptor project) { getDependencyLoaders(); if (classLoaders.get(project.getName()) != null) { return classLoaders.get(project.getName()); } SimpleBundleClassLoader classLoader = new SimpleBundleClassLoader(project.getClassPathUrls(), rootClassLoader); classLoader.addClassLoader(project.getClassLoader(false)); if (project.getDependencies() != null) { for (ProjectDependencyDescriptor projectDependencyDescriptor : project.getDependencies()) { if (getProjectDescriptors() != null) { for (ProjectDescriptor projectDescriptor : getProjectDescriptors()) { if (projectDependencyDescriptor.getName().equals(projectDescriptor.getName())) { classLoader.addClassLoader(getClassLoader(projectDescriptor)); break; } } } } } classLoaders.put(project.getName(), classLoader); return classLoader; }
@SuppressWarnings("deprecation") protected ClassLoader initClassLoader() { ProjectDescriptor project = getModule().getProject(); ClassLoader parent = project.getClassLoader(false); SimpleBundleClassLoader classLoader = new SimpleBundleClassLoader(project.getClassPathUrls(), parent); return classLoader; }
@Override protected ClassLoader initClassLoader() throws RulesInstantiationException { SimpleBundleClassLoader classLoader = new SimpleBundleClassLoader(Thread.currentThread() .getContextClassLoader()); for (Module module : modules) { try { CompiledDependency compiledDependency = getDependencyManager().loadDependency( new Dependency(DependencyType.MODULE, new IdentifierNode(null, null, module.getName(), null))); CompiledOpenClass compiledOpenClass = compiledDependency.getCompiledOpenClass(); classLoader.addClassLoader(compiledOpenClass.getClassLoader()); } catch (OpenLCompilationException e) { throw new RulesInstantiationException(e.getMessage(), e); } } return classLoader; }