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

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

Introduction

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

Prototype

String[] getStringArray(String key);

Source Link

Document

Get an array of strings associated with the given configuration key.

Usage

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.CryptoPlugin.java

@Override
public InitState init(InitContext initContext) {
    for (Plugin plugin : initContext.pluginsRequired()) {
        if (plugin instanceof ApplicationPlugin) {
            Configuration cryptoConfiguration = ((ApplicationPlugin) plugin).getApplication().getConfiguration()
                    .subset(CRYPTO_PLUGIN_PREFIX);
            EncryptionServiceFactory encryptionServiceFactory = new EncryptionServiceFactory();

            // Load configured keys
            String[] keys = cryptoConfiguration.getStringArray("keys");
            int keyCount = 0;

            if (keys != null) {
                keyCount = keys.length;//from   w w w .  ja va  2s  .  c o  m
                for (String key : keys) {
                    LOGGER.trace("Registering cryptographic key {}", key);
                    encryptionServices.put(key, encryptionServiceFactory.createEncryptionService(
                            encryptionServiceFactory.createKeyStoreDefinition(cryptoConfiguration, key),
                            encryptionServiceFactory.createCertificateDefinition(cryptoConfiguration, key)));
                }
            }

            // Load the master key
            LOGGER.trace("Registering master cryptographic key");
            encryptionServices.put(MASTER_KEY_NAME,
                    encryptionServiceFactory.createEncryptionService(
                            encryptionServiceFactory.createKeyStoreDefinition(cryptoConfiguration,
                                    MASTER_KEY_NAME),
                            encryptionServiceFactory.createCertificateDefinition(cryptoConfiguration,
                                    MASTER_KEY_NAME)));

            LOGGER.debug("Registered {} cryptographic key(s)", keyCount + 1);
        }
    }

    return InitState.INITIALIZED;
}

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  .jav  a  2 s.  c  o m*/
 *
 * @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 v  a2  s . c o m*/
@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   ww  w .  j a  v  a2  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);

}

From source file:org.seedstack.seed.crypto.internal.SslConfigFactory.java

/**
 * Extract an {@link SslConfig} from the Seed configuration.
 *
 * @return the SSL configuration//  w  w w  .  j a  v  a2s  .c om
 */
SslConfig createSslConfig(Configuration sslConfiguration) {
    SslConfig sslConfig = new SslConfig();

    String sslClientAuthMode = sslConfiguration.getString(CLIENT_AUTH_MODE);
    if (sslClientAuthMode != null && !sslClientAuthMode.equals("")
            && SslConfig.CLIENT_AUTH_MODES.contains(sslClientAuthMode)) {
        sslConfig.setClientAuthMode(sslClientAuthMode);
    } else {
        sslConfig.setClientAuthMode(NOT_REQUESTED);
    }

    if (sslConfiguration.containsKey(PROTOCOL)) {
        sslConfig.setProtocol(sslConfiguration.getString(PROTOCOL));
    } else {
        sslConfig.setProtocol(TLS);
    }
    sslConfig.setCiphers(sslConfiguration.getStringArray(CIPHERS));

    return sslConfig;
}

From source file:org.seedstack.seed.persistence.elasticsearch.internal.ElasticSearchPlugin.java

@Override
public InitState init(InitContext initContext) {
    ApplicationPlugin applicationPlugin = (ApplicationPlugin) initContext.pluginsRequired().iterator().next();
    Configuration elasticSearchConfiguration = applicationPlugin.getApplication().getConfiguration()
            .subset(ELASTIC_SEARCH_PLUGIN_CONFIGURATION_PREFIX);

    String[] elasticSearchClientNames = elasticSearchConfiguration.getStringArray("clients");
    if (elasticSearchClientNames != null && elasticSearchClientNames.length > 0) {
        for (String elasticSearchClientName : elasticSearchClientNames) {
            Configuration elasticSearchClientConfiguration = elasticSearchConfiguration
                    .subset("client." + elasticSearchClientName);

            Iterator<String> it = elasticSearchClientConfiguration.getKeys("property");
            Map<String, String> propertiesMap = new HashMap<String, String>();
            while (it.hasNext()) {
                String name = it.next();
                propertiesMap.put(name.substring(9), elasticSearchClientConfiguration.getString(name));
            }//from w w  w.j a va 2  s  . c  o  m

            if (!propertiesMap.containsKey("path.home")) {
                try {
                    propertiesMap.put("path.home",
                            applicationPlugin.getApplication().getStorageLocation(
                                    ElasticSearchPlugin.ELASTIC_SEARCH_STORAGE_ROOT + elasticSearchClientName)
                                    .getAbsolutePath());
                } catch (IOException e) {
                    throw new PluginException("Unable to create ElasticSearch home directory", e);
                }
            }

            String[] hosts = elasticSearchClientConfiguration.getStringArray("hosts");
            if (hosts == null || hosts.length == 0) {
                LOGGER.info("Creating ElasticSearch client {} on its local node", elasticSearchClientName);

                Node node = buildLocalNode(buildSettings(propertiesMap));
                elasticSearchLocalNodes.put(elasticSearchClientName, node);
                elasticSearchClients.put(elasticSearchClientName, node.client());
            } else {
                LOGGER.info("Creating ElasticSearch client {} for remote instance at {}",
                        elasticSearchClientName, Arrays.toString(hosts));

                elasticSearchClients.put(elasticSearchClientName,
                        buildRemoteClient(buildSettings(propertiesMap), hosts));
            }
        }

    } else {
        LOGGER.info("No ElasticSearch client configured, ElasticSearch support disabled");
    }

    return InitState.INITIALIZED;
}

From source file:org.seedstack.seed.persistence.jdbc.internal.DataSourceDefinitionFactory.java

public DataSourceDefinitionFactory(Configuration jdbcConfiguration) {
    this.jdbcConfiguration = jdbcConfiguration;
    this.dataSourceNames = jdbcConfiguration.getStringArray("datasources");
}

From source file:org.seedstack.seed.persistence.jpa.internal.EntityManagerFactoryFactory.java

EntityManagerFactory createEntityManagerFactory(String persistenceUnit, Properties properties,
        Configuration unitConfiguration, Application application, JdbcRegistry jdbcRegistry,
        Collection<Class<?>> scannedClasses) {
    InternalPersistenceUnitInfo unitInfo = new InternalPersistenceUnitInfo(persistenceUnit);

    String dataSourceName = unitConfiguration.getString("datasource");
    DataSource dataSource = jdbcRegistry.getDataSource(dataSourceName);
    if (dataSource == null) {
        throw SeedException.createNew(JpaErrorCode.DATA_SOURCE_NOT_FOUND)
                .put("unit", unitInfo.getPersistenceUnitName()).put("datasource", dataSourceName);
    }/*  ww  w  .ja  v  a  2  s.  c  o  m*/

    ArrayList<String> classNames = new ArrayList<String>();
    for (Class<?> scannedClass : scannedClasses) {
        if (unitInfo.getPersistenceUnitName()
                .equals(application.getConfiguration(scannedClass).getString("jpa-unit"))) {
            classNames.add(scannedClass.getName());
        }
    }
    if (classNames.isEmpty()) {
        throw SeedException.createNew(JpaErrorCode.NO_PERSISTED_CLASSES_IN_UNIT).put("unit",
                unitInfo.getPersistenceUnitName());
    }
    unitInfo.setManagedClassNames(classNames);

    if (unitConfiguration.getString("mapping-files") != null) {
        unitInfo.setMappingFileNames(Arrays.asList(unitConfiguration.getStringArray("mapping-files")));
    } else {
        unitInfo.setMappingFileNames(Collections.<String>emptyList());
    }

    unitInfo.setProperties(properties);

    if (unitConfiguration.getString("validation-mode") != null) {
        unitInfo.setValidationMode(ValidationMode.valueOf(unitConfiguration.getString("validation-mode")));
    }

    if (unitConfiguration.getString("shared-cache-mode") != null) {
        unitInfo.setSharedCacheMode(SharedCacheMode.valueOf(unitConfiguration.getString("shared-cache-mode")));
    }

    if (unitConfiguration.getString("transaction-type") != null) {
        unitInfo.setPersistenceUnitTransactionType(
                PersistenceUnitTransactionType.valueOf(unitConfiguration.getString("transaction-type")));
    }

    switch (unitInfo.getTransactionType()) {
    case RESOURCE_LOCAL:
        unitInfo.setNonJtaDataSource(dataSource);
        break;
    case JTA:
        unitInfo.setJtaDataSource(dataSource);
        break;
    }

    return createEntityManagerFactory(unitInfo, null);
}

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

@Override
@SuppressWarnings("unchecked")
public InitState init(InitContext initContext) {
    Configuration jpaConfiguration = null;
    TransactionPlugin transactionPlugin = null;
    JdbcRegistry jdbcRegistry = null;//w  ww  .ja v a 2 s  .  c  o m
    Application application = null;

    for (Plugin plugin : initContext.pluginsRequired()) {
        if (plugin instanceof ApplicationPlugin) {
            application = ((ApplicationPlugin) plugin).getApplication();
            jpaConfiguration = application.getConfiguration().subset(JpaPlugin.JPA_PLUGIN_CONFIGURATION_PREFIX);
        } else if (plugin instanceof TransactionPlugin) {
            transactionPlugin = (TransactionPlugin) plugin;
        } else if (plugin instanceof JdbcPlugin) {
            jdbcRegistry = (JdbcRegistry) plugin;
        }
    }

    if (jpaConfiguration == null) {
        throw new PluginException("Unable to find application plugin");
    }
    if (transactionPlugin == null) {
        throw new PluginException("Unable to find transaction plugin");
    }

    if (jdbcRegistry == null) {
        throw new PluginException("Unable to find jdbc plugin");
    }

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

    if (persistenceUnitNames == null || persistenceUnitNames.length == 0) {
        LOGGER.info("No JPA persistence unit configured, JPA support disabled");
        return InitState.INITIALIZED;
    }

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