public class CompositeConfiguration extends AbstractConfiguration implements Cloneable
CompositeConfiguration
allows you to add multiple Configuration
objects to an aggregated configuration. If you add Configuration1, and then Configuration2,
any properties shared will mean that the value defined by Configuration1
will be returned. If Configuration1 doesn't have the property, then
Configuration2 will be checked. You can add multiple different types or the
same type of properties file.
When querying properties the order in which child configurations have been added is relevant. To deal with property updates, a so-called in-memory configuration is used. Per default, such a configuration is created automatically. All property writes target this special configuration. There are constructors which allow you to provide a specific in-memory configuration. If used that way, the in-memory configuration is always the last one in the list of child configurations. This means that for query operations all other configurations take precedence.
Alternatively it is possible to mark a child configuration as in-memory configuration when it is added. In this case the treatment of the in-memory configuration is slightly different: it remains in the list of child configurations at the position it was added, i.e. its priority for property queries can be defined by adding the child configurations in the correct order.
END_TOKEN, EVENT_ADD_PROPERTY, EVENT_CLEAR, EVENT_CLEAR_PROPERTY, EVENT_READ_PROPERTY, EVENT_SET_PROPERTY, START_TOKEN
Constructor and Description |
---|
CompositeConfiguration()
Creates an empty CompositeConfiguration object which can then
be added some other Configuration files
|
CompositeConfiguration(Collection<? extends Configuration> 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<? extends Configuration> configurations)
Creates a CompositeConfiguration with a specified in-memory
configuration, and then adds the given collection of configurations.
|
Modifier and Type | Method and Description |
---|---|
void |
addConfiguration(Configuration config)
Add a configuration.
|
void |
addConfiguration(Configuration config,
boolean asInMemory)
Adds a child configuration and optionally makes it the in-memory
configuration.
|
protected void |
addPropertyDirect(String key,
Object token)
Add this property to the inmemory Configuration.
|
void |
clear()
Removes all child configurations and reinitializes the in-memory
configuration.
|
protected void |
clearPropertyDirect(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<String> |
getKeys()
Get the list of the keys contained in the configuration.
|
Iterator<String> |
getKeys(String key)
Get the list of the keys contained in the configuration that match the
specified prefix.
|
List<Object> |
getList(String key,
List<?> defaultValue)
Get a List of strings associated with the given configuration key.
|
int |
getNumberOfConfigurations()
Return the number of configurations.
|
Object |
getProperty(String key)
Read property from underlying composite
|
Configuration |
getSource(String key)
Returns the configuration source, in which the specified key is defined.
|
String[] |
getStringArray(String key)
Get an array of strings associated with the given configuration key.
|
boolean |
isEmpty()
Check if the configuration is empty.
|
void |
removeConfiguration(Configuration config)
Remove a configuration.
|
void |
setDelimiterParsingDisabled(boolean delimiterParsingDisabled)
Sets a flag whether added values for string properties should be checked
for the list delimiter.
|
void |
setListDelimiter(char listDelimiter)
Sets the character that is used as list delimiter.
|
addErrorLogListener, addProperty, append, clearProperty, 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, getListDelimiter, getLogger, getLong, getLong, getLong, getProperties, getProperties, getShort, getShort, getShort, getString, getString, getSubstitutor, interpolate, interpolate, interpolatedConfiguration, interpolateHelper, isDelimiterParsingDisabled, isScalarValue, isThrowExceptionOnMissing, resolveContainerStore, setDefaultListDelimiter, setDelimiter, setLogger, setProperty, setThrowExceptionOnMissing, subset
addConfigurationListener, addErrorListener, clearConfigurationListeners, clearErrorListeners, createErrorEvent, createEvent, fireError, fireEvent, getConfigurationListeners, getErrorListeners, isDetailEvents, removeConfigurationListener, removeErrorListener, setDetailEvents
public CompositeConfiguration()
public CompositeConfiguration(Configuration inMemoryConfiguration)
CompositeConfiguration
. Note: Use this constructor if you want to
set a special type of in-memory configuration. If you have a
configuration which should act as both a child configuration and as
in-memory configuration, use
addConfiguration(Configuration, boolean)
with a value of
true instead.inMemoryConfiguration
- the in memory configuration to usepublic CompositeConfiguration(Collection<? extends Configuration> configurations)
configurations
- the collection of configurations to addpublic CompositeConfiguration(Configuration inMemoryConfiguration, Collection<? extends Configuration> configurations)
inMemoryConfiguration
- the in memory configuration to useconfigurations
- the collection of configurations to addCompositeConfiguration(Configuration)
public void addConfiguration(Configuration config)
config
- the configuration to addpublic void addConfiguration(Configuration config, boolean asInMemory)
config
- the configuration to be addedasInMemory
- true if this configuration becomes the new
in-memory configuration, false otherwisepublic void removeConfiguration(Configuration config)
config
- The configuration to removepublic int getNumberOfConfigurations()
public void clear()
clear
in interface Configuration
clear
in class AbstractConfiguration
protected void addPropertyDirect(String key, Object token)
addPropertyDirect
in class AbstractConfiguration
key
- The Key to add the property to.token
- The Value to add.public Object getProperty(String key)
getProperty
in interface Configuration
key
- key to use for mappingpublic Iterator<String> getKeys()
Configuration
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.getKeys
in interface Configuration
public Iterator<String> getKeys(String key)
AbstractConfiguration
db.user, db.pwd, db.url, window.xpos, window.ypos
,getKeys("db");
db.user, db.pwd, db.url
.getKeys("db");
will find the keys db
,
db.user
, or db.password
, but not the key
dbdriver
.getKeys
in interface Configuration
getKeys
in class AbstractConfiguration
key
- The prefix to test against.Configuration.getKeys()
public boolean isEmpty()
Configuration
isEmpty
in interface Configuration
true
if the configuration contains no property,
false
otherwise.protected void clearPropertyDirect(String key)
AbstractConfiguration
clearProperty()
after it has done some
preparations. It should be overridden in sub classes. This base
implementation is just left empty.clearPropertyDirect
in class AbstractConfiguration
key
- the key to be removedpublic boolean containsKey(String key)
Configuration
containsKey
in interface Configuration
key
- the key whose presence in this configuration is to be testedtrue
if the configuration contains a value for this
key, false
otherwisepublic List<Object> getList(String key, List<?> defaultValue)
Configuration
getList
in interface Configuration
getList
in class AbstractConfiguration
key
- The configuration key.defaultValue
- The default value.public String[] getStringArray(String key)
AbstractConfiguration
setListDelimiter()
method. If this is the case, the string
is split at these positions resulting in a property with multiple
values.getStringArray
in interface Configuration
getStringArray
in class AbstractConfiguration
key
- The configuration key.AbstractConfiguration.setListDelimiter(char)
,
AbstractConfiguration.setDelimiterParsingDisabled(boolean)
public Configuration getConfiguration(int index)
index
- The index of the configuration to retrievepublic Configuration getInMemoryConfiguration()
public Object clone()
clone
in class EventSource
public void setDelimiterParsingDisabled(boolean delimiterParsingDisabled)
setDelimiterParsingDisabled
in class AbstractConfiguration
delimiterParsingDisabled
- the new value of the flagpublic void setListDelimiter(char listDelimiter)
setListDelimiter
in class AbstractConfiguration
listDelimiter
- the new list delimiter characterpublic Configuration getSource(String key)
IllegalArgumentException
is thrown.
In this case the source configuration cannot be determined.key
- the key to be checkedIllegalArgumentException
- if the source configuration cannot be
determinedCopyright © 2001–2013 The Apache Software Foundation. All rights reserved.