protected ClassLoader buildClassLoader(AbstractProjectDependencyManager dependencyManager) { return dependencyManager.getClassLoader(modules.iterator().next().getProject()); }
@Override public CompiledDependency load(String dependencyName, IDependencyManager dm) throws OpenLCompilationException { AbstractProjectDependencyManager dependencyManager; if (dm instanceof AbstractProjectDependencyManager) { dependencyManager = (AbstractProjectDependencyManager) dm; } else { throw new IllegalStateException("This loader works only with AbstractProjectDependencyManager!"); } if (this.dependencyName.equals(dependencyName)) { boolean isCircularDependency = dependencyManager.getCompilationStack().contains(dependencyName); if (!isCircularDependency && !dependencyManager.getCompilationStack().isEmpty()){ AbstractProjectDependencyManager.DependencyReference dr = new AbstractProjectDependencyManager.DependencyReference(dependencyManager.getCompilationStack().getLast(), dependencyName); dependencyManager.getDependencyReferences().add(dr); } if (compiledDependency != null) { log.debug("Dependency for dependencyName = {} from cache has been returned.", dependencyName); return compiledDependency; } try { if (isCircularDependency) { throw new OpenLCompilationException("Circular dependency has been detected in module: " + dependencyName); } return compileDependency(dependencyName, dependencyManager); } finally { dependencyManager.getCompilationStack().pollLast(); } } return null; }
@Override public CompiledDependency loadDependency(IDependency dependency) throws OpenLCompilationException { String dependencyName = dependency.getNode().getIdentifier(); CompiledDependency compiledDependency = handleLoadDependency(dependency); if (compiledDependency == null) { if (ProjectExternalDependenciesHelper.isProject(dependencyName)) { String projectName = ProjectExternalDependenciesHelper.getProjectName(dependencyName); return throwCompilationError(dependency, projectName); } else { throwCompilationError(dependency, dependencyName); } } return compiledDependency; }
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; }
public synchronized void reset(IDependency dependency){ String dependencyName = dependency.getNode().getIdentifier(); for (ProjectDescriptor projectDescriptor : getProjectDescriptors()){ String projectDependencyName = ProjectExternalDependenciesHelper.buildDependencyNameForProjectName( projectDescriptor.getName()); if (dependencyName.equals(projectDependencyName)){ for (Module module : projectDescriptor.getModules()){ reset(new Dependency(DependencyType.MODULE, new IdentifierNode(dependency.getNode().getType(), null, module.getName(), null))); for (DependencyReference dependencyReference : getDependencyReferences()){ if (dependencyReference.getReference().equals(dependencyName)){ dependenciesToReset.add(dependencyReference); reset(new Dependency(DependencyType.MODULE, new IdentifierNode(dependency.getNode().getType(), null, dependencyReference.getDependency(), null))); for (IDependencyLoader dependencyLoader : getDependencyLoaders()) { SimpleProjectDependencyLoader simpleProjectDependencyLoader = ((SimpleProjectDependencyLoader) dependencyLoader); if (simpleProjectDependencyLoader.getDependencyName().equals(dependencyName)){ for (DependencyReference dependencyReference : dependenciesRefernciesToClear){ getDependencyReferences().remove(dependencyReference);
@Override public synchronized CompiledDependency loadDependency(IDependency dependency) throws OpenLCompilationException { return super.loadDependency(dependency); }
public synchronized void resetAll(){ for (ClassLoader classLoader : oldClassLoaders){ OpenClassUtil.releaseClassLoader(classLoader); } oldClassLoaders.clear(); for (ClassLoader classLoader : classLoaders.values()){ OpenClassUtil.releaseClassLoader(classLoader); } classLoaders.clear(); for (IDependencyLoader dependencyLoader : getDependencyLoaders()) { ((SimpleProjectDependencyLoader) dependencyLoader).reset(); } }
public RuleServiceDeploymentRelatedDependencyManager(DeploymentDescription deploymentDescription, RuleServiceLoader ruleServiceLoader, ClassLoader rootClassLoader, boolean lazy) { super(rootClassLoader); if (deploymentDescription == null) { throw new IllegalArgumentException("deploymentDescription must not be null!"); } if (ruleServiceLoader == null) { throw new IllegalArgumentException("ruleService must not be null!"); } this.deploymentDescription = deploymentDescription; this.ruleServiceLoader = ruleServiceLoader; this.lazy = lazy; super.setExecutionMode(true); }
ClassLoader classLoader = buildClassLoader(dependencyManager); if (!isProject && modules.size() == 1) { dependencyManager.getCompilationStack().add(dependencyName); log.debug("Creating dependency for dependencyName = {}", dependencyName); rulesInstantiationStrategy = RulesInstantiationStrategyFactory.getStrategy(modules.iterator()
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; }
public synchronized void reset(IDependency dependency){ String dependencyName = dependency.getNode().getIdentifier(); for (ProjectDescriptor projectDescriptor : getProjectDescriptors()){ String projectDependencyName = ProjectExternalDependenciesHelper.buildDependencyNameForProjectName( projectDescriptor.getName()); if (dependencyName.equals(projectDependencyName)){ for (Module module : projectDescriptor.getModules()){ reset(new Dependency(DependencyType.MODULE, new IdentifierNode(dependency.getNode().getType(), null, module.getName(), null))); for (DependencyReference dependencyReference : getDependencyReferences()){ if (dependencyReference.getReference().equals(dependencyName)){ dependenciesToReset.add(dependencyReference); reset(new Dependency(DependencyType.MODULE, new IdentifierNode(dependency.getNode().getType(), null, dependencyReference.getDependency(), null))); for (IDependencyLoader dependencyLoader : getDependencyLoaders()) { SimpleProjectDependencyLoader simpleProjectDependencyLoader = ((SimpleProjectDependencyLoader) dependencyLoader); if (simpleProjectDependencyLoader.getDependencyName().equals(dependencyName)){ for (DependencyReference dependencyReference : dependenciesRefernciesToClear){ getDependencyReferences().remove(dependencyReference);
@Override public synchronized CompiledDependency loadDependency(IDependency dependency) throws OpenLCompilationException { return super.loadDependency(dependency); }
public synchronized void resetAll(){ for (ClassLoader classLoader : oldClassLoaders){ OpenClassUtil.releaseClassLoader(classLoader); } oldClassLoaders.clear(); for (ClassLoader classLoader : classLoaders.values()){ OpenClassUtil.releaseClassLoader(classLoader); } classLoaders.clear(); for (IDependencyLoader dependencyLoader : getDependencyLoaders()) { ((SimpleProjectDependencyLoader) dependencyLoader).reset(); } }
public RuleServiceDeploymentRelatedDependencyManager(DeploymentDescription deploymentDescription, RuleServiceLoader ruleServiceLoader, ClassLoader rootClassLoader, boolean lazy) { super(rootClassLoader); if (deploymentDescription == null) { throw new IllegalArgumentException("deploymentDescription must not be null!"); } if (ruleServiceLoader == null) { throw new IllegalArgumentException("ruleService must not be null!"); } this.deploymentDescription = deploymentDescription; this.ruleServiceLoader = ruleServiceLoader; this.lazy = lazy; super.setExecutionMode(true); }
ClassLoader classLoader = buildClassLoader(dependencyManager); if (!isProject && modules.size() == 1) { dependencyManager.getCompilationStack().add(dependencyName); log.debug("Creating dependency for dependencyName = {}", dependencyName); rulesInstantiationStrategy = RulesInstantiationStrategyFactory.getStrategy(modules.iterator()
private ClassLoader buildClassLoader(AbstractProjectDependencyManager dependencyManager) { return dependencyManager.getClassLoader(modules.iterator().next().getProject()); }
@Override public CompiledDependency loadDependency(IDependency dependency) throws OpenLCompilationException { String dependencyName = dependency.getNode().getIdentifier(); CompiledDependency compiledDependency = handleLoadDependency(dependency); if (compiledDependency == null) { if (ProjectExternalDependenciesHelper.isProject(dependencyName)) { String projectName = ProjectExternalDependenciesHelper.getProjectName(dependencyName); return throwCompilationError(dependency, projectName); } else { throwCompilationError(dependency, dependencyName); } } return compiledDependency; }
@Override public CompiledDependency load(String dependencyName, IDependencyManager dm) throws OpenLCompilationException { AbstractProjectDependencyManager dependencyManager; if (dm instanceof AbstractProjectDependencyManager) { dependencyManager = (AbstractProjectDependencyManager) dm; } else { throw new IllegalStateException("This loader works only with AbstractProjectDependencyManager!"); } if (this.dependencyName.equals(dependencyName)) { boolean isCircularDependency = dependencyManager.getCompilationStack().contains(dependencyName); if (!isCircularDependency && !dependencyManager.getCompilationStack().isEmpty()){ AbstractProjectDependencyManager.DependencyReference dr = new AbstractProjectDependencyManager.DependencyReference(dependencyManager.getCompilationStack().getLast(), dependencyName); dependencyManager.getDependencyReferences().add(dr); } if (compiledDependency != null) { log.debug("Dependency for dependencyName = {} from cache has been returned.", dependencyName); return compiledDependency; } try { if (isCircularDependency) { throw new OpenLCompilationException("Circular dependency has been detected in module: " + dependencyName); } return compileDependency(dependencyName, dependencyManager); } finally { dependencyManager.getCompilationStack().pollLast(); } } return null; }
protected ClassLoader buildClassLoader(AbstractProjectDependencyManager dependencyManager) { return dependencyManager.getClassLoader(modules.iterator().next().getProject()); }
private ClassLoader buildClassLoader(AbstractProjectDependencyManager dependencyManager) { return dependencyManager.getClassLoader(modules.iterator().next().getProject()); }