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

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

Introduction

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

Prototype

public int getNumberOfConfigurations() 

Source Link

Document

Returns the number of configurations that are contained in this combined configuration.

Usage

From source file:com.netflix.config.util.ConfigurationUtils.java

/**
 * Gets all named sub-configuration from a configuration in a map. This method examines each sub-configuration
 * which is an instance of {@link ConcurrentCompositeConfiguration} or CombinedConfiguration and extract the 
 * named configurations out of them./*from ww  w .  j a va 2s.c om*/
 *  
 * @param conf Configuration to get all the named sub-configurations
 * @return map where key is the name of the sub-configuration and value is the sub-configuration
 */
public static Map<String, Configuration> getAllNamedConfiguration(Configuration conf) {
    List<Configuration> toProcess = new ArrayList<Configuration>();
    Map<String, Configuration> map = new HashMap<String, Configuration>();
    toProcess.add(conf);
    while (!toProcess.isEmpty()) {
        Configuration current = toProcess.remove(0);
        if (current instanceof ConcurrentCompositeConfiguration) {
            ConcurrentCompositeConfiguration composite = (ConcurrentCompositeConfiguration) current;
            for (String name : composite.getConfigurationNames()) {
                map.put(name, composite.getConfiguration(name));
            }
            for (Configuration c : composite.getConfigurations()) {
                toProcess.add(c);
            }
        } else if (current instanceof CombinedConfiguration) {
            CombinedConfiguration combined = (CombinedConfiguration) current;
            for (String name : (Set<String>) combined.getConfigurationNames()) {
                map.put(name, combined.getConfiguration(name));
            }
            for (int i = 0; i < combined.getNumberOfConfigurations(); i++) {
                toProcess.add(combined.getConfiguration(i));
            }
        }
    }
    return map;
}

From source file:com.netflix.config.util.ConfigurationUtils.java

/**
 * Convert CombinedConfiguration into {@link ConcurrentCompositeConfiguration} as the later has better performance
 * and thread safety. //  w  w w . j a v  a2  s .c o  m
 * 
 * @param config Configuration to be converted
 */
public static ConcurrentCompositeConfiguration convertToConcurrentCompositeConfiguration(
        CombinedConfiguration config) {
    ConcurrentCompositeConfiguration root = new ConcurrentCompositeConfiguration();
    IdentityHashMap<Configuration, String> reverseMap = new IdentityHashMap<Configuration, String>();
    for (String name : (Set<String>) config.getConfigurationNames()) {
        Configuration child = config.getConfiguration(name);
        reverseMap.put(child, name);
    }
    for (int i = 0; i < config.getNumberOfConfigurations(); i++) {
        Configuration child = config.getConfiguration(i);
        String name = reverseMap.get(child);
        if (child instanceof CombinedConfiguration) {
            CombinedConfiguration combinedConf = (CombinedConfiguration) child;
            ConcurrentCompositeConfiguration newConf = convertToConcurrentCompositeConfiguration(combinedConf);
            root.addConfiguration(newConf, name);
        } else {
            Configuration conf = new ConcurrentMapConfiguration(child);
            root.addConfiguration((AbstractConfiguration) conf, name);
        }
    }
    return root;
}