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.javamail.internal.PropertyFileSessionConfigurerTest.java

@Before
public void setUp() throws Exception {
    Props props = new Props();
    Map<String, Object> config = new HashMap<String, Object>();
    props.load(PropertyFileSessionConfigurerTest.class.getResourceAsStream("/test.props"));
    props.extractProps(config);//from w ww .  j  a  v a  2s .  c om
    Configuration configuration = new MapConfiguration(config);
    assertThat(config).isNotEmpty();
    assertThat(configuration).isNotNull();

    SessionConfigurer configurer = new PropertyFileSessionConfigurer(
            configuration.subset(JavaMailPlugin.CONFIGURATION_PREFIX));
    this.sessionsConfig = configurer.doConfigure();
}

From source file:org.seedstack.jcache.internal.CachePlugin.java

@Override
@SuppressWarnings("unchecked")
public InitState init(InitContext initContext) {
    Configuration cachesConf = initContext.dependency(ConfigurationProvider.class).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 {//w  ww.  j  ava2  s  .  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 jcache {} with autodetected provider", cacheName);
                caches.put(cacheName, Caching.getCachingProvider().getCacheManager().createCache(cacheName,
                        cacheConfiguration));
            } else {
                LOGGER.info("Configuring jcache {} with provider {}", cacheName, providerClassname);
                caches.put(cacheName, Caching.getCachingProvider(providerClassname).getCacheManager()
                        .createCache(cacheName, cacheConfiguration));
            }
        }
    }

    return InitState.INITIALIZED;
}

From source file:org.seedstack.jpa.internal.JpaPlugin.java

@Override
@SuppressWarnings("unchecked")
public InitState init(InitContext initContext) {
    TransactionPlugin transactionPlugin = initContext.dependency(TransactionPlugin.class);
    JdbcRegistry jdbcRegistry = initContext.dependency(JdbcRegistry.class);
    Application application = initContext.dependency(ApplicationPlugin.class).getApplication();
    Configuration jpaConfiguration = application.getConfiguration()
            .subset(JpaPlugin.JPA_PLUGIN_CONFIGURATION_PREFIX);

    String[] persistenceUnitNames = jpaConfiguration.getStringArray("units");

    if (persistenceUnitNames == null || persistenceUnitNames.length == 0) {
        LOGGER.info("No JPA persistence unit configured, JPA support disabled");
        return InitState.INITIALIZED;
    }//www. ja  va 2 s. c  o  m

    for (String persistenceUnit : persistenceUnitNames) {
        Configuration persistenceUnitConfiguration = jpaConfiguration.subset("unit." + persistenceUnit);
        Iterator<String> it = persistenceUnitConfiguration.getKeys("property");

        Properties properties = new Properties();
        while (it.hasNext()) {
            String name = it.next();
            properties.put(name.substring(9), persistenceUnitConfiguration.getString(name));
        }

        EntityManagerFactory emf;
        if (persistenceUnitConfiguration.containsKey("datasource")) {
            Collection<Class<?>> scannedClasses = new ArrayList<Class<?>>();
            if (initContext.scannedClassesByAnnotationClass().get(Entity.class) != null) {
                scannedClasses.addAll(initContext.scannedClassesByAnnotationClass().get(Entity.class));
            }
            if (initContext.scannedClassesByAnnotationClass().get(Embeddable.class) != null) {
                scannedClasses.addAll(initContext.scannedClassesByAnnotationClass().get(Embeddable.class));
            }

            emf = confResolver.createEntityManagerFactory(persistenceUnit, properties,
                    persistenceUnitConfiguration, application, jdbcRegistry, scannedClasses);
        } else {
            emf = confResolver.createEntityManagerFactory(persistenceUnit, properties);
        }

        entityManagerFactories.put(persistenceUnit, emf);

        String exceptionHandler = persistenceUnitConfiguration.getString("exception-handler");
        if (exceptionHandler != null && !exceptionHandler.isEmpty()) {
            try {
                exceptionHandlerClasses.put(persistenceUnit,
                        (Class<? extends JpaExceptionHandler>) Class.forName(exceptionHandler));
            } catch (Exception e) {
                throw new PluginException("Unable to load class " + exceptionHandler, e);
            }
        }
    }

    if (persistenceUnitNames.length == 1) {
        JpaTransactionMetadataResolver.defaultJpaUnit = persistenceUnitNames[0];
    }

    transactionPlugin.registerTransactionHandler(JpaTransactionHandler.class);

    return InitState.INITIALIZED;
}

From source file:org.seedstack.jpa.internal.JpaPluginTest.java

public Configuration mockConfiguration(String itemExceptionHandlerName) {
    Configuration configuration = mock(Configuration.class);
    Assertions.assertThat(configuration).isNotNull();
    when(configuration.subset(JpaPlugin.JPA_PLUGIN_CONFIGURATION_PREFIX)).thenReturn(configuration);
    when(configuration.getStringArray("units")).thenReturn(new String[] { "hsql-in-memory" });
    when(configuration.subset("unit.hsql-in-memory")).thenReturn(configuration);
    Map<String, String> properties = getProperties();
    when(configuration.getKeys("property")).thenReturn(properties.keySet().iterator());
    for (Entry<String, String> entry : properties.entrySet()) {
        when(configuration.getString(entry.getKey())).thenReturn(entry.getValue());
    }/*from  w ww  . j ava2s.c o  m*/
    when(configuration.getString("exception-handler")).thenReturn(itemExceptionHandlerName);
    return configuration;
}

From source file:org.seedstack.ldap.internal.LdapPlugin.java

@Override
public InitState init(InitContext initContext) {
    Configuration configuration = initContext.dependency(ConfigurationProvider.class).getConfiguration();
    String[] realms = configuration.getStringArray(CHOSEN_REALMS);
    startPlugin = ArrayUtils.contains(realms, LdapRealm.class.getSimpleName());

    if (startPlugin) {
        Configuration ldapConfiguration = configuration.subset(LDAP_CONFIG_PREFIX);
        // Initialize ldap pool connection
        String host = ldapConfiguration.getString(SERVER_HOST_PROP);
        if (host == null) {
            throw SeedException.createNew(LdapErrorCodes.NO_HOST_DEFINED).put("hostPropName",
                    LDAP_CONFIG_PREFIX + "." + SERVER_HOST_PROP);
        }/*from  w w w .j  a  v  a2 s. c o m*/
        int port = ldapConfiguration.getInt(SERVER_PORT_PROP, DEFAULT_SERVER_PORT);
        int numConnections = ldapConfiguration.getInt(NUM_CONNECTIONS_PROP, DEFAULT_NUM_CONNECTIONS);
        String accountDn = StringUtils.join(ldapConfiguration.getStringArray(ACCOUNT_DN_PROP), ',');
        LDAPConnection connection;
        try {
            connection = new LDAPConnection(host, port, accountDn,
                    ldapConfiguration.getString(ACCOUNT_PASSWORD_PROP));
            ldapConnectionPool = new LDAPConnectionPool(connection, numConnections);
        } catch (LDAPException e) {
            switch (e.getResultCode().intValue()) {
            case ResultCode.NO_SUCH_OBJECT_INT_VALUE:
                throw SeedException.wrap(e, LdapErrorCodes.NO_SUCH_ACCOUNT).put("account", accountDn)
                        .put("propName", LDAP_CONFIG_PREFIX + "." + ACCOUNT_DN_PROP);
            case ResultCode.INVALID_CREDENTIALS_INT_VALUE:
                throw SeedException.wrap(e, LdapErrorCodes.INVALID_CREDENTIALS).put("account", accountDn)
                        .put("passwordPropName", LDAP_CONFIG_PREFIX + "." + ACCOUNT_PASSWORD_PROP)
                        .put("userPropName", LDAP_CONFIG_PREFIX + "." + ACCOUNT_DN_PROP);
            case ResultCode.CONNECT_ERROR_INT_VALUE:
                throw SeedException.wrap(e, LdapErrorCodes.CONNECT_ERROR).put("host", host).put("port", port)
                        .put("hostPropName", LDAP_CONFIG_PREFIX + "." + SERVER_HOST_PROP)
                        .put("portPropName", LDAP_CONFIG_PREFIX + "." + SERVER_PORT_PROP);
            default:
                throw SeedException.wrap(e, LdapErrorCodes.LDAP_ERROR).put("message", e.getMessage())
                        .put("host", host).put("port", port).put("account", accountDn);
            }
        }
    }
    return InitState.INITIALIZED;
}

From source file:org.seedstack.mqtt.internal.MqttPlugin.java

private void configureMqttClients() {
    String[] clients = mqttConfiguration.getStringArray(CONNECTION_CLIENTS);

    for (String clientName : clients) {
        LOGGER.debug("Configure new MqttClient [{}]", clientName);
        Configuration clientConfiguration = mqttConfiguration.subset(CONNECTION_CLIENT + "." + clientName);
        String uri = clientConfiguration.getString(BROKER_URI);
        String clientId = clientConfiguration.getString(MQTTCLIENT_ID);
        if (uri == null) {
            throw SeedException.createNew(MqttErrorCodes.MISCONFIGURED_MQTT_CLIENT).put("clients", clientName);
        }/*from   w ww.  j a  va  2 s. c om*/
        if (clientId == null) {
            clientId = MqttClient.generateClientId();
            LOGGER.debug("Generate new client id [{}] for client name [{}]", clientId, clientName);
        }

        MqttClientDefinition def = new MqttClientDefinition(uri, clientId);
        Configuration reconnectConfiguration = clientConfiguration.subset(RECONNECTION_PROPS);
        if (!reconnectConfiguration.isEmpty()) {
            try {
                String reconnection = reconnectConfiguration.getString(RECONNECTION_MODE);
                if (reconnection != null) {
                    MqttReconnectionMode mode = Enum.valueOf(MqttReconnectionMode.class, reconnection);
                    def.setReconnectionMode(mode);
                }
                String inter = reconnectConfiguration.getString(RECONNECTION_INTERVAL);
                if (inter != null) {
                    def.setReconnectionInterval(Integer.parseInt(inter));
                }
            } catch (Exception e) {
                throw SeedException.createNew(MqttErrorCodes.MISCONFIGURED_MQTT_RECONNECTION).put("values",
                        EnumSet.allOf(MqttReconnectionMode.class));
            }
        }
        MqttConnectOptionsDefinition connectOptionsDefinition = new MqttConnectOptionsDefinition(
                clientConfiguration.subset(MQTT_OPTIONS));
        def.setConnectOptionsDefinition(connectOptionsDefinition);

        // Check ThreadPool Configuration
        def.setPoolDefinition(new MqttPoolDefinition(clientConfiguration.subset(POOL_PROPS)));

        mqttClientDefinitions.put(clientName, def);
    }
}

From source file:org.seedstack.mqtt.internal.MqttPluginTest.java

/**
 * Test method for//  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(expected = SeedException.class)
public void testInitWithoutMqttURI(@Mocked final Configuration configuration) {
    final String[] clients = { "client" };
    MqttPlugin plugin = new MqttPlugin();
    new Expectations() {
        {
            application.getConfiguration();
            result = configuration;

            configuration.subset(anyString);
            result = configuration;

            configuration.getStringArray(CONNECTION_CLIENTS);
            result = clients;
        }
    };

    plugin.init(initContext);

}

From source file:org.seedstack.mqtt.internal.MqttPluginTest.java

/**
 * Test method for/* w w w.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 testInitWithListenerWithoutClient(@Mocked final Configuration configuration) {
    final Collection<Class<?>> classes = new ArrayList<Class<?>>();
    classes.add(Listener1.class);
    MqttPlugin plugin = new MqttPlugin();
    new Expectations() {
        {
            application.getConfiguration();
            result = configuration;

            application.substituteWithConfiguration(anyString);
            result = null;

            configuration.subset(anyString);
            result = configuration;

            specs.get(any);
            result = classes;

        }
    };

    plugin.init(initContext);

}

From source file:org.seedstack.mqtt.internal.MqttPluginTest.java

/**
 * Test method for//  ww  w  .  ja v a2s .  co m
 * {@link org.seedstack.mqtt.internal.MqttPlugin#init(io.nuun.kernel.api.plugin.context.InitContext)}
 * .
 */
@Test(expected = SeedException.class)
public void testInitWithReconnectionModeError(@Mocked final Configuration configuration) {
    final String[] clients = { "clientOK1" };
    MqttPlugin plugin = new MqttPlugin();
    new Expectations() {
        {
            application.getConfiguration();
            result = configuration;

            configuration.subset(anyString);
            result = configuration;

            configuration.getStringArray(CONNECTION_CLIENTS);
            result = clients;

            configuration.getString(anyString);
            result = "xx";
        }
    };

    plugin.init(initContext);

}

From source file:org.seedstack.mqtt.internal.MqttPluginTest.java

/**
 * Test method for//w  w  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 testInitWithoutReconnectionConfiguration(@Mocked final Configuration configuration) {
    final String clientName = "clientOK1";
    final String[] clients = { clientName };
    final Collection<Class<?>> classes = new ArrayList<Class<?>>();
    MqttPlugin plugin = new MqttPlugin();
    final String defaultConfigString = "xx";
    new Expectations() {
        {
            application.getConfiguration();
            result = configuration;

            configuration.subset(MQTT_PLUGIN_CONFIGURATION_PREFIX);
            result = configuration;

            configuration.isEmpty();
            result = true;

            configuration.getStringArray(CONNECTION_CLIENTS);
            result = clients;

            configuration.getString(anyString);
            result = defaultConfigString;

            specs.get(any);
            result = classes;

        }
    };

    new MockUp<MqttClient>() {
        @Mock
        public void $init(String serverURI, String clientId) {
        }

    };

    plugin.init(initContext);

    MqttClientDefinition def = new MqttClientDefinition(defaultConfigString, defaultConfigString);
    ConcurrentHashMap<String, MqttClientDefinition> defs = Deencapsulation.getField(plugin,
            "mqttClientDefinitions");
    Assertions.assertThat(defs).isNotEmpty();
    MqttClientDefinition clientDef = defs.get(clientName);
    Assertions.assertThat(clientDef.getReconnectionInterval()).isEqualTo(def.getReconnectionInterval());
    Assertions.assertThat(clientDef.getReconnectionMode()).isEqualTo(def.getReconnectionMode());
}