org.apache.commons.configuration
Class SubsetConfiguration

java.lang.Object
  extended byorg.apache.commons.configuration.event.EventSource
      extended byorg.apache.commons.configuration.AbstractConfiguration
          extended byorg.apache.commons.configuration.SubsetConfiguration
All Implemented Interfaces:
Configuration

public class SubsetConfiguration
extends AbstractConfiguration

A subset of another configuration. The new Configuration object contains every key from the parent Configuration that starts with prefix. The prefix is removed from the keys in the subset.

It is usually not necessary to use this class directly. Instead the Configuration.subset(String) method should be used, which will return a correctly initialized instance.

Version:
$Revision: 529531 $, $Date: 2007-04-17 10:52:41 +0200 (Di, 17 Apr 2007) $
Author:
Emmanuel Bourg

Field Summary
protected  String delimiter
          The prefix delimiter
protected  Configuration parent
          The parent configuration.
protected  String prefix
          The prefix used to select the properties.
 
Fields inherited from class org.apache.commons.configuration.AbstractConfiguration
END_TOKEN, EVENT_ADD_PROPERTY, EVENT_CLEAR, EVENT_CLEAR_PROPERTY, EVENT_READ_PROPERTY, EVENT_SET_PROPERTY, START_TOKEN
 
Constructor Summary
SubsetConfiguration(Configuration parent, String prefix)
          Create a subset of the specified configuration
SubsetConfiguration(Configuration parent, String prefix, String delimiter)
          Create a subset of the specified configuration
 
Method Summary
 void addPropertyDirect(String key, Object value)
          Adds a key/value pair to the Configuration.
 void clearProperty(String key)
          Removes the specified property from this configuration.
 boolean containsKey(String key)
          Check if the configuration contains the specified key.
protected  String getChildKey(String key)
          Return the key in the subset configuration associated to the specified key in the parent configuration.
 Iterator getKeys()
          Get the list of the keys contained in the configuration.
 Iterator getKeys(String prefix)
          Get the list of the keys contained in the configuration that match the specified prefix.
 char getListDelimiter()
          Returns the list delimiter.
 Configuration getParent()
          Return the parent configuation for this subset.
protected  String getParentKey(String key)
          Return the key in the parent configuration associated to the specified key in this subset.
 String getPrefix()
          Return the prefix used to select the properties in the parent configuration.
 Object getProperty(String key)
          Gets a property from the configuration.
protected  Object interpolate(Object base)
          Returns the interpolated value.
protected  String interpolate(String base)
          interpolate key names to handle ${key} stuff
 boolean isDelimiterParsingDisabled()
          Returns a flag whether string properties should be checked for list delimiter characters.
 boolean isEmpty()
          Check if the configuration is empty.
 boolean isThrowExceptionOnMissing()
          Returns true if missing values throw Exceptions. The subset inherits this feature from its parent if it supports this feature.
 void setDelimiterParsingDisabled(boolean delimiterParsingDisabled)
          Sets a flag whether list parsing is disabled.
 void setListDelimiter(char delim)
          Sets the list delimiter.
 void setPrefix(String prefix)
          Set the prefix used to select the properties in the parent configuration.
 void setProperty(String key, Object value)
          Set a property, this will replace any previously set values.
 void setThrowExceptionOnMissing(boolean throwExceptionOnMissing)
          Allows to set the throwExceptionOnMissing flag. This flag controls the behavior of property getter methods that return objects if the requested property is missing. If the flag is set to false (which is the default value), these methods will return null. If set to true, they will throw a NoSuchElementException exception. Note that getter methods for primitive data types are not affected by this flag. Change the behaviour of the parent configuration if it supports this feature.
 Configuration subset(String prefix)
          Return a decorator Configuration containing every key from the current Configuration that starts with the specified prefix.
 
Methods inherited from class org.apache.commons.configuration.AbstractConfiguration
addErrorLogListener, addProperty, append, clear, clearPropertyDirect, copy, createInterpolator, getBigDecimal, getBigDecimal, getBigInteger, getBigInteger, getBoolean, getBoolean, getBoolean, getByte, getByte, getByte, getDefaultListDelimiter, getDelimiter, getDouble, getDouble, getDouble, getFloat, getFloat, getFloat, getInt, getInt, getInteger, getInterpolator, getList, getList, getLogger, getLong, getLong, getLong, getProperties, getProperties, getShort, getShort, getShort, getString, getString, getStringArray, getSubstitutor, interpolatedConfiguration, interpolateHelper, resolveContainerStore, setDefaultListDelimiter, setDelimiter, setLogger
 
Methods inherited from class org.apache.commons.configuration.event.EventSource
addConfigurationListener, addErrorListener, clearConfigurationListeners, clearErrorListeners, clone, createErrorEvent, createEvent, fireError, fireEvent, getConfigurationListeners, getErrorListeners, isDetailEvents, removeConfigurationListener, removeErrorListener, setDetailEvents
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

parent

protected Configuration parent
The parent configuration.


prefix

protected String prefix
The prefix used to select the properties.


delimiter

protected String delimiter
The prefix delimiter

Constructor Detail

SubsetConfiguration

public SubsetConfiguration(Configuration parent,
                           String prefix)
Create a subset of the specified configuration

Parameters:
parent - The parent configuration
prefix - The prefix used to select the properties

SubsetConfiguration

public SubsetConfiguration(Configuration parent,
                           String prefix,
                           String delimiter)
Create a subset of the specified configuration

Parameters:
parent - The parent configuration
prefix - The prefix used to select the properties
delimiter - The prefix delimiter
Method Detail

getParentKey

protected String getParentKey(String key)
Return the key in the parent configuration associated to the specified key in this subset.

Parameters:
key - The key in the subset.
Returns:
the key as to be used by the parent

getChildKey

protected String getChildKey(String key)
Return the key in the subset configuration associated to the specified key in the parent configuration.

Parameters:
key - The key in the parent configuration.
Returns:
the key in the context of this subset configuration

getParent

public Configuration getParent()
Return the parent configuation for this subset.

Returns:
the parent configuration

getPrefix

public String getPrefix()
Return the prefix used to select the properties in the parent configuration.

Returns:
the prefix used by this subset

setPrefix

public void setPrefix(String prefix)
Set the prefix used to select the properties in the parent configuration.

Parameters:
prefix - the prefix

subset

public Configuration subset(String prefix)
Description copied from interface: Configuration
Return a decorator Configuration containing every key from the current Configuration that starts with the specified prefix. The prefix is removed from the keys in the subset. For example, if the configuration contains the following properties:
    prefix.number = 1
    prefix.string = Apache
    prefixed.foo = bar
    prefix = Jakarta
the Configuration returned by subset("prefix") will contain the properties:
    number = 1
    string = Apache
    = Jakarta
(The key for the value "Jakarta" is an empty string)

Since the subset is a decorator and not a modified copy of the initial Configuration, any change made to the subset is available to the Configuration, and reciprocally.

Specified by:
subset in interface Configuration
Overrides:
subset in class AbstractConfiguration

isEmpty

public boolean isEmpty()
Description copied from interface: Configuration
Check if the configuration is empty.

Returns:
true if the configuration contains no property, false otherwise.

containsKey

public boolean containsKey(String key)
Description copied from interface: Configuration
Check if the configuration contains the specified key.

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

addPropertyDirect

public void addPropertyDirect(String key,
                              Object value)
Description copied from class: AbstractConfiguration
Adds a key/value pair to the Configuration. Override this method to provide write access to underlying Configuration store.

Specified by:
addPropertyDirect in class AbstractConfiguration
Parameters:
key - key to use for mapping
value - object to store

setProperty

public void setProperty(String key,
                        Object value)
Description copied from interface: Configuration
Set a property, this will replace any previously set values. Set values is implicitly a call to clearProperty(key), addProperty(key, value).

Specified by:
setProperty in interface Configuration
Overrides:
setProperty in class AbstractConfiguration

clearProperty

public void clearProperty(String key)
Description copied from class: AbstractConfiguration
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

getProperty

public Object getProperty(String key)
Description copied from interface: Configuration
Gets a property from the configuration. This is the most basic get method for retrieving values of properties. In a typical implementation of the Configuration interface the other get methods (that return specific data types) will internally make use of this method. On this level variable substitution is not yet performed. The returned object is an internal representation of the property value for the passed in key. It is owned by the Configuration object. So a caller should not modify this object. It cannot be guaranteed that this object will stay constant over time (i.e. further update operations on the configuration may change its internal state).

Parameters:
key - property to retrieve
Returns:
the value to which this configuration maps the specified key, or null if the configuration contains no mapping for this key.

getKeys

public Iterator getKeys(String prefix)
Description copied from interface: Configuration
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

getKeys

public Iterator getKeys()
Description copied from interface: Configuration
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.

Returns:
An Iterator.

interpolate

protected Object interpolate(Object base)
Description copied from class: AbstractConfiguration
Returns the interpolated value. Non String values are returned without change.

Overrides:
interpolate in class AbstractConfiguration
Parameters:
base - the value to interpolate
Returns:
returns the value with variables substituted

interpolate

protected String interpolate(String base)
Description copied from class: AbstractConfiguration
interpolate key names to handle ${key} stuff

Overrides:
interpolate in class AbstractConfiguration
Parameters:
base - string to interpolate
Returns:
returns the key name with the ${key} substituted

setThrowExceptionOnMissing

public void setThrowExceptionOnMissing(boolean throwExceptionOnMissing)
Allows to set the throwExceptionOnMissing flag. This flag controls the behavior of property getter methods that return objects if the requested property is missing. If the flag is set to false (which is the default value), these methods will return null. If set to true, they will throw a NoSuchElementException exception. Note that getter methods for primitive data types are not affected by this flag. Change the behaviour of the parent configuration if it supports this feature.

Overrides:
setThrowExceptionOnMissing in class AbstractConfiguration
Parameters:
throwExceptionOnMissing - The new value for the property

isThrowExceptionOnMissing

public boolean isThrowExceptionOnMissing()
Returns true if missing values throw Exceptions. The subset inherits this feature from its parent if it supports this feature.

Overrides:
isThrowExceptionOnMissing in class AbstractConfiguration
Returns:
true if missing values throw Exceptions

getListDelimiter

public char getListDelimiter()
Returns the list delimiter. This property will be fetched from the parent configuration if supported.

Overrides:
getListDelimiter in class AbstractConfiguration
Returns:
the list delimiter
Since:
1.4

setListDelimiter

public void setListDelimiter(char delim)
Sets the list delimiter. If the parent configuration supports this feature, the delimiter will be set at the parent.

Overrides:
setListDelimiter in class AbstractConfiguration
Parameters:
delim - the new list delimiter
Since:
1.4

isDelimiterParsingDisabled

public boolean isDelimiterParsingDisabled()
Returns a flag whether string properties should be checked for list delimiter characters. This implementation ensures that this flag is kept in sync with the parent configuration if this object supports this feature.

Overrides:
isDelimiterParsingDisabled in class AbstractConfiguration
Returns:
the delimiter parsing disabled flag
Since:
1.4

setDelimiterParsingDisabled

public void setDelimiterParsingDisabled(boolean delimiterParsingDisabled)
Sets a flag whether list parsing is disabled. This implementation will also set the flag at the parent configuration if this object supports this feature.

Overrides:
setDelimiterParsingDisabled in class AbstractConfiguration
Parameters:
delimiterParsingDisabled - the delimiter parsing disabled flag
Since:
1.4


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