public void reset() { if (compiledDependency != null) { OpenClassUtil.release(compiledDependency.getCompiledOpenClass()); } compiledDependency = null; }
public void reset() { if (compiledDependency != null) { OpenClassUtil.release(compiledDependency.getCompiledOpenClass()); } compiledDependency = null; }
public ClassLoader getClassLoader() { return getCompiledOpenClass().getClassLoader(); }
public ClassLoader getClassLoader() { return getCompiledOpenClass().getClassLoader(); }
@Override public Map<String, IOpenField> getFields() { Map<String, IOpenField> fields = new HashMap<String, IOpenField>(); // get fields from dependencies // if (dependencyFields == null) { synchronized (this) { if (dependencyFields == null) { dependencyFields = new HashMap<String, IOpenField>(); for (CompiledDependency dependency : usingModules) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); dependencyFields.putAll(compiledOpenClass.getOpenClassWithErrors().getFields()); } } } } fields.putAll(dependencyFields); // get own fields. if current module has duplicated fields they will // override the same from dependencies. // fields.putAll(super.getFields()); return fields; }
protected void addDependencyTypes(CompiledDependency dependency) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); for (IOpenClass type : compiledOpenClass.getTypes()) { try { addType(type); } catch (OpenLCompilationException e) { addError(e); } } }
protected void addDependencyTypes(CompiledDependency dependency) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); for (IOpenClass type : compiledOpenClass.getTypes()) { try { addType(type); } catch (OpenLCompilationException e) { addError(e); } } }
/** * Overriden to add the possibility for overriding fields from dependent modules.<br> * At first tries to get the field from current module, if can`t search in dependencies. */ @Override public IOpenField getField(String fname, boolean strictMatch) { // try to get field from own field map // IOpenField field = super.getField(fname, strictMatch); if (field != null) { return field; } else { // if can`t find, search in dependencies. // for (CompiledDependency dependency : usingModules) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); field = compiledOpenClass.getOpenClassWithErrors().getField(fname, strictMatch); if (field != null) { return field; } } } return null; }
/** * Overriden to add the possibility for overriding fields from dependent modules.<br> * At first tries to get the field from current module, if can`t search in dependencies. */ @Override public IOpenField getField(String fname, boolean strictMatch) { // try to get field from own field map // IOpenField field = super.getField(fname, strictMatch); if (field != null) { return field; } else { // if can`t find, search in dependencies. // for (CompiledDependency dependency : usingModules) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); field = compiledOpenClass.getOpenClassWithErrors().getField(fname, strictMatch); if (field != null) { return field; } } } return null; }
private void findAllTableSyntaxNodes(Set<TableSyntaxNode> tableSyntaxNodes, IOpenClass openClass) { if (openClass instanceof XlsModuleOpenClass){ for (CompiledDependency compiledDependency : ((XlsModuleOpenClass) openClass).getDependencies()) { IOpenClass dependencyOpenClass = compiledDependency.getCompiledOpenClass().getOpenClassWithErrors(); findAllTableSyntaxNodes(tableSyntaxNodes, dependencyOpenClass); } XlsMetaInfo xlsMetaInfo = ((XlsModuleOpenClass) openClass).getXlsMetaInfo(); TableSyntaxNode[] xlsTableSyntaxNodes = xlsMetaInfo.getXlsModuleNode().getXlsTableSyntaxNodes(); for (TableSyntaxNode tableSyntaxNode : xlsTableSyntaxNodes) { if (!DispatcherTablesBuilder.isDispatcherTable(tableSyntaxNode)) { tableSyntaxNodes.add(tableSyntaxNode); } } } }
protected void addFields(CompiledDependency dependency) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); for (IOpenField depField : compiledOpenClass.getOpenClassWithErrors().getFields().values()) { try { if (isDependencyFieldInheritable(depField)) { addField(depField); } } catch (OpenlNotCheckedException e) { if (Log.isDebugEnabled()) { Log.debug(e.getMessage(), e); } addError(e); } } }
protected void addFields(CompiledDependency dependency) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); for (IOpenField depField : compiledOpenClass.getOpenClassWithErrors().getFields().values()) { try { if (isDependencyFieldInheritable(depField)) { addField(depField); } } catch (OpenlNotCheckedException e) { if (Log.isDebugEnabled()) { Log.debug(e.getMessage(), e); } addError(e); } } }
/** * Populate current module fields with data from dependent modules. */ protected void initDependencies() {// Reduce iterators over dependencies for // compilation issue with lazy loading for (CompiledDependency dependency : this.getDependencies()) { // commented as there is no need to add each datatype to upper // module. // as now it`s will be impossible to validate from which module the // datatype is. // // addTypes(dependency); addDependencyTypes(dependency); addMethods(dependency); // Populate current module fields with data from dependent modules. // Requered // for data tables inheriting from dependend modules. addDataTables(dependency.getCompiledOpenClass()); // Required for // data tables. addFields(dependency); } }
@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; }
@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; }
@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); } } }
private XlsModuleSyntaxNode findXlsModuleSyntaxNode(IDependencyManager dependencyManager) { if (isSingleModuleMode()) { XlsMetaInfo xmi = (XlsMetaInfo) compiledOpenClass.getOpenClassWithErrors().getMetaInfo(); return xmi.getXlsModuleNode(); } else { try { Dependency dependency = new Dependency(DependencyType.MODULE, new IdentifierNode(null, null, moduleInfo.getName(), null)); XlsMetaInfo xmi = (XlsMetaInfo) dependencyManager.loadDependency(dependency) .getCompiledOpenClass().getOpenClassWithErrors().getMetaInfo(); return xmi == null ? null : xmi.getXlsModuleNode(); } catch (OpenLCompilationException e) { throw new OpenlNotCheckedException(e); } } }
private XlsModuleSyntaxNode findXlsModuleSyntaxNode(IDependencyManager dependencyManager) { if (isSingleModuleMode()) { XlsMetaInfo xmi = (XlsMetaInfo) compiledOpenClass.getOpenClassWithErrors().getMetaInfo(); return xmi.getXlsModuleNode(); } else { try { Dependency dependency = new Dependency(DependencyType.MODULE, new IdentifierNode(null, null, moduleInfo.getName(), null)); XlsMetaInfo xmi = (XlsMetaInfo) dependencyManager.loadDependency(dependency) .getCompiledOpenClass().getOpenClassWithErrors().getMetaInfo(); return xmi == null ? null : xmi.getXlsModuleNode(); } catch (OpenLCompilationException e) { throw new OpenlNotCheckedException(e); } } }
protected void addTestSuiteMethodsFromDependencies() { for (CompiledDependency dependency : this.getDependencies()) { for (IOpenMethod depMethod : dependency.getCompiledOpenClass().getOpenClassWithErrors().getMethods()) { if (depMethod instanceof TestSuiteMethod) { TestSuiteMethod testSuiteMethod = (TestSuiteMethod) depMethod; try { // Workaround for set dependency names in method while // compile if (testSuiteMethod.getModuleName() == null) { testSuiteMethod.setModuleName(dependency.getDependencyName()); } TestSuiteMethod newTestSuiteMethod = createNewTestSuiteMethod(testSuiteMethod); addMethod(newTestSuiteMethod); } catch (OpenlNotCheckedException e) { if (Log.isDebugEnabled()) { Log.debug(e.getMessage(), e); } addError(e); } } } } }