/** * Activates caches. * * @param cachePluginClass the cache plugin to use * @param params the params * @return these features */ public CommonsFeatures withCache(final Class<? extends CachePlugin> cachePluginClass, final Param... params) { getModuleConfigBuilder() .addComponent(CacheManager.class, CacheManagerImpl.class) .addPlugin(cachePluginClass, params); return this; }
@Override public final ModuleConfig build() { buildFeatures(); return moduleConfigBuilder.build(); }
/** {@inheritDoc} */ @Override protected void buildFeatures() { getModuleConfigBuilder() .addComponent(AnalyticsManager.class, AnalyticsManagerImpl.class) .addComponent(CodecManager.class, CodecManagerImpl.class) .addComponent(DaemonManager.class, DaemonManagerImpl.class) .addComponent(EventBusManager.class, EventBusManagerImpl.class) .addComponent(NodeManager.class, NodeManagerImpl.class) .addComponent(VTransactionManager.class, VTransactionManagerImpl.class) .addAspect(VTransactionAspect.class); } }
@Override protected AppConfig buildAppConfig() { return AppConfig.builder() .addModule(ModuleConfig.builder("bio") .addComponent(BioManager.class, BioManagerImpl.class) .addComponent(MathManager.class, MathManagerImpl.class, Param.of("start", "100")) .addPlugin(MathPlugin.class, Param.of("factor", "20")) .build()) .build(); } }
@Override protected AppConfig buildAppConfig() { return AppConfig.builder() .addModule(ModuleConfig.builder("test-metric") .addComponent(AnalyticsManager.class, AnalyticsManagerImpl.class) .addComponent(DummyMetricsProvider.class) .build()) .build(); }
break; case module: appConfigBuilder.addModule(moduleConfigBuilder.build()); moduleConfigBuilder = null; break; case component: moduleConfigBuilder.addComponent(componentConfigBuilder.build()); componentConfigBuilder = null; break; bootConfigBuilder.addPlugin(pluginConfigBuilder.build()); } else { moduleConfigBuilder.addPlugin(pluginConfigBuilder.build()); moduleConfigBuilder.addDefinitionProvider(definitionProviderConfigBuilder.build()); definitionProviderConfigBuilder = null; break;
/** * Adds a REDIS connector. * @param host the REDIS host * @param port the REDIS port * @param passwordOpt the REDIS password * @param database the index of the REDIS database * @return these features */ public CommonsFeatures withRedisConnector(final String host, final int port, final int database, final Optional<String> passwordOpt) { final ComponentConfigBuilder componentConfigBuilder = ComponentConfig .builder() .withImpl(RedisConnector.class) .addParam(Param.of("host", host)) .addParam(Param.of("port", Integer.toString(port))) .addParam(Param.of("database", Integer.toString(database))); if (passwordOpt.isPresent()) { componentConfigBuilder .addParam(Param.of("password", passwordOpt.get())); } getModuleConfigBuilder() .addComponent(componentConfigBuilder.build()); return this; }
/** * Adds a AnalyticsConnectorPlugin * @param analyticsConnectorPluginClass the plugin to use * @param params the params * @return these features */ public CommonsFeatures addAnalyticsConnectorPlugin(final Class<? extends AnalyticsConnectorPlugin> analyticsConnectorPluginClass, final Param... params) { getModuleConfigBuilder() .addPlugin(analyticsConnectorPluginClass, params); return this; }
@Override protected AppConfig buildAppConfig() { return AppConfig.builder() .beginBoot() .withLogConfig(new LogConfig("/log4j.xml")) .endBoot() .addModule(ModuleConfig.builder("test") .addDefinitionProvider(DefinitionProviderConfig.builder(TestDefinitionprovider.class) .addParam(Param.of("testParam", "testParamValue")) .addDefinitionResource("type1", "resource1") .build()) .build()) .build(); }
case proxy: final Class<? extends Component> proxyApiClass = ClassUtil.classForName(attrs.getValue("api"), Component.class); moduleConfigBuilder.addProxy(proxyApiClass); break; case provider: final String aspectImplClassStr = attrs.getValue("class"); final Class<? extends Aspect> aspectImplClass = ClassUtil.classForName(aspectImplClassStr, Aspect.class); moduleConfigBuilder.addAspect(aspectImplClass); break; case proxyMethod: final String proxyMethodImplClassStr = attrs.getValue("class"); final Class<? extends ProxyMethod> proxyMethodClass = ClassUtil.classForName(proxyMethodImplClassStr, ProxyMethod.class); moduleConfigBuilder.addProxyMethod(proxyMethodClass); break; case feature:
/** * Static method factory for ModuleConfigBuilder * @param name Name of the module * @return ModuleConfigBuilder */ public static ModuleConfigBuilder builder(final String name) { return new ModuleConfigBuilder(name); }
@Test public void testHome2() { final AppConfig appConfig = AppConfig.builder() .beginBoot() .withLogConfig(new LogConfig("/log4j.xml")) .endBoot() .addModule(ModuleConfig.builder("Bio") .addComponent(BioManager.class, BioManagerImpl.class) //This plugin DummyPlugin is not used By BioManager !! .addPlugin(DummyPlugin.class) .addComponent(MathManager.class, MathManagerImpl.class, Param.of("start", "100")) .addPlugin(MathPlugin.class, Param.of("factor", "20")) .build()) .build(); Assertions.assertThrows(RuntimeException.class, () -> { try (AutoCloseableApp app = new AutoCloseableApp(appConfig)) { // } }); }
@Override protected AppConfig buildAppConfig() { return AppConfig.builder() .addModule(ModuleConfig.builder("commons") .addComponent(CodecManager.class, CodecManagerImpl.class) .build()) .build(); }
/** * Adds a component defined by an implementation. * @param implClass impl of the component * @param params the list of params * @return this builder */ public ModuleConfigBuilder addComponent(final Class<? extends Component> implClass, final Param... params) { Assertion.checkNotNull(implClass); Assertion.checkNotNull(params); //--- final ComponentConfig componentConfig = ComponentConfig.builder() .withImpl(implClass) .addParams(params) .build(); return addComponent(componentConfig); }
/** * Adds a plugin defined by its implementation. * @param pluginImplClass impl of the plugin * @param params the list of params * @return this builder */ public ModuleConfigBuilder addPlugin(final Class<? extends Plugin> pluginImplClass, final Param... params) { return this.addPlugin(new PluginConfig(pluginImplClass, Arrays.asList(params))); }
@Test public void testHome3() { final AppConfig appConfig = AppConfig.builder() .beginBoot() .withLogConfig(new LogConfig("/log4j.xml")) .endBoot() .addModule(ModuleConfig.builder("Bio-core") .addComponent(MathManager.class, MathManagerImpl.class, Param.of("start", "100")) .addPlugin(MathPlugin.class, Param.of("factor", "20")) .build()) .addModule(ModuleConfig.builder("Bio-spe") //This module depends of Bio-core module .addComponent(BioManager.class, BioManagerImpl.class) .build()) .build(); try (AutoCloseableApp app = new AutoCloseableApp(appConfig)) { // } } }
/** * Activates script with a default plugin. * * @return these features */ public CommonsFeatures withScript() { getModuleConfigBuilder() .addComponent(ScriptManager.class, ScriptManagerImpl.class) .addPlugin(JaninoExpressionEvaluatorPlugin.class); return this; }
@Override protected AppConfig buildAppConfig() { final String redisHost = "redis-pic.part.klee.lan.net"; final int redisPort = 6379; final int redisDatabase = 15; return AppConfig.builder() .beginBoot() .endBoot() .addModule(new CommonsFeatures() .withRedisConnector(redisHost, redisPort, redisDatabase, Optional.empty()) .build()) .addModule(ModuleConfig.builder("checkers") .addComponent(RedisHealthChecker.class) .addComponent(FailedComponentChecker.class) .addComponent(SuccessComponentChecker.class) .build()) .build(); }
/** * Adds a proxy component defined by an interface. * @param apiClass api of the component * @param params the list of params * @return this builder */ public ModuleConfigBuilder addProxy(final Class<? extends Component> apiClass, final Param... params) { Assertion.checkNotNull(apiClass); Assertion.checkNotNull(params); //--- final ComponentConfig componentConfig = ComponentConfig.builder(true) .withApi(apiClass) .addParams(params) .build(); return addComponent(componentConfig); }
/** * Adds a NodeRegistryPlugin * @param nodeRegistryPluginClass the plugin to use * @param params the params * @return these features */ public CommonsFeatures withNodeRegistryPlugin(final Class<? extends NodeRegistryPlugin> nodeRegistryPluginClass, final Param... params) { getModuleConfigBuilder() .addPlugin(nodeRegistryPluginClass, params); return this; }