## org.apache.commons.configuration
Class CompositeConfiguration

    java.lang.Object
      org.apache.commons.configuration.event.EventSource
          org.apache.commons.configuration.AbstractConfiguration
              org.apache.commons.configuration.CompositeConfiguration

All Implemented Interfaces:
  Cloneable, Configuration

    public class CompositeConfiguration

extends AbstractConfiguration
implements Cloneable

This Configuration class allows you to add multiple different types of Configuration to this CompositeConfiguration. If you add Configuration1, and then Configuration2, any properties shared will mean that Configuration1 will be returned. You can add multiple different types or the same type of properties file. If Configuration1 doesn't have the property, then Configuration2 will be checked.

Version:
  $Id: CompositeConfiguration.java 439648 2006-09-02 20:42:10Z oheger $
Author:
  Eric Pugh, Henning P. Schmiedehausen

Field Summary

Fields inherited from class org.apache.commons.configuration.AbstractConfiguration
`END_TOKEN, EVENT_ADD_PROPERTY, EVENT_CLEAR, EVENT_CLEAR_PROPERTY, EVENT_SET_PROPERTY, START_TOKEN`

Constructor Summary
`CompositeConfiguration()` Creates an empty CompositeConfiguration object which can then be added some other Configuration files
`CompositeConfiguration(Collection configurations)` Create a CompositeConfiguration with an empty in memory configuration and adds the collection of configurations specified.
`CompositeConfiguration(Configuration inMemoryConfiguration)` Creates a CompositeConfiguration object with a specified in memory configuration.
`CompositeConfiguration(Configuration inMemoryConfiguration, Collection configurations)` Creates a CompositeConfiguration with a specified in memory configuration, and then adds the given collection of configurations.

Method Summary
`void` `addConfiguration(Configuration config)` Add a configuration.
`protected void` `addPropertyDirect(String key, Object token)` Add this property to the inmemory Configuration.
`void` `clear()` Remove all configuration reinitialize the in memory configuration.
`void` `clearProperty(String key)` Removes the specified property from this configuration.
`Object` `clone()` Returns a copy of this object.
`boolean` `containsKey(String key)` Check if the configuration contains the specified key.
`Configuration` `getConfiguration(int index)` Return the configuration at the specified index.
`Configuration` `getInMemoryConfiguration()` Returns the "in memory configuration".

`Iterator`

`getKeys()`
Get the list of the keys contained in the configuration. The returned iterator can be used to obtain all defined keys. Note that the exact behavior of the iterator's `remove()` method is specific to a concrete implementation. It may remove the corresponding property from the configuration, but this is not guaranteed. In any case it is no replacement for calling ``Configuration.clearProperty(String)`` for this property. So it is highly recommended to avoid using the iterator's `remove()` method.

`Iterator` `getKeys(String key)` Get the list of the keys contained in the configuration that match the specified prefix.
`List` `getList(String key, List defaultValue)` Get a List of strings associated with the given configuration key. If the key doesn't map to an existing object, the default value is returned.
`int` `getNumberOfConfigurations()` Return the number of configurations.
`Object` `getProperty(String key)` Read property from underlying composite
`String[]` `getStringArray(String key)` Get an array of strings associated with the given configuration key. If the key doesn't map to an existing object an empty array is returned
`boolean` `isEmpty()` Check if the configuration is empty.
`void` `removeConfiguration(Configuration config)` Remove a configuration.

Methods inherited from class org.apache.commons.configuration.AbstractConfiguration

`addProperty, clearPropertyDirect, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getDefaultListDelimiter, getDelimiter, getDouble, getDouble, getDouble, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getList, getListDelimiter, getLong, getLong, getLong, getProperties, getProperties, getShort, getShort, getShort, getString, getString, interpolate, interpolate, interpolateHelper, isDelimiterParsingDisabled, isThrowExceptionOnMissing, resolveContainerStore, setDefaultListDelimiter, setDelimiter, setDelimiterParsingDisabled, setListDelimiter, setProperty, setThrowExceptionOnMissing, subset`

Methods inherited from class org.apache.commons.configuration.event.EventSource
`addConfigurationListener, clearConfigurationListeners, createEvent, fireEvent, getConfigurationListeners, isDetailEvents, removeConfigurationListener, setDetailEvents`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### CompositeConfiguration

    public CompositeConfiguration()

  Creates an empty CompositeConfiguration object which can then be added some other Configuration files

### CompositeConfiguration

    public CompositeConfiguration(Configuration inMemoryConfiguration)

  Creates a CompositeConfiguration object with a specified in memory configuration. This configuration will store any changes made to the CompositeConfiguration.

  Parameters:
    `inMemoryConfiguration` - the in memory configuration to use

### CompositeConfiguration

    public CompositeConfiguration(Collection configurations)

  Create a CompositeConfiguration with an empty in memory configuration and adds the collection of configurations specified.

  Parameters:
    `configurations` - the collection of configurations to add

### CompositeConfiguration

    public CompositeConfiguration(Configuration inMemoryConfiguration,
                                  Collection configurations)

  Creates a CompositeConfiguration with a specified in memory configuration, and then adds the given collection of configurations.

  Parameters:
    `inMemoryConfiguration` - the in memory configuration to use
    `configurations` - the collection of configurations to add

Method Detail

### addConfiguration

    public void addConfiguration(Configuration config)

  Add a configuration.

  Parameters:
    `config` - the configuration to add

### removeConfiguration

    public void removeConfiguration(Configuration config)

  Remove a configuration. The in memory configuration cannot be removed.

  Parameters:
    `config` - The configuration to remove

### getNumberOfConfigurations

    public int getNumberOfConfigurations()

  Return the number of configurations.

  Returns:
    the number of configuration

### clear

    public void clear()

  Remove all configuration reinitialize the in memory configuration.

  Specified by:
    `clear` in interface `Configuration`
  Overrides:
    `clear` in class `AbstractConfiguration`

### addPropertyDirect

    protected void addPropertyDirect(String key,
                                     Object token)

  Add this property to the inmemory Configuration.

  Specified by:
    `addPropertyDirect` in class `AbstractConfiguration`
  Parameters:
    `key` - The Key to add the property to.
    `token` - The Value to add.

### getProperty

    public Object getProperty(String key)

  Read property from underlying composite

  Specified by:
    `getProperty` in interface `Configuration`
  Parameters:
    `key` - key to use for mapping
  Returns:
    object associated with the given configuration key.

### getKeys

    public Iterator getKeys()

  Get the list of the keys contained in the configuration. The returned iterator can be used to obtain all defined keys. Note that the exact behavior of the iterator's `remove()` method is specific to a concrete implementation. It may remove the corresponding property from the configuration, but this is not guaranteed. In any case it is no replacement for calling ``Configuration.clearProperty(String)`` for this property. So it is highly recommended to avoid using the iterator's `remove()` method.

  Specified by:
    `getKeys` in interface `Configuration`
  Specified by:
    `getKeys` in class `AbstractConfiguration`
  Returns:
    An Iterator.

### getKeys

    public Iterator getKeys(String key)

  Get the list of the keys contained in the configuration that match the specified prefix.

  Specified by:
    `getKeys` in interface `Configuration`
  Overrides:
    `getKeys` in class `AbstractConfiguration`
  Parameters:
    `key` - The prefix to test against.
  Returns:
    An Iterator of keys that match the prefix.
  See Also:
    `Configuration.getKeys()`

### isEmpty

    public boolean isEmpty()

  Check if the configuration is empty.

  Specified by:
    `isEmpty` in interface `Configuration`
  Specified by:
    `isEmpty` in class `AbstractConfiguration`
  Returns:
    `true` if the configuration contains no property, `false` otherwise.

### clearProperty

    public void clearProperty(String key)

  Removes the specified property from this configuration. This implementation performs some preparations and then delegates to `clearPropertyDirect()`, which will do the real work.

  Specified by:
    `clearProperty` in interface `Configuration`
  Overrides:
    `clearProperty` in class `AbstractConfiguration`
  Parameters:
    `key` - the key to be removed

### containsKey

    public boolean containsKey(String key)

  Check if the configuration contains the specified key.

  Specified by:
    `containsKey` in interface `Configuration`
  Specified by:
    `containsKey` in class `AbstractConfiguration`
  Parameters:
    `key` - the key whose presence in this configuration is to be tested
  Returns:
    `true` if the configuration contains a value for this key, `false` otherwise

### getList

    public List getList(String key,
                        List defaultValue)

  Get a List of strings associated with the given configuration key. If the key doesn't map to an existing object, the default value is returned.

  Specified by:
    `getList` in interface `Configuration`
  Overrides:
    `getList` in class `AbstractConfiguration`
  Parameters:
    `key` - The configuration key.
    `defaultValue` - The default value.
  Returns:
    The associated List of strings.

### getStringArray

    public String[] getStringArray(String key)

  Get an array of strings associated with the given configuration key. If the key doesn't map to an existing object an empty array is returned

  Specified by:
    `getStringArray` in interface `Configuration`
  Overrides:
    `getStringArray` in class `AbstractConfiguration`
  Parameters:
    `key` - The configuration key.
  Returns:
    The associated string array if key is found.

### getConfiguration

    public Configuration getConfiguration(int index)

  Return the configuration at the specified index.

  Parameters:
    `index` - The index of the configuration to retrieve
  Returns:
    the configuration at this index

### getInMemoryConfiguration

    public Configuration getInMemoryConfiguration()

  Returns the "in memory configuration". In this configuration changes are stored.

  Returns:
    the in memory configuration

### clone

    public Object clone()

  Returns a copy of this object. This implementation will create a deep clone, i.e. all configurations contained in this composite will also be cloned. This only works if all contained configurations support cloning; otherwise a runtime exception will be thrown. Registered event handlers won't get cloned.

  Overrides:
    `clone` in class `Object`
  Returns:
    the copy
  Since:
    1.3

Copyright © 2001-2006 The Apache Software Foundation. All Rights Reserved.