/** * 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))); }
/** * 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; }
/** * 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; }
/** * Adds a NodeInfosPlugin * @param nodeInfosPluginClass the plugin to use * @param params the params * @return these features */ public CommonsFeatures withNodeInfosPlugin(final Class<? extends NodeInfosPlugin> nodeInfosPluginClass, final Param... params) { getModuleConfigBuilder() .addPlugin(nodeInfosPluginClass, params); return this; }
/** * Activates script with a default plugin. * * @return these features */ public CommonsFeatures withScript() { getModuleConfigBuilder() .addComponent(ScriptManager.class, ScriptManagerImpl.class) .addPlugin(JaninoExpressionEvaluatorPlugin.class); return this; }
/** * Activates script with a defined plugin. * @param expressionEvaluatorPluginClass the type of plugin to use * @param params the params * @return these features */ public CommonsFeatures withScript(final Class<? extends ExpressionEvaluatorPlugin> expressionEvaluatorPluginClass, final Param... params) { getModuleConfigBuilder() .addComponent(ScriptManager.class, ScriptManagerImpl.class) .addPlugin(expressionEvaluatorPluginClass, params); return this; }
/** * 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 protected void buildFeatures() { getModuleConfigBuilder() .addComponent(BioManager.class, BioManagerImpl.class) .addComponent(MathManager.class, MathManagerImpl.class, Param.of("start", "100")) .addPlugin(MathPlugin.class, Param.of("factor", "20")); }
.addModule(ModuleConfig.builder("Function") .addComponent(FunctionManager.class, implClass) .addPlugin(FunctionPlugin.class, Param.of("name", "x+1"), Param.of("a", "1"), Param.of("b", "1")) .addPlugin(FunctionPlugin.class, Param.of("name", "2x"), Param.of("a", "2"), Param.of("b", "0")) .addPlugin(FunctionPlugin.class, Param.of("name", "4x+3"), Param.of("a", "4"), Param.of("b", "3")) .addPlugin(FunctionPlugin.class, Param.of("name", (withNullMult ? "0" : "1") + "x+1"), Param.of("a", withNullMult ? "0" : "1"), Param.of("b", "1")) .addPlugin(FunctionPlugin.class, Param.of("name", "x-10"), Param.of("a", "1"),
bootConfigBuilder.addPlugin(pluginConfigBuilder.build()); } else { moduleConfigBuilder.addPlugin(pluginConfigBuilder.build());
@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(); } }
@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)) { // } }); }
@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)) { // } } }
@Test public void testHome() { final AppConfig appConfig = AppConfig.builder() .beginBoot() .withLogConfig(new LogConfig("/log4j.xml")) .endBoot() .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(); try (AutoCloseableApp app = new AutoCloseableApp(appConfig)) { final BioManager bioManager = app.getComponentSpace().resolve(BioManager.class); final int res = bioManager.add(1, 2, 3); assertEquals(366, res); assertTrue(bioManager.isActive()); } }
.addComponent(MathManager.class, MathManagerImpl.class, Param.of("start", "${math.test.start}")) .addPlugin(MathPlugin.class, Param.of("factor", "20")) .build())