public void reset() { if (compiledDependency != null) { OpenClassUtil.release(compiledDependency.getCompiledOpenClass()); } compiledDependency = null; }
private CompiledDependency createFailedCompiledDependency(String dependencyName, ClassLoader classLoader, Exception ex) { Collection<OpenLMessage> messages = new LinkedHashSet<>(); for (OpenLMessage openLMessage : OpenLMessagesUtils.newErrorMessages(ex)) { String message = String.format("Failed to load dependent module '%s': %s", dependencyName, openLMessage.getSummary()); messages.add(new OpenLMessage(message, Severity.ERROR)); } ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(classLoader); try { return new CompiledDependency(dependencyName, new CompiledOpenClass(NullOpenClass.the, messages, new SyntaxNodeException[0], new SyntaxNodeException[0])); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } } }
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); } } } } }
OpenLBundleClassLoader currentClassLoader = (OpenLBundleClassLoader) Thread.currentThread() .getContextClassLoader(); if (loadedDependency.getClassLoader() != currentClassLoader) { currentClassLoader.addClassLoader(loadedDependency.getClassLoader()); CompiledOpenClass compiledOpenClass = loadedDependency.getCompiledOpenClass(); IOpenClass openClass = compiledOpenClass.getOpenClassWithErrors(); if (openClass instanceof ExtendableModuleOpenClass) {
CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); for (IOpenMethod depMethod : compiledOpenClass.getOpenClassWithErrors().getMethods()) { AMethod methodDependencyInfo = (AMethod) depMethod; if (methodDependencyInfo.getModuleName() == null) { methodDependencyInfo.setModuleName(dependency.getDependencyName());
OpenLBundleClassLoader currentClassLoader = (OpenLBundleClassLoader) Thread.currentThread() .getContextClassLoader(); if (loadedDependency.getClassLoader() != currentClassLoader) { currentClassLoader.addClassLoader(loadedDependency.getClassLoader()); CompiledOpenClass compiledOpenClass = loadedDependency.getCompiledOpenClass(); IOpenClass openClass = compiledOpenClass.getOpenClassWithErrors(); if (openClass instanceof ExtendableModuleOpenClass) {
public void reset() { if (compiledDependency != null) { OpenClassUtil.release(compiledDependency.getCompiledOpenClass()); } compiledDependency = null; }
CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); for (IOpenMethod depMethod : compiledOpenClass.getOpenClassWithErrors().getMethods()) { AMethod methodDependencyInfo = (AMethod) depMethod; if (methodDependencyInfo.getModuleName() == null) { methodDependencyInfo.setModuleName(dependency.getDependencyName());
private CompiledDependency createFailedCompiledDependency(String dependencyName, ClassLoader classLoader, Exception ex) { Collection<OpenLMessage> messages = new LinkedHashSet<>(); for (OpenLMessage openLMessage : OpenLMessagesUtils.newErrorMessages(ex)) { String message = String.format("Failed to load dependent module '%s': %s", dependencyName, openLMessage.getSummary()); messages.add(new OpenLMessage(message, Severity.ERROR)); } ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(classLoader); try { return new CompiledDependency(dependencyName, new CompiledOpenClass(NullOpenClass.the, messages, new SyntaxNodeException[0], new SyntaxNodeException[0])); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } } }
public ClassLoader getClassLoader() { return getCompiledOpenClass().getClassLoader(); }
if (!dependency.getDependencyName().equals(moduleName)) { XlsMetaInfo metaInfo = (XlsMetaInfo) dependency.getCompiledOpenClass().getOpenClassWithErrors().getMetaInfo();
OpenLValidationManager.turnOffValidation(); CompiledOpenClass compiledOpenClass = rulesInstantiationStrategy.compile(); CompiledDependency cd = new CompiledDependency(dependencyName, compiledOpenClass); log.debug("Dependency for dependencyName = {} has been stored in cache.", dependencyName); compiledDependency = cd;
public ClassLoader getClassLoader() { return getCompiledOpenClass().getClassLoader(); }
if (!dependency.getDependencyName().equals(moduleName)) { XlsMetaInfo metaInfo = (XlsMetaInfo) dependency.getCompiledOpenClass().getOpenClassWithErrors().getMetaInfo();
OpenLValidationManager.turnOffValidation(); CompiledOpenClass compiledOpenClass = rulesInstantiationStrategy.compile(); CompiledDependency cd = new CompiledDependency(dependencyName, compiledOpenClass); log.debug("Dependency for dependencyName = {} has been stored in cache.", dependencyName); compiledDependency = cd;
@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; }
@Override public CompiledDependency load(String dependencyName, IDependencyManager dm) throws OpenLCompilationException { if (name.equals(dependencyName)) { final RuleServiceDeploymentRelatedDependencyManager dependencyManager; if (dm instanceof RuleServiceDeploymentRelatedDependencyManager) { dependencyManager = (RuleServiceDeploymentRelatedDependencyManager) dm; } else { throw new IllegalStateException( "This loader works only with RuleServiceDeploymentRelatedDependencyManager!"); } if (!isCompiledOnce) { compile(dependencyName, dependencyManager); isCompiledOnce = true; } if (lazyCompiledDependency == null) { CompiledOpenClass compiledOpenClass = new LazyCompiledOpenClass(dependencyManager, this, new Dependency(DependencyType.MODULE, new IdentifierNode(null, null, dependencyName, null))); lazyCompiledDependency = new CompiledDependency(dependencyName, compiledOpenClass); } return lazyCompiledDependency; } return null; }
@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; }
public CompiledDependency load(String dependencyName, IDependencyManager dependencyManager) throws OpenLCompilationException{ Module dependencyModule = findDependencyModule(dependencyName); if(dependencyModule != null) { try { ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); // create classloader for the dependency. With the parent for current module. // ProjectDescriptor project = dependencyModule.getProject(); SimpleBundleClassLoader moduleClassLoader = new SimpleBundleClassLoader(project.getClassPathUrls(), oldClassLoader); SingleModuleInstantiationStrategy strategy = RulesInstantiationStrategyFactory.getStrategy(dependencyModule, dependencyManager.isExecutionMode(), dependencyManager, moduleClassLoader); strategy.setExternalParameters(dependencyManager.getExternalParameters()); CompiledOpenClass compiledOpenClass = strategy.compile(); return new CompiledDependency(dependencyName, compiledOpenClass); } catch (Exception e) { throw new OpenlNotCheckedException(String.format("Failed to load dependency '%s'!", dependencyName) , e); } } return null; }
protected void addDependencyTypes(CompiledDependency dependency) { CompiledOpenClass compiledOpenClass = dependency.getCompiledOpenClass(); for (IOpenClass type : compiledOpenClass.getTypes()) { try { addType(type); } catch (OpenLCompilationException e) { addError(e); } } }