CompositeConfiguration does not resolve referenced properties correctly
-----------------------------------------------------------------------
Key: CONFIGURATION-441
URL: https://issues.apache.org/jira/browse/CONFIGURATION-441
Project: Commons Configuration
Issue Type: Bug
Components: Interpolation
Affects Versions: 1.5
Environment: all
Reporter: Fabien Nisol
Imagine a composite configuration consisting of
config_x : configuration one
property.one=one
property.two=two
config_y : configuration two
property.one.ref=${property.one}
When getProperty() is called on a CompositeConfiguration, property
interpolation does not work if a property in config_x refers to a property in
config_y, in the example, property.one.ref won't translate into "one"
This seems to be caused by the getProperty() implementation of
CompositeConfiguration
{code:title=CompositeConfiguration.getProperty(String)}
/**
* Read property from underlying composite
*
* @param key key to use for mapping
*
* @return object associated with the given configuration key.
*/
public Object getProperty(String key)
{
Configuration firstMatchingConfiguration = null;
for (Iterator i = configList.iterator(); i.hasNext();)
{
Configuration config = (Configuration) i.next();
if (config.containsKey(key))
{
firstMatchingConfiguration = config;
break;
}
}
if (firstMatchingConfiguration != null)
{
return firstMatchingConfiguration.getProperty(key);
}
else
{
return null;
}
}
{code}
The methods finds the first configuration containing the key, and delegates the
call to that particular configuration.
A possible fix would be to try interpolation against every configuration until
an interpolation succeed.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira