protected RulesInstantiationStrategy getStrategy(Collection<Module> modules, IDependencyManager dependencyManager) { if (rulesInstantiationStrategy == null) { switch (modules.size()) { case 0: throw new IllegalStateException("There are no modules to instantiate."); case 1: rulesInstantiationStrategy = RulesInstantiationStrategyFactory.getStrategy(modules.iterator() .next(), isExecutionMode(), dependencyManager, classLoader); break; default: rulesInstantiationStrategy = new SimpleMultiModuleInstantiationStrategy(modules, dependencyManager, classLoader, isExecutionMode()); } } return rulesInstantiationStrategy; }
@Override public Object instantiate(Class<?> rulesClass) throws RulesInstantiationException { ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(getClassLoader()); try { return getEngineFactory().newEngineInstance(); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } }
Class<?> serviceClass; try { serviceClass = getServiceClass(); } catch (ClassNotFoundException e) { log.debug("Failed to get service class.", e); engineFactory = new RulesEngineFactory<>(createVirtualSourceCodeModule(), (Class<Object>) serviceClass); engineFactory.setExecutionMode(isExecutionMode()); for (Module m : getModules()) { MethodFilter methodFilter = m.getMethodFilter(); if (methodFilter != null) { engineFactory.setInterfaceClassGenerator(new InterfaceClassGeneratorImpl(includes, excludes)); engineFactory.setDependencyManager(getDependencyManager());
Class<?> serviceClass; try { serviceClass = getServiceClass(); } catch (ClassNotFoundException e) { log.debug("Failed to get service class.", e); engineFactory = new RulesEngineFactory<>(createVirtualSourceCodeModule(), (Class<Object>) serviceClass); engineFactory.setExecutionMode(isExecutionMode()); for (Module m : getModules()) { MethodFilter methodFilter = m.getMethodFilter(); if (methodFilter != null) { engineFactory.setInterfaceClassGenerator(new InterfaceClassGeneratorImpl(includes, excludes)); engineFactory.setDependencyManager(getDependencyManager());
protected RulesInstantiationStrategy getStrategy(Collection<Module> modules, IDependencyManager dependencyManager) { if (rulesInstantiationStrategy == null) { switch (modules.size()) { case 0: throw new IllegalStateException("There are no modules to instantiate."); case 1: rulesInstantiationStrategy = RulesInstantiationStrategyFactory.getStrategy(modules.iterator() .next(), isExecutionMode(), dependencyManager, classLoader); break; default: rulesInstantiationStrategy = new SimpleMultiModuleInstantiationStrategy(modules, dependencyManager, classLoader, isExecutionMode()); } } return rulesInstantiationStrategy; }
@Override public Object instantiate(Class<?> rulesClass) throws RulesInstantiationException { ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(getClassLoader()); try { return getEngineFactory().newEngineInstance(); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } }
/** {@inheritDoc} */ public RulesInstantiationStrategy getStrategy(ServiceDescription serviceDescription, IDependencyManager dependencyManager) { Collection<Module> modules = serviceDescription.getModules(); int moduleSize = modules.size(); if (moduleSize == 0) { throw new IllegalStateException("There are no modules to instantiate."); } String serviceName = serviceDescription.getName(); if (isLazy()) { log.debug("Lazy loading strategy has been used for service: '{}'.", serviceName); return new LazyInstantiationStrategy(serviceDescription.getDeployment(), modules, dependencyManager); } if (moduleSize == 1) { log.debug("Single module loading strategy has been used for service: '{}'.", serviceName); Module module = modules.iterator().next(); return RulesInstantiationStrategyFactory.getStrategy(module, true, dependencyManager); } log.debug("Multi module loading strategy has been used for service: '{}'.", serviceName); return new SimpleMultiModuleInstantiationStrategy(modules, dependencyManager, true); } }
@Override public Class<?> getGeneratedRulesClass() throws RulesInstantiationException { // Using project class loader for interface generation. ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(getClassLoader()); try { return getEngineFactory().getInterfaceClass(); } catch (Exception e) { throw new RulesInstantiationException("Failed to resolve interface!", e); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } }
/** {@inheritDoc} */ public RulesInstantiationStrategy getStrategy(Collection<Module> modules, IDependencyManager dependencyManager) { ServiceDescription serviceDescription = ServiceDescriptionHolder.getInstance().getServiceDescription(); if (serviceDescription == null) { throw new IllegalStateException("ServiceDescription is not found."); } int moduleSize = modules.size(); if (moduleSize == 0) { throw new IllegalStateException("There are no modules to instantiate."); } String serviceName = serviceDescription.getName(); if (isLazy()) { log.debug("Lazy loading strategy has been used for service: '{}'.", serviceName); return new LazyInstantiationStrategy(serviceDescription.getDeployment(), modules, dependencyManager); } if (moduleSize == 1) { log.debug("Single module loading strategy has been used for service: '{}'.", serviceName); Module module = modules.iterator().next(); return RulesInstantiationStrategyFactory.getStrategy(module, true, dependencyManager); } log.debug("Multi module loading strategy has been used for service: '{}'.", serviceName); return new SimpleMultiModuleInstantiationStrategy(modules, dependencyManager, true); } }
@Override public Class<?> getGeneratedRulesClass() throws RulesInstantiationException { // Using project class loader for interface generation. ClassLoader oldClassLoader = Thread.currentThread().getContextClassLoader(); Thread.currentThread().setContextClassLoader(getClassLoader()); try { return getEngineFactory().getInterfaceClass(); } catch (Exception e) { throw new RulesInstantiationException("Failed to resolve interface!", e); } finally { Thread.currentThread().setContextClassLoader(oldClassLoader); } }
} else { if (isProject && modules.size() > 0) { rulesInstantiationStrategy = new SimpleMultiModuleInstantiationStrategy(modules, dependencyManager, classLoader, executionMode);
} else { if (isProject && modules.size() > 0) { rulesInstantiationStrategy = new SimpleMultiModuleInstantiationStrategy(modules, dependencyManager, classLoader, executionMode);
} else { List<Module> modules = this.moduleInfo.getProject().getModules(); instantiationStrategy = new SimpleMultiModuleInstantiationStrategy(modules, webStudioWorkspaceDependencyManager, false);
} else { List<Module> modules = this.moduleInfo.getProject().getModules(); instantiationStrategy = new SimpleMultiModuleInstantiationStrategy(modules, webStudioWorkspaceDependencyManager, false);