Example usage for org.apache.commons.configuration CombinedConfiguration addConfiguration

List of usage examples for org.apache.commons.configuration CombinedConfiguration addConfiguration

Introduction

In this page you can find the example usage for org.apache.commons.configuration CombinedConfiguration addConfiguration.

Prototype

public void addConfiguration(AbstractConfiguration config) 

Source Link

Document

Adds a new configuration to this combined configuration.

Usage

From source file:com.appeligo.config.ConfigurationService.java

private static AbstractConfiguration createConfig(File envFile, File baseFile) {
    if (log.isInfoEnabled()) {
        log.info("Initiating configuration " + baseFile + " : " + envFile);
    }//w ww  .j  av a2 s. c om
    AbstractConfiguration envConfig = null;
    AbstractConfiguration baseConfig = null;
    if (envFile.isFile()) {
        try {
            if (envFile.getName().endsWith(".xml")) {
                if (log.isDebugEnabled()) {
                    log.debug("Creating xml config: " + envFile);
                }
                envConfig = new XMLConfiguration();
                ((XMLConfiguration) envConfig).setValidating(false);
                ((XMLConfiguration) envConfig).load(envFile);

            } else if (envFile.getName().endsWith(".properties")) {
                if (log.isDebugEnabled()) {
                    log.debug("Creating properties config: " + envFile);
                }
                envConfig = new PropertiesConfiguration(envFile);
            }
        } catch (ConfigurationException e) {
            if (log.isErrorEnabled()) {
                log.error("Cannot create AbstractConfiguration for: " + envFile, e);
            }
        }
    }
    if (baseFile.isFile()) {
        try {
            if (baseFile.getName().endsWith(".xml")) {
                if (log.isDebugEnabled()) {
                    log.debug("Creating xml config: " + baseFile);
                }
                baseConfig = new XMLConfiguration();
                ((XMLConfiguration) baseConfig).setValidating(false);
                ((XMLConfiguration) baseConfig).load(baseFile);

            } else if (baseFile.getName().endsWith(".properties")) {
                if (log.isDebugEnabled()) {
                    log.debug("Creating properties config: " + baseFile);
                }
                baseConfig = new PropertiesConfiguration(baseFile);
            }
        } catch (ConfigurationException e) {
            if (log.isErrorEnabled()) {
                log.error("Cannot create AbstractConfiguration for: " + baseFile, e);
            }
        }
    }

    if (envConfig != null && baseConfig != null) {
        //create a combined AbstractConfiguration
        if (log.isDebugEnabled()) {
            log.debug("Creating combined config: " + envFile + " -> " + baseFile);
        }
        CombinedConfiguration combined = new CombinedConfiguration();
        combined.addConfiguration(envConfig);
        combined.addConfiguration(baseConfig);
        return combined;

    } else if (envConfig != null) {
        return envConfig;

    } else {
        return baseConfig;
    }
}

From source file:com.nesscomputing.config.Config.java

/**
 * Creates a fixed configuration for the supplied {@link AbstractConfiguration} objects. Only key/value
 * pairs from these objects will be present in the final configuration.
 *
 * There is no implicit override from system properties.
 *///from   ww  w .j a  va  2  s  . c  o m
public static Config getFixedConfig(@Nullable final AbstractConfiguration... configs) {
    final CombinedConfiguration cc = new CombinedConfiguration(new OverrideCombiner());

    if (configs != null) {
        for (final AbstractConfiguration config : configs) {
            cc.addConfiguration(config);
        }
    }
    return new Config(cc);
}

From source file:com.nesscomputing.config.Config.java

/**
 * Create a new configuration object from an existing object using overrides. If no overrides are passed in, the same object is returned.
 *
 * the/*from  www  .  ja  v  a 2  s  .  c  om*/
 */
public static Config getOverriddenConfig(@Nonnull final Config config,
        @Nullable final AbstractConfiguration... overrideConfigurations) {
    if (overrideConfigurations == null || overrideConfigurations.length == 0) {
        return config;
    }

    final CombinedConfiguration cc = new CombinedConfiguration(new OverrideCombiner());

    int index = 0;
    final AbstractConfiguration first = config.config.getNumberOfConfigurations() > 0
            ? AbstractConfiguration.class.cast(config.config.getConfiguration(index)) // cast always succeeds, internally this returns cd.getConfiguration() which is AbstractConfiguration
            : null;

    // If the passed in configuration has a system config, add this as the very first one so
    // that system properties override still works.
    if (first != null && first.getClass() == SystemConfiguration.class) {
        cc.addConfiguration(first);
        index++;
    } else {
        // Otherwise, if any of the passed in configuration objects is a SystemConfiguration,
        // put that at the very beginning.
        for (AbstractConfiguration c : overrideConfigurations) {
            if (c.getClass() == SystemConfiguration.class) {
                cc.addConfiguration(c);
            }
        }
    }

    for (AbstractConfiguration c : overrideConfigurations) {
        if (c.getClass() != SystemConfiguration.class) {
            cc.addConfiguration(c); // Skip system configuration objects, they have been added earlier.
        }
    }

    // Finally, add the existing configuration elements at lowest priority.
    while (index < config.config.getNumberOfConfigurations()) {
        final AbstractConfiguration c = AbstractConfiguration.class
                .cast(config.config.getConfiguration(index++));
        if (c.getClass() != SystemConfiguration.class) {
            cc.addConfiguration(c);
        }
    }

    return new Config(cc);
}

From source file:com.nesscomputing.jdbc.C3P0DataSourceProvider.java

private Properties getProperties(final String suffix) {
    final CombinedConfiguration cc = new CombinedConfiguration(new OverrideCombiner());

    if (props != null) {
        // Allow setting of internal defaults by using "ds.xxx" and "pool.xxx" if a properties
        // object is present.
        cc.addConfiguration(
                new ImmutableConfiguration(ConfigurationConverter.getConfiguration(props).subset(suffix)));
    }//from   ww w  . j a  va  2s .co  m

    if (config != null) {
        cc.addConfiguration(config.getConfiguration(propertiesPrefix + "." + suffix));
        cc.addConfiguration(config.getConfiguration(DEFAULTS_PREFIX + "." + suffix));
    }

    return ConfigurationConverter.getProperties(cc);
}

From source file:com.comcast.viper.flume2storm.IntegrationTest.java

/**
 * Integration test with the test implementation of the Location Service and
 * the Connection API/*from  w w w. j a  v  a2 s . c o m*/
 * 
 * @throws Exception
 *           If anything went wrong
 */
// @Test
public void testTestImpl() throws Exception {
    // Base storm sink configuration
    BaseConfiguration sinkBaseConfig = new BaseConfiguration();
    sinkBaseConfig.addProperty(StormSinkConfiguration.LOCATION_SERVICE_FACTORY_CLASS,
            SimpleLocationServiceFactory.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.SERVICE_PROVIDER_SERIALIZATION_CLASS,
            SimpleServiceProviderSerialization.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.EVENT_SENDER_FACTORY_CLASS,
            SimpleEventSenderFactory.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.CONNECTION_PARAMETERS_FACTORY_CLASS,
            SimpleConnectionParametersFactory.class.getName());

    // First storm sink configuration
    BaseConfiguration sink1ConnectionParameters = new BaseConfiguration();
    sink1ConnectionParameters.addProperty(SimpleConnectionParameters.HOSTNAME, "host1");
    sink1ConnectionParameters.addProperty(SimpleConnectionParameters.PORT, 7001);
    CombinedConfiguration sink1Config = new CombinedConfiguration();
    sink1Config.addConfiguration(sinkBaseConfig);
    sink1Config.addConfiguration(sink1ConnectionParameters, "connectionParams",
            SimpleConnectionParametersFactory.CONFIG_BASE_NAME);
    config.addConfiguration(sink1Config, SINK1_CONFIG);

    // Second storm sink configuration
    BaseConfiguration sink2ConnectionParameters = new BaseConfiguration();
    sink2ConnectionParameters.addProperty(SimpleConnectionParameters.HOSTNAME, "host2");
    sink2ConnectionParameters.addProperty(SimpleConnectionParameters.PORT, 7002);
    CombinedConfiguration sink2Config = new CombinedConfiguration();
    sink2Config.addConfiguration(sinkBaseConfig);
    sink2Config.addConfiguration(sink2ConnectionParameters, "connectionParams",
            SimpleConnectionParametersFactory.CONFIG_BASE_NAME);
    config.addConfiguration(sink2Config, SINK2_CONFIG);

    // Flume-spout configuration
    BaseConfiguration flumeSpoutConfig = new BaseConfiguration();
    flumeSpoutConfig.addProperty(FlumeSpoutConfiguration.LOCATION_SERVICE_FACTORY_CLASS,
            SimpleLocationServiceFactory.class.getName());
    flumeSpoutConfig.addProperty(FlumeSpoutConfiguration.SERVICE_PROVIDER_SERIALIZATION_CLASS,
            SimpleServiceProviderSerialization.class.getName());
    flumeSpoutConfig.addProperty(FlumeSpoutConfiguration.EVENT_RECEPTOR_FACTORY_CLASS,
            SimpleEventReceptorFactory.class.getName());
    config.addConfiguration(flumeSpoutConfig, SPOUT_CONFIG);

    testAll();
}

From source file:com.aol.advertising.qiao.config.AgentXmlConfiguration.java

/**
 * Load configuration file and interpolate variables. Note that due to the
 * way Apache Commons Configuration treats property keys, user should avoid
 * using dot ('.') in the property key. Otherwise ACC may not substitute
 * some value if the variable contains valid element name(s).
 *
 * @param xmlConfigFile/*from  ww w.j  a va 2 s .c om*/
 * @param propConfigFiles
 * @return
 * @throws ConfigurationException
 */
protected HierarchicalConfiguration readConfigurationFiles(String xmlConfigFile, String propConfigFiles)
        throws ConfigurationException {
    try {
        // convert URI to URL
        URL[] prop_urls = null;
        URL xml_url = CommonUtils.uriToURL(xmlConfigFile);
        if (propConfigFiles != null) {
            String[] prop_files = propConfigFiles.split(",");
            prop_urls = new URL[prop_files.length];
            for (int i = 0; i < prop_files.length; i++) {
                prop_urls[i] = CommonUtils.uriToURL(prop_files[i]);
            }
        }

        // combine xml and properties configurations
        CombinedConfiguration combined_cfg = new CombinedConfiguration(new OverrideCombiner());

        XMLConfiguration cfg_xml = new XMLConfiguration();
        cfg_xml.setDelimiterParsingDisabled(true);
        cfg_xml.setAttributeSplittingDisabled(true);
        cfg_xml.load(xml_url);

        combined_cfg.addConfiguration(cfg_xml);

        if (prop_urls != null) {
            // properties in the earlier files take precedence if duplicate
            for (int i = 0; i < prop_urls.length; i++) {
                PropertiesConfiguration cfg_props = new PropertiesConfiguration();
                cfg_props.setDelimiterParsingDisabled(true);
                cfg_props.load(prop_urls[i]);

                combined_cfg.addConfiguration(cfg_props);

            }
        }

        HierarchicalConfiguration config = (HierarchicalConfiguration) combined_cfg.interpolatedConfiguration(); // !!! resolve variables

        return config;
    } catch (Exception e) {
        throw new ConfigurationException(e.getMessage(), e);
    }

}

From source file:com.comcast.viper.flume2storm.IntegrationTest.java

/**
 * Integration test with the Dynamic Location Service and the KryoNet
 * Connection API//from w  ww  . j a v a 2  s .c  o  m
 * 
 * @throws Exception
 *           If anything went wrong
 */
@Test
public void testDynamicLocationServiceWithKryoNet() throws Exception {
    //
    // Flume Configuration
    //

    // Base storm sink configuration
    BaseConfiguration sinkBaseConfig = new BaseConfiguration();
    sinkBaseConfig.addProperty(StormSinkConfiguration.LOCATION_SERVICE_FACTORY_CLASS,
            DynamicLocationServiceFactory.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.SERVICE_PROVIDER_SERIALIZATION_CLASS,
            KryoNetServiceProviderSerialization.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.EVENT_SENDER_FACTORY_CLASS,
            KryoNetEventSenderFactory.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.CONNECTION_PARAMETERS_FACTORY_CLASS,
            KryoNetConnectionParametersFactory.class.getName());

    // Location Service configuration
    BaseConfiguration locationServiceConfig = new BaseConfiguration();
    locationServiceConfig.addProperty(DynamicLocationServiceConfiguration.CONNECTION_STRING,
            // zkServer.getConnectString());
            "127.0.0.1:" + ZK_PORT);
    locationServiceConfig.addProperty(DynamicLocationServiceConfiguration.SESSION_TIMEOUT, 2000);
    locationServiceConfig.addProperty(DynamicLocationServiceConfiguration.CONNECTION_TIMEOUT, 500);
    locationServiceConfig.addProperty(DynamicLocationServiceConfiguration.RECONNECTION_DELAY, 1000);
    locationServiceConfig.addProperty(DynamicLocationServiceConfiguration.TERMINATION_TIMEOUT, 2000);
    locationServiceConfig.addProperty(DynamicLocationServiceConfiguration.BASE_PATH, "/unitTest");
    locationServiceConfig.addProperty(DynamicLocationServiceConfiguration.SERVICE_NAME, "ut");

    // First storm sink configuration
    BaseConfiguration sink1ConnectionParameters = new BaseConfiguration();
    sink1ConnectionParameters.addProperty(KryoNetConnectionParameters.ADDRESS,
            KryoNetConnectionParameters.ADDRESS_DEFAULT);
    sink1ConnectionParameters.addProperty(KryoNetConnectionParameters.PORT, TestUtils.getAvailablePort());
    CombinedConfiguration sink1Config = new CombinedConfiguration();
    sink1Config.addConfiguration(sinkBaseConfig);
    sink1Config.addConfiguration(sink1ConnectionParameters, "connectionParams",
            KryoNetConnectionParametersFactory.CONFIG_BASE_NAME);
    sink1Config.addConfiguration(locationServiceConfig, "Location Service Configuration",
            DynamicLocationServiceFactory.CONFIG_BASE_NAME);
    config.addConfiguration(sink1Config, SINK1_CONFIG);

    // Second storm sink configuration
    BaseConfiguration sink2ConnectionParameters = new BaseConfiguration();
    sink2ConnectionParameters.addProperty(KryoNetConnectionParameters.ADDRESS,
            KryoNetConnectionParameters.ADDRESS_DEFAULT);
    sink2ConnectionParameters.addProperty(KryoNetConnectionParameters.PORT, TestUtils.getAvailablePort());
    CombinedConfiguration sink2Config = new CombinedConfiguration();
    sink2Config.addConfiguration(sinkBaseConfig);
    sink2Config.addConfiguration(sink2ConnectionParameters, "connectionParams",
            KryoNetConnectionParametersFactory.CONFIG_BASE_NAME);
    sink2Config.addConfiguration(locationServiceConfig, "Location Service Configuration",
            DynamicLocationServiceFactory.CONFIG_BASE_NAME);
    config.addConfiguration(sink2Config, SINK2_CONFIG);

    //
    // Storm Configuration
    //

    // Global KryoNet configuration
    MapConfiguration kryoConfig = new MapConfiguration(new HashMap<String, Object>());
    kryoConfig.addProperty(KryoNetParameters.CONNECTION_TIMEOUT, 500);
    kryoConfig.addProperty(KryoNetParameters.RECONNECTION_DELAY, 1000);
    kryoConfig.addProperty(KryoNetParameters.TERMINATION_TO, 2000);

    // Flume-spout base configuration
    CombinedConfiguration flumeSpoutBaseConfig = new CombinedConfiguration();
    flumeSpoutBaseConfig.addProperty(FlumeSpoutConfiguration.LOCATION_SERVICE_FACTORY_CLASS,
            DynamicLocationServiceFactory.class.getName());
    flumeSpoutBaseConfig.addProperty(FlumeSpoutConfiguration.SERVICE_PROVIDER_SERIALIZATION_CLASS,
            KryoNetServiceProviderSerialization.class.getName());
    flumeSpoutBaseConfig.addProperty(FlumeSpoutConfiguration.EVENT_RECEPTOR_FACTORY_CLASS,
            KryoNetEventReceptorFactory.class.getName());

    // Final flume-spout configuration
    CombinedConfiguration flumeSpoutConfig = new CombinedConfiguration();
    flumeSpoutConfig.addConfiguration(flumeSpoutBaseConfig);
    flumeSpoutConfig.addConfiguration(kryoConfig, "Kryo Configuration", KryoNetParameters.CONFIG_BASE_NAME);
    flumeSpoutConfig.addConfiguration(locationServiceConfig, "Location Service Configuration",
            DynamicLocationServiceFactory.CONFIG_BASE_NAME);
    config.addConfiguration(flumeSpoutConfig, SPOUT_CONFIG);
    testAll();
}

From source file:com.comcast.viper.flume2storm.IntegrationTest.java

/**
 * Integration test with the Dynamic Location Service and the KryoNet
 * Connection API//from   w w  w  .j  a  v  a 2s  .  c  o  m
 * 
 * @throws Exception
 *           If anything went wrong
 */
@Test
public void staticLocationService_KryoNet() throws Exception {
    //
    // Flume Configuration
    //

    // Base storm sink configuration
    BaseConfiguration sinkBaseConfig = new BaseConfiguration();
    sinkBaseConfig.addProperty(StormSinkConfiguration.LOCATION_SERVICE_FACTORY_CLASS,
            StaticLocationServiceFactory.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.SERVICE_PROVIDER_SERIALIZATION_CLASS,
            KryoNetServiceProviderSerialization.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.EVENT_SENDER_FACTORY_CLASS,
            KryoNetEventSenderFactory.class.getName());
    sinkBaseConfig.addProperty(StormSinkConfiguration.CONNECTION_PARAMETERS_FACTORY_CLASS,
            KryoNetConnectionParametersFactory.class.getName());

    // Location Service configuration
    BaseConfiguration flumeLocationServiceConfig = new BaseConfiguration();
    flumeLocationServiceConfig.addProperty(StaticLocationServiceConfiguration.CONFIGURATION_LOADER_CLASS,
            KryoNetServiceProvidersLoader.class.getName());

    // First storm sink configuration
    int sink1Port = TestUtils.getAvailablePort();
    BaseConfiguration sink1ConnectionParameters = new BaseConfiguration();
    sink1ConnectionParameters.addProperty(KryoNetConnectionParameters.ADDRESS,
            KryoNetConnectionParameters.ADDRESS_DEFAULT);
    sink1ConnectionParameters.addProperty(KryoNetConnectionParameters.PORT, sink1Port);
    CombinedConfiguration sink1Config = new CombinedConfiguration();
    sink1Config.addConfiguration(sinkBaseConfig);
    sink1Config.addConfiguration(sink1ConnectionParameters, "connectionParams",
            KryoNetConnectionParametersFactory.CONFIG_BASE_NAME);
    sink1Config.addConfiguration(flumeLocationServiceConfig, "Location Service Configuration",
            StaticLocationServiceFactory.CONFIG_BASE_NAME);
    config.addConfiguration(sink1Config, SINK1_CONFIG);

    // Second storm sink configuration
    int sink2Port = TestUtils.getAvailablePort();
    BaseConfiguration sink2ConnectionParameters = new BaseConfiguration();
    sink2ConnectionParameters.addProperty(KryoNetConnectionParameters.ADDRESS,
            KryoNetConnectionParameters.ADDRESS_DEFAULT);
    sink2ConnectionParameters.addProperty(KryoNetConnectionParameters.PORT, sink2Port);
    CombinedConfiguration sink2Config = new CombinedConfiguration();
    sink2Config.addConfiguration(sinkBaseConfig);
    sink2Config.addConfiguration(sink2ConnectionParameters, "connectionParams",
            KryoNetConnectionParametersFactory.CONFIG_BASE_NAME);
    sink2Config.addConfiguration(flumeLocationServiceConfig, "Location Service Configuration",
            StaticLocationServiceFactory.CONFIG_BASE_NAME);
    config.addConfiguration(sink2Config, SINK2_CONFIG);

    //
    // Storm Configuration
    //

    String sp1Id = "sp1Id";
    String sp2Id = "sp2Id";
    BaseConfiguration stormLocationServiceBaseConfig = new BaseConfiguration();
    stormLocationServiceBaseConfig.addProperty(StaticLocationServiceConfiguration.CONFIGURATION_LOADER_CLASS,
            KryoNetServiceProvidersLoader.class.getName());
    stormLocationServiceBaseConfig.addProperty(StaticLocationServiceConfiguration.SERVICE_PROVIDER_LIST,
            StringUtils.join(sp1Id, StaticLocationServiceConfiguration.SERVICE_PROVIDER_LIST_SEPARATOR, sp2Id));
    BaseConfiguration stormLocationServiceSink1Config = new BaseConfiguration();
    stormLocationServiceSink1Config.addProperty(KryoNetConnectionParameters.ADDRESS,
            KryoNetConnectionParameters.ADDRESS_DEFAULT);
    stormLocationServiceSink1Config.addProperty(KryoNetConnectionParameters.PORT, sink1Port);
    BaseConfiguration stormLocationServiceSink2Config = new BaseConfiguration();
    stormLocationServiceSink2Config.addProperty(KryoNetConnectionParameters.ADDRESS,
            KryoNetConnectionParameters.ADDRESS_DEFAULT);
    stormLocationServiceSink2Config.addProperty(KryoNetConnectionParameters.PORT, sink2Port);
    CombinedConfiguration stormLocationServiceConfig = new CombinedConfiguration();
    stormLocationServiceConfig.addConfiguration(stormLocationServiceBaseConfig);
    stormLocationServiceConfig.addConfiguration(stormLocationServiceSink1Config, "sink1",
            StringUtils.join(StaticLocationServiceConfiguration.SERVICE_PROVIDER_BASE_DEFAULT, ".", sp1Id));
    stormLocationServiceConfig.addConfiguration(stormLocationServiceSink2Config, "sink2",
            StringUtils.join(StaticLocationServiceConfiguration.SERVICE_PROVIDER_BASE_DEFAULT, ".", sp2Id));

    // Global KryoNet configuration
    MapConfiguration kryoConfig = new MapConfiguration(new HashMap<String, Object>());
    kryoConfig.addProperty(KryoNetParameters.CONNECTION_TIMEOUT, 500);
    kryoConfig.addProperty(KryoNetParameters.RECONNECTION_DELAY, 1000);
    kryoConfig.addProperty(KryoNetParameters.TERMINATION_TO, 2000);

    // Flume-spout base configuration
    CombinedConfiguration flumeSpoutBaseConfig = new CombinedConfiguration();
    flumeSpoutBaseConfig.addProperty(FlumeSpoutConfiguration.LOCATION_SERVICE_FACTORY_CLASS,
            StaticLocationServiceFactory.class.getName());
    flumeSpoutBaseConfig.addProperty(FlumeSpoutConfiguration.SERVICE_PROVIDER_SERIALIZATION_CLASS,
            KryoNetServiceProviderSerialization.class.getName());
    flumeSpoutBaseConfig.addProperty(FlumeSpoutConfiguration.EVENT_RECEPTOR_FACTORY_CLASS,
            KryoNetEventReceptorFactory.class.getName());

    // Final flume-spout configuration
    CombinedConfiguration flumeSpoutConfig = new CombinedConfiguration();
    flumeSpoutConfig.addConfiguration(flumeSpoutBaseConfig);
    flumeSpoutConfig.addConfiguration(kryoConfig, "Kryo Configuration", KryoNetParameters.CONFIG_BASE_NAME);
    flumeSpoutConfig.addConfiguration(stormLocationServiceConfig, "Location Service Configuration",
            StaticLocationServiceFactory.CONFIG_BASE_NAME);
    config.addConfiguration(flumeSpoutConfig, SPOUT_CONFIG);

    testAll();
}

From source file:de.uni_rostock.goodod.tools.Configuration.java

private HierarchicalConfiguration readTestConfig(File testFile)
        throws ConfigurationException, FileNotFoundException, IOException {
    HierarchicalConfiguration finalConf = null;
    CombinedConfiguration mergedConf = null;
    HierarchicalConfiguration loadedConf = null;
    if (isXMLConfig(testFile)) {
        loadedConf = new XMLPropertyListConfiguration(testFile);
    } else {// w w w  .  ja  va 2 s  .c  o m
        loadedConf = new PropertyListConfiguration(testFile);
    }

    /*
     * Some compatibility magic: Our initial version had very specific uses and according configuration wording.
     * We want to be more generic, so we re-route some information in the configs.
     */

    HierarchicalConfiguration groupsConf = (HierarchicalConfiguration) loadedConf
            .getProperty("groupOntologies");
    if (null == loadedConf.getProperty("studentOntologies") && (null != groupsConf)) {
        HierarchicalConfiguration cfg = new HierarchicalConfiguration();
        mergedConf = new CombinedConfiguration(new OverrideCombiner());
        cfg.setProperty("studentOntologies", groupsConf);
        mergedConf.addConfiguration(cfg);
        mergedConf.addConfiguration(loadedConf);
        finalConf = mergedConf;
    } else {
        finalConf = loadedConf;
    }
    return finalConf;

}

From source file:org.ambraproject.configuration.ConfigurationStore.java

/**
 * Iterate over all the resources of the given name and add them to our root
 * configuration.//  www . j a  v  a  2s  . c  o  m
 * @param root the root configuration to add to
 * @param resource the resource to add
 * @throws ConfigurationException on an error in adding the new config
 */
public static void addResources(CombinedConfiguration root, String resource) throws ConfigurationException {
    Class<?> klass = ConfigurationStore.class;
    if (resource.startsWith("/")) {
        root.addConfiguration(getConfigurationFromUrl(klass.getResource(resource)));
        log.info("Added resource '" + resource + "' to configuration");
    } else {
        try {
            Enumeration<URL> rs = klass.getClassLoader().getResources(resource);
            while (rs.hasMoreElements()) {
                URL resourceUrl = rs.nextElement();
                root.addConfiguration(getConfigurationFromUrl(resourceUrl));
                log.info("Added resource '" + resourceUrl + "' from path '" + resource + "' to configuration");
            }
        } catch (IOException ioe) {
            throw new Error("Unexpected error loading resources", ioe);
        }
    }
}