Example usage for org.apache.commons.configuration Configuration subset

List of usage examples for org.apache.commons.configuration Configuration subset

Introduction

In this page you can find the example usage for org.apache.commons.configuration Configuration subset.

Prototype

Configuration subset(String prefix);

Source Link

Document

Return a decorator Configuration containing every key from the current Configuration that starts with the specified prefix.

Usage

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);

}