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

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

Introduction

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

Prototype

public CombinedConfiguration(NodeCombiner comb) 

Source Link

Document

Creates a new instance of CombinedConfiguration and initializes the combiner to be used.

Usage

From source file:com.mobiaware.util.PropertyManager.java

public PropertyManager(final String defaultFile, final String overrideFile) {
    _configuration = new CombinedConfiguration(new OverrideCombiner());
    loadProperties(defaultFile, overrideFile);
}

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.
 *///w  ww.  j a  v  a  2s. 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.opentable.config.ConfigFactory.java

private CombinedConfiguration loadOTStrategy() throws ConfigurationException {
    final String[] configPaths = StringUtils.stripAll(StringUtils.split(configName, ","));
    final CombinedConfiguration cc = new CombinedConfiguration(new OverrideCombiner());

    // All properties can be overridden by the System properties.
    cc.addConfiguration(new SystemConfiguration(), "systemProperties");
    LOG.info("Configuration source: SYSTEM");

    for (int i = configPaths.length - 1; i >= 0; i--) {
        final String configPath = configPaths[i];
        final AbstractConfiguration subConfig = configStrategy.load(configPath, configPath);
        if (subConfig == null) {
            throw new IllegalStateException(String.format("Configuration '%s' does not exist!", configPath));
        }/*from www .  j  a  v a2 s . c o  m*/
        cc.addConfiguration(subConfig, configPath);
        LOG.info("New-style configuration source: {}", configPath);
    }

    return cc;
}

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

CombinedConfiguration load() {
    // Allow foo/bar/baz and foo:bar:baz
    final String[] configNames = StringUtils.stripAll(StringUtils.split(configName, "/:"));

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

    // All properties can be overridden by the System properties.
    cc.addConfiguration(new SystemConfiguration(), "systemProperties");

    boolean loadedConfig = false;
    for (int i = 0; i < configNames.length; i++) {
        final String configFileName = configNames[configNames.length - i - 1];
        final String configFilePath = StringUtils.join(configNames, "/", 0, configNames.length - i);

        try {//ww  w  .j  ava 2  s  .co  m
            final AbstractConfiguration subConfig = configStrategy.load(configFileName, configFilePath);
            if (subConfig == null) {
                LOG.debug("Configuration '%s' does not exist, skipping", configFileName);
            } else {
                cc.addConfiguration(subConfig, configFileName);
                loadedConfig = true;
            }
        } catch (ConfigurationException ce) {
            LOG.error(String.format("While loading configuration '%s'", configFileName), ce);
        }
    }

    if (!loadedConfig && configNames.length > 0) {
        LOG.warn("Config name '%s' was given but no config file could be found, this looks fishy!", configName);
    }

    return cc;
}

From source file:com.opentable.config.ConfigFactory.java

private CombinedConfiguration loadNessStrategy() {
    // Allow foo/bar/baz and foo:bar:baz
    final String[] configNames = StringUtils.stripAll(StringUtils.split(configName, "/:"));

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

    // All properties can be overridden by the System properties.
    cc.addConfiguration(new SystemConfiguration(), "systemProperties");
    LOG.info("Configuration source: SYSTEM");

    boolean loadedConfig = false;
    for (int i = 0; i < configNames.length; i++) {
        final String configFileName = configNames[configNames.length - i - 1];
        final String configFilePath = StringUtils.join(configNames, "/", 0, configNames.length - i);

        try {//  ww  w  .j  a v a 2 s.c om
            final AbstractConfiguration subConfig = configStrategy.load(configFileName, configFilePath);
            if (subConfig == null) {
                throw new IllegalStateException(
                        String.format("Configuration '%s' does not exist!", configFileName));
            } else {
                cc.addConfiguration(subConfig, configFileName);
                LOG.info("Configuration source: {}", configFileName);
                loadedConfig = true;
            }
        } catch (ConfigurationException ce) {
            LOG.error(String.format("While loading configuration '%s'", configFileName), ce);
        }
    }

    if (!loadedConfig && configNames.length > 0) {
        throw new IllegalStateException(String.format(
                "Config name '%s' was given but no config file could be found, this looks fishy!", configName));
    }

    return cc;
}

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

/**
 * Return an empty configuration object without any properties set. This object is immutable so every
 * bean created from this config object will only have the defaults. This is mostly useful for testing.
 *//*from w w  w.  j  a v  a2s.c  o  m*/
public static Config getEmptyConfig() {
    return new Config(new CombinedConfiguration(new OverrideCombiner()));
}

From source file:com.nesscomputing.migratory.mojo.database.AbstractDatabaseMojo.java

@Override
public final void execute() throws MojoExecutionException, MojoFailureException {
    ConfigureLog4j.start(this);

    try {// w  w w .  j av  a 2  s  . c o m
        // Load the default manifest information.
        //
        final CombinedConfiguration config = new CombinedConfiguration(new OverrideCombiner());
        // everything can be overridden by system properties.
        config.addConfiguration(new SystemConfiguration(), "systemProperties");

        final String userHome = System.getProperty("user.home");
        if (userHome != null) {
            final File propertyFile = new File(userHome, MIGRATORY_PROPERTIES_FILE);
            if (propertyFile.exists() && propertyFile.canRead() && propertyFile.isFile()) {
                config.addConfiguration(new PropertiesConfiguration(propertyFile));
            }
        }

        final ConfigurationObjectFactory initialConfigFactory = new ConfigurationObjectFactory(
                new CommonsConfigSource(config));

        // Load the initial config from the local config file
        this.initialConfig = initialConfigFactory.build(InitialConfig.class);

        if (this.manifestUrl == null) {
            this.manifestUrl = initialConfig.getManifestUrl();
        }

        if (this.manifestName == null) {
            this.manifestName = initialConfig.getManifestName();
        }

        if (manifestUrl == null) {
            throw new MojoExecutionException(
                    "no manifest url found (did you create a .migratory.properties file?)");
        }

        if (manifestName == null) {
            throw new MojoExecutionException(
                    "no manifest name found (did you create a .migratory.properties file?)");
        }

        LOG.debug("Manifest URL:      %s", manifestUrl);
        LOG.debug("Manifest Name:     %s", manifestName);

        this.optionList = parseOptions(options);

        final StringBuilder location = new StringBuilder(manifestUrl);
        if (!this.manifestUrl.endsWith("/")) {
            location.append("/");
        }

        // After here, the manifestUrl is guaranteed to have a / at the end!
        this.manifestUrl = location.toString();

        location.append(manifestName);
        location.append(".manifest");

        LOG.debug("Manifest Location: %s", location);

        final MigratoryConfig initialMigratoryConfig = initialConfigFactory.build(MigratoryConfig.class);
        final LoaderManager initialLoaderManager = createLoaderManager(initialMigratoryConfig);
        final String contents = initialLoaderManager.loadFile(URI.create(location.toString()));

        if (contents == null) {
            throw new MojoExecutionException(
                    format("Could not load manifest '%s' from '%s'", manifestName, manifestUrl));
        }

        //
        // Now add the contents of the manifest file to the configuration creating the
        // final configuration for building the sql migration sets.
        //
        final PropertiesConfiguration pc = new PropertiesConfiguration();
        pc.load(new StringReader(contents));
        config.addConfiguration(pc);

        if (!validateConfiguration(config)) {
            throw new MojoExecutionException(
                    format("Manifest '%s' is not valid. Refusing to execute!", manifestName));
        }

        this.config = config;
        this.factory = new ConfigurationObjectFactory(new CommonsConfigSource(config));
        this.migratoryConfig = factory.build(MigratoryConfig.class);
        this.loaderManager = createLoaderManager(migratoryConfig);

        LOG.debug("Configuration: %s", this.config);

        this.rootDBIConfig = getDBIConfig(getPropertyName("default.root_"));

        stateCheck();

        doExecute();
    } catch (Exception e) {
        Throwables.propagateIfInstanceOf(e, MojoExecutionException.class);

        LOG.errorDebug(e, "While executing Mojo %s", this.getClass().getSimpleName());
        throw new MojoExecutionException("Failure:", e);
    } finally {
        ConfigureLog4j.stop(this);
    }
}

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(// ww  w  .  ja  v a2  s .  c  o  m
                new ImmutableConfiguration(ConfigurationConverter.getConfiguration(props).subset(suffix)));
    }

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

    return ConfigurationConverter.getProperties(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/* w  w  w . ja  v  a 2s. co m*/
 */
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.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  v a  2 s. co m
 * @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);
    }

}