List of usage examples for org.apache.commons.configuration Configuration subset
Configuration subset(String prefix);
From source file:org.seedstack.mqtt.internal.MqttPluginTest.java
/** * Test method for//from ww w .j a v a2 s .c o m * {@link org.seedstack.mqtt.internal.MqttPlugin#init(io.nuun.kernel.api.plugin.context.InitContext)} * . */ @Test public void testInitWithPoolConfiguration(@Mocked final Configuration configuration, @SuppressWarnings("rawtypes") @Mocked final ArrayBlockingQueue queue, @Mocked final ThreadPoolExecutor threadPoolExecutor) { final String clientName = "clientOK1"; final String[] clients = { clientName }; final Collection<Class<?>> classes = new ArrayList<Class<?>>(); MqttPlugin plugin = new MqttPlugin(); new Expectations() { { application.getConfiguration(); result = configuration; configuration.subset(anyString); result = configuration; configuration.getStringArray(CONNECTION_CLIENTS); result = clients; configuration.getString(BROKER_URI); result = "xx"; configuration.getBoolean(POOL_ENABLED, Boolean.TRUE); result = Boolean.TRUE; specs.get(any); result = classes; } }; new MockUp<MqttClient>() { @Mock public void $init(String serverURI, String clientId) throws MqttException { } }; plugin.init(initContext); ConcurrentHashMap<String, MqttClientDefinition> defs = Deencapsulation.getField(plugin, "mqttClientDefinitions"); Assertions.assertThat(defs).isNotEmpty(); MqttClientDefinition clientDef = defs.get(clientName); Assertions.assertThat(clientDef.getPoolDefinition()).isNotNull(); Assertions.assertThat(clientDef.getPoolDefinition().getThreadPoolExecutor()).isNotNull(); }
From source file:org.seedstack.mqtt.internal.MqttPluginTest.java
/** * Test method for// www . j a va2 s. c om * {@link org.seedstack.mqtt.internal.MqttPlugin#init(io.nuun.kernel.api.plugin.context.InitContext)} * . */ @Test(expected = SeedException.class) public void testInitWithHandlerWithoutClient(@Mocked final Configuration configuration) { final Collection<Class<?>> classes = new ArrayList<Class<?>>(); classes.add(MyRejectHandler.class); final Collection<Class<?>> listenerClasses = new ArrayList<Class<?>>(); final Collection<Class<?>> publisherClasses = new ArrayList<Class<?>>(); MqttPlugin plugin = new MqttPlugin(); new Expectations() { { application.getConfiguration(); result = configuration; configuration.subset(anyString); result = configuration; specs.get(any); result = listenerClasses; result = publisherClasses; result = classes; } }; plugin.init(initContext); }
From source file:org.seedstack.neo4j.internal.Neo4jPlugin.java
@Override @SuppressWarnings("unchecked") public InitState init(InitContext initContext) { Application application = initContext.dependency(ApplicationPlugin.class).getApplication(); TransactionPlugin transactionPlugin = initContext.dependency(TransactionPlugin.class); Configuration neo4jConfiguration = application.getConfiguration().subset(Neo4jPlugin.CONFIGURATION_PREFIX); String[] graphDatabaseNames = neo4jConfiguration.getStringArray("databases"); if (graphDatabaseNames == null || graphDatabaseNames.length == 0) { LOGGER.info("No Neo4j graph database configured, Neo4j support disabled"); return InitState.INITIALIZED; }// w ww . j ava 2 s .co m for (String graphDatabaseName : graphDatabaseNames) { Configuration graphDatabaseConfiguration = neo4jConfiguration.subset("database." + graphDatabaseName); String exceptionHandler = graphDatabaseConfiguration.getString("exception-handler"); if (exceptionHandler != null && !exceptionHandler.isEmpty()) { try { exceptionHandlerClasses.put(graphDatabaseName, (Class<? extends Neo4jExceptionHandler>) Class.forName(exceptionHandler)); } catch (Exception e) { throw SeedException.wrap(e, Neo4jErrorCodes.UNABLE_TO_LOAD_EXCEPTION_HANDLER_CLASS) .put(EXCEPTION_DB_NAME, graphDatabaseName) .put("exceptionHandlerClass", exceptionHandler); } } String dbType = graphDatabaseConfiguration.getString("type", "embedded"); if ("embedded".equals(dbType)) { graphDatabaseServices.put(graphDatabaseName, createEmbeddedDatabase(graphDatabaseName, graphDatabaseConfiguration, application)); } else { throw SeedException.createNew(Neo4jErrorCodes.UNKNOWN_DATABASE_TYPE) .put(EXCEPTION_DB_NAME, graphDatabaseName).put("dbType", dbType); } } if (graphDatabaseNames.length == 1) { Neo4jTransactionMetadataResolver.defaultDb = graphDatabaseNames[0]; } transactionPlugin.registerTransactionHandler(Neo4jTransactionHandler.class); return InitState.INITIALIZED; }
From source file:org.seedstack.redis.internal.RedisPlugin.java
@Override @SuppressWarnings("unchecked") public InitState init(InitContext initContext) { Application application = initContext.dependency(ApplicationPlugin.class).getApplication(); TransactionPlugin transactionPlugin = initContext.dependency(TransactionPlugin.class); Configuration redisConfiguration = application.getConfiguration() .subset(RedisPlugin.REDIS_PLUGIN_CONFIGURATION_PREFIX); String[] clients = redisConfiguration.getStringArray("clients"); if (clients == null || clients.length == 0) { LOGGER.info("No Redis client configured, Redis support disabled"); return InitState.INITIALIZED; }//from w w w . jav a 2 s .c o m for (String client : clients) { Configuration clientConfiguration = redisConfiguration.subset("client." + client); String exceptionHandler = clientConfiguration.getString("exception-handler"); if (exceptionHandler != null && !exceptionHandler.isEmpty()) { try { exceptionHandlerClasses.put(client, (Class<? extends RedisExceptionHandler>) Class.forName(exceptionHandler)); } catch (Exception e) { throw SeedException.wrap(e, RedisErrorCodes.UNABLE_TO_LOAD_EXCEPTION_HANDLER_CLASS) .put("clientName", client).put("exceptionHandlerClass", exceptionHandler); } } try { jedisPools.put(client, createJedisPool(clientConfiguration)); } catch (Exception e) { throw SeedException.wrap(e, RedisErrorCodes.UNABLE_TO_CREATE_CLIENT).put("clientName", client); } } if (clients.length == 1) { RedisTransactionMetadataResolver.defaultClient = clients[0]; } transactionPlugin.registerTransactionHandler(RedisTransactionHandler.class); transactionPlugin.registerTransactionHandler(RedisPipelinedTransactionHandler.class); return InitState.INITIALIZED; }
From source file:org.seedstack.seed.cache.internal.CachePlugin.java
@Override @SuppressWarnings("unchecked") public InitState init(InitContext initContext) { ApplicationPlugin confPlugin = (ApplicationPlugin) initContext.pluginsRequired().iterator().next(); Configuration cachesConf = confPlugin.getApplication().getConfiguration() .subset(CachePlugin.CACHE_PLUGIN_CONFIGURATION_PREFIX); String defaultProvider = cachesConf.getString("default-provider"); String[] cacheNames = cachesConf.getStringArray("caches"); if (defaultProvider != null) { LOGGER.info("Caching default provider is configured to {}", defaultProvider); } else {/*from w w w. j av a 2s . c o m*/ LOGGER.info("Caching default provider is not specified and will be autodetected from classpath"); } if (cacheNames != null) { for (String cacheName : cacheNames) { Configuration cacheConf = cachesConf.subset("cache." + cacheName); MutableConfiguration cacheConfiguration = new MutableConfiguration(); // Expiry policy String expiryPolicyFactory = cacheConf.getString("expiry-policy-factory"); String expiryPolicy = cacheConf.getString("expiry-policy"); Long expiryDuration = cacheConf.getLong("expiry-duration", 900); if (expiryPolicyFactory != null) { try { cacheConfiguration .setExpiryPolicyFactory((Factory) Class.forName(expiryPolicyFactory).newInstance()); } catch (Exception e) { throw new PluginException( "Unable to instantiate custom expiry policy factory " + expiryPolicyFactory, e); } } else if (expiryPolicy != null && !expiryPolicy.isEmpty()) { try { cacheConfiguration .setExpiryPolicyFactory(BuiltinExpiryPolicy.valueOf(expiryPolicy.toUpperCase()) .getFactory(new Duration(TimeUnit.SECONDS, expiryDuration))); } catch (Exception e) { throw new PluginException("Unable to instantiate built-in expiry policy " + expiryPolicy, e); } } String providerClassname = cacheConf.getString("provider", defaultProvider); if (providerClassname == null) { LOGGER.info("Configuring cache {} with autodetected provider", cacheName); caches.put(cacheName, Caching.getCachingProvider().getCacheManager().createCache(cacheName, cacheConfiguration)); } else { LOGGER.info("Configuring cache {} with provider {}", cacheName, providerClassname); caches.put(cacheName, Caching.getCachingProvider(providerClassname).getCacheManager() .createCache(cacheName, cacheConfiguration)); } } } return InitState.INITIALIZED; }
From source file:org.seedstack.seed.core.internal.application.ApplicationPlugin.java
@Override public InitState init(InitContext initContext) { ApplicationDiagnosticCollector applicationDiagnosticCollector = new ApplicationDiagnosticCollector(); ((CorePlugin) initContext.pluginsRequired().iterator().next()) .registerDiagnosticCollector("org.seedstack.seed.core.application", applicationDiagnosticCollector); Set<String> allConfigurationResources = Sets.newHashSet(); for (String propertiesResource : initContext.mapResourcesByRegex().get(PROPERTIES_REGEX)) { if (propertiesResource.startsWith(CONFIGURATION_LOCATION)) { allConfigurationResources.add(propertiesResource); }// ww w . j a v a2s .c o m } for (String propsResource : initContext.mapResourcesByRegex().get(PROPS_REGEX)) { if (propsResource.startsWith(CONFIGURATION_LOCATION)) { allConfigurationResources.add(propsResource); } } Map<String, Class<? extends StrLookup>> configurationLookups = new HashMap<String, Class<? extends StrLookup>>(); for (Class<?> candidate : initContext.scannedClassesByAnnotationClass().get(ConfigurationLookup.class)) { ConfigurationLookup configurationLookup = candidate.getAnnotation(ConfigurationLookup.class); if (StrLookup.class.isAssignableFrom(candidate) && configurationLookup != null && !configurationLookup.value().isEmpty()) { configurationLookups.put(configurationLookup.value(), candidate.asSubclass(StrLookup.class)); LOGGER.trace("Detected configuration lookup {}", configurationLookup.value()); } } for (String configurationResource : allConfigurationResources) { boolean isOverrideResource = configurationResource.endsWith(".override.properties") || configurationResource.endsWith(".override.props"); try { Enumeration<URL> urlEnumeration = classLoader.getResources(configurationResource); while (urlEnumeration.hasMoreElements()) { URL url = urlEnumeration.nextElement(); InputStream resourceAsStream = null; try { resourceAsStream = url.openStream(); if (isOverrideResource) { LOGGER.debug("Adding {} to configuration override", url.toExternalForm()); propsOverride.load(resourceAsStream); } else { LOGGER.debug("Adding {} to configuration", url.toExternalForm()); props.load(resourceAsStream); } } finally { if (resourceAsStream != null) { try { // NOSONAR resourceAsStream.close(); } catch (IOException e) { LOGGER.warn("Unable to close configuration resource " + configurationResource, e); } } } } } catch (IOException e) { throw SeedException.wrap(e, ApplicationErrorCode.UNABLE_TO_LOAD_CONFIGURATION_RESOURCE) .put("resource", configurationResource); } } // Determine configuration profile String[] profiles = getStringArray(System.getProperty("org.seedstack.seed.profiles")); if (profiles == null || profiles.length == 0) { LOGGER.info("No configuration profile selected"); applicationDiagnosticCollector.setActiveProfiles(""); } else { String activeProfiles = Arrays.toString(profiles); LOGGER.info("Active configuration profile(s): {}", activeProfiles); applicationDiagnosticCollector.setActiveProfiles(activeProfiles); } // Build configuration Configuration configuration = buildConfiguration(props, propsOverride, configurationLookups, profiles); applicationDiagnosticCollector.setConfiguration(configuration); Configuration coreConfiguration = configuration.subset(CorePlugin.CORE_PLUGIN_PREFIX); String appId = coreConfiguration.getString("application-id"); if (appId == null || appId.isEmpty()) { throw SeedException.createNew(ApplicationErrorCode.MISSING_APPLICATION_IDENTIFIER).put("property", CorePlugin.CORE_PLUGIN_PREFIX + ".application-id"); } String appName = coreConfiguration.getString("application-name"); if (appName == null) { appName = appId; } String appVersion = coreConfiguration.getString("application-version"); if (appVersion == null) { appVersion = "0.0.0"; } LOGGER.info("Application info: '{}' / '{}' / '{}'", appId, appName, appVersion); applicationDiagnosticCollector.setApplicationId(appId); applicationDiagnosticCollector.setApplicationName(appName); applicationDiagnosticCollector.setApplicationVersion(appVersion); String seedStorage = coreConfiguration.getString("storage"); File seedDirectory; if (seedStorage == null) { seedDirectory = new File(new File(getUserHome(), ".seed"), appId); } else { seedDirectory = new File(seedStorage); } if (!seedDirectory.exists() && !seedDirectory.mkdirs()) { throw SeedException.createNew(ApplicationErrorCode.UNABLE_TO_CREATE_STORAGE_DIRECTORY).put("path", seedDirectory.getAbsolutePath()); } if (!seedDirectory.isDirectory()) { throw SeedException.createNew(ApplicationErrorCode.STORAGE_PATH_IS_NOT_A_DIRECTORY).put("path", seedDirectory.getAbsolutePath()); } if (!seedDirectory.canWrite()) { throw SeedException.createNew(ApplicationErrorCode.STORAGE_DIRECTORY_IS_NOT_WRITABLE).put("path", seedDirectory.getAbsolutePath()); } LOGGER.debug("Application storage location is {}", seedDirectory.getAbsolutePath()); applicationDiagnosticCollector.setStorageLocation(seedDirectory.getAbsolutePath()); if (coreConfiguration.getBoolean("redirect-jul", true)) { SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); LOGGER.debug( "Java logging to SLF4J redirection enabled, if you're using logback be sure to have a LevelChangePropagator in your configuration"); } this.application = new ApplicationImpl(appName, appId, appVersion, seedDirectory, configuration); return InitState.INITIALIZED; }
From source file:org.seedstack.seed.core.internal.jndi.JndiPluginTest.java
private InitContext mockInitContextForJndiPlugin(String nameTolookup) { InitContext initContext = mock(InitContext.class); Configuration configuration = mock(Configuration.class); when(configuration.subset(CorePlugin.CORE_PLUGIN_PREFIX)).thenReturn(configuration); when(configuration.getStringArray("additional-jndi-contexts")).thenReturn(new String[] { nameTolookup }); when(configuration.getString("additional-jndi-context.test1")).thenReturn("/jndi-test1.properties"); ApplicationPlugin applicationPlugin = mock(ApplicationPlugin.class); Application application = mock(Application.class); when(applicationPlugin.getApplication()).thenReturn(application); when(application.getConfiguration()).thenReturn(configuration); Collection plugins = mock(Collection.class); Iterator iterator = mock(Iterator.class); when(initContext.pluginsRequired()).thenReturn(plugins); when(initContext.pluginsRequired().iterator()).thenReturn(iterator); when((ApplicationPlugin) initContext.pluginsRequired().iterator().next()).thenReturn(applicationPlugin); Assertions.assertThat(initContext).isNotNull(); Assertions.assertThat(applicationPlugin).isNotNull(); Assertions.assertThat(configuration).isNotNull(); return initContext; }
From source file:org.seedstack.seed.crypto.internal.CryptoPluginTest.java
/** * Test method for {@link org.seedstack.seed.crypto.internal.CryptoPlugin#init(io.nuun.kernel.api.plugin.context.InitContext)}. Test creation of * {@link EncryptionService}./*from w w w. ja va2s .com*/ * * @throws Exception if an error occurred */ @Test public void testInitInitContext(@Mocked final InitContext context, @Mocked final ApplicationPlugin applicationPlugin, @Mocked final Configuration configuration, @Mocked final Application application, @Mocked final EncryptionServiceFactory factory) throws Exception { new Expectations() { @Mocked CertificateDefinition certificateDefinition; { context.pluginsRequired(); result = Collections.singleton(applicationPlugin); applicationPlugin.getApplication(); result = application; application.getConfiguration(); result = configuration; configuration.subset("org.seedstack.seed.cryptography"); result = configuration; configuration.getStringArray("keys"); result = new String[] { "key1" }; } }; final CryptoPlugin plugin = new CryptoPlugin(); plugin.init(context); new Verifications() { Map<String, EncryptionService> encryptionServices = Deencapsulation.getField(plugin, "encryptionServices"); final int configurations = 2; // master + key1 { factory.createEncryptionService((KeyStoreDefinition) any, (CertificateDefinition) any); times = configurations; Assertions.assertThat(encryptionServices.size()).isEqualTo(configurations); } }; }
From source file:org.seedstack.seed.crypto.internal.CryptoPluginTest.java
/** * Test method for {@link org.seedstack.seed.crypto.internal.CryptoPlugin#init(io.nuun.kernel.api.plugin.context.InitContext)}. Test creation of * {@link EncryptionService} with a custom keystore for one key. * * @throws Exception if an error occurred *///from w w w.j a va2 s . c om @Test public void testInitInitContextWithCustomKeystoreForKey(@Mocked final InitContext context, @Mocked final ApplicationPlugin applicationPlugin, @Mocked final Configuration configuration, @Mocked final Configuration subsetConfiguration, @Mocked final Application application, @Mocked final EncryptionServiceFactory factory) throws Exception { new Expectations() { @Mocked CertificateDefinition certificateDefinition; { context.pluginsRequired(); result = Collections.singleton(applicationPlugin); applicationPlugin.getApplication(); result = application; application.getConfiguration(); result = configuration; configuration.subset("org.seedstack.seed.cryptography"); result = configuration; configuration.getStringArray("keys"); result = new String[] { "key1" }; } }; final CryptoPlugin plugin = new CryptoPlugin(); plugin.init(context); new Verifications() { Map<String, EncryptionService> encryptionServices = Deencapsulation.getField(plugin, "encryptionServices"); final int configurations = 2; // master + key1 { factory.createEncryptionService((KeyStoreDefinition) any, (CertificateDefinition) any); times = configurations; Assertions.assertThat(encryptionServices.size()).isEqualTo(configurations); } }; }
From source file:org.seedstack.seed.crypto.internal.CryptoPluginTest.java
/** * Test method for {@link org.seedstack.seed.crypto.internal.CryptoPlugin#init(io.nuun.kernel.api.plugin.context.InitContext)}. Test an error in * the configuration file./*from w w w. ja v a 2 s . c o m*/ * * @throws Exception if an error occurred */ @Test(expected = RuntimeException.class) public void testInitInitContextWithProblemKeyDefinition(@Mocked final InitContext context, @Mocked final ApplicationPlugin applicationPlugin, @Mocked final Configuration configuration, @Mocked final Application application) throws Exception { new Expectations() { @Mocked CertificateDefinition certificateDefinition; { context.pluginsRequired(); result = Collections.singleton(applicationPlugin); applicationPlugin.getApplication(); result = application; application.getConfiguration(); result = configuration; configuration.subset("org.seedstack.seed.cryptography"); result = configuration; configuration.getStringArray("keys"); result = new String[] { "key1" }; configuration.isEmpty(); result = true; } }; final CryptoPlugin plugin = new CryptoPlugin(); plugin.init(context); }