@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 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 protected CompiledDependency compileDependency(String dependencyName, AbstractProjectDependencyManager dependencyManager) throws OpenLCompilationException { if (dependencyManager instanceof CompilationTimeLoggingDependencyManager) { CompilationTimeLoggingDependencyManager compilationTimeLoggingDependencyManager = (CompilationTimeLoggingDependencyManager) dependencyManager; compilationTimeLoggingDependencyManager.compilationBegin(this, getModules()); CompiledDependency compiledDependency = null; try { compiledDependency = super.compileDependency(dependencyName, dependencyManager); compilationTimeLoggingDependencyManager.compilationCompleted(this, !compiledDependency.getCompiledOpenClass().hasErrors()); return compiledDependency; } finally { if (compiledDependency == null) { compilationTimeLoggingDependencyManager.compilationCompleted(this, false); } } } else { return super.compileDependency(dependencyName, dependencyManager); } } }
@Override protected CompiledDependency compileDependency(String dependencyName, AbstractProjectDependencyManager dependencyManager) throws OpenLCompilationException { if (dependencyManager instanceof CompilationTimeLoggingDependencyManager) { CompilationTimeLoggingDependencyManager compilationTimeLoggingDependencyManager = (CompilationTimeLoggingDependencyManager) dependencyManager; compilationTimeLoggingDependencyManager.compilationBegin(this, getModules()); CompiledDependency compiledDependency = null; try { compiledDependency = super.compileDependency(dependencyName, dependencyManager); compilationTimeLoggingDependencyManager.compilationCompleted(this, !compiledDependency.getCompiledOpenClass().hasErrors()); return compiledDependency; } finally { if (compiledDependency == null) { compilationTimeLoggingDependencyManager.compilationCompleted(this, false); } } } else { return super.compileDependency(dependencyName, dependencyManager); } } }