@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; }
List<DependencyReference> dependenciesRefernciesToClear = new ArrayList<DependencyReference>(); for (DependencyReference dependencyReference : getDependencyReferences()){ if (dependencyReference.getReference().equals(dependencyName)){ dependenciesToReset.add(dependencyReference); if (dependencyReference.getDependency().equals(dependencyName)){ dependenciesRefernciesToClear.add(dependencyReference); new IdentifierNode(dependency.getNode().getType(), null, dependencyReference.getDependency(), null)));
List<DependencyReference> dependenciesRefernciesToClear = new ArrayList<DependencyReference>(); for (DependencyReference dependencyReference : getDependencyReferences()){ if (dependencyReference.getReference().equals(dependencyName)){ dependenciesToReset.add(dependencyReference); if (dependencyReference.getDependency().equals(dependencyName)){ dependenciesRefernciesToClear.add(dependencyReference); new IdentifierNode(dependency.getNode().getType(), null, dependencyReference.getDependency(), null)));
@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; }