commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Heger (Commented) (JIRA)" <>
Subject [jira] [Commented] (CONFIGURATION-467) Unable to persist CombinedConfiguration changes to the Filesystem.
Date Wed, 18 Jan 2012 21:10:39 GMT


Oliver Heger commented on CONFIGURATION-467:

The problem probably lies in the way CombinedConfiguration organizes its internal node structures:
the data from the contained configurations are combined to a logic node tree. If the child
configurations are hierarchical (e.g. like XMLConfiguration), their node structures are directly
incorporated in the combined tree. In this case updates of the nodes also affect the corresponding
child configurations.

However, in case of flat configurations (like PropertiesConfiguration), a new node structure
is created based on the data stored in the configuration. This structure is not connected
to the original configuration, so updates performed by the combined configuration do not affect
the child configurations.

There is currently no work-around I am aware of. CombinedConfiguration was originally more
intended to act as a view on multiple child configurations. It can detect changes on its children
and rebuilt itself, but it does not work the other way around. See also the description in
the user guide at
> Unable to persist CombinedConfiguration changes to the Filesystem.
> ------------------------------------------------------------------
>                 Key: CONFIGURATION-467
>                 URL:
>             Project: Commons Configuration
>          Issue Type: Improvement
>          Components: File reloading
>    Affects Versions: 1.6
>         Environment: Linux java
>            Reporter: raghutpk
>   Original Estimate: 24h
>  Remaining Estimate: 24h
> I use a config.xml file to load multiple Configuration Sources 
> Ex: 
> {code:xml}
> <configuration>
>   <header/>
>   <override>
>     <properties fileName=""/>
>     <properties fileName=""/>
>     <xml fileName="gui.xml"/>
>   </override>
>   <additional/>
> </configuration>
> {code}
> I load the config.xml and subsequently all the properties in my app to a CombinedConfiguration
Object as follows :
> {code:java}
> DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
> builder.setFile(new File("config.xml"));
> CombinedConfiguration combinedConfig = builder.getConfiguration(true);
> {code}
> Now I am trying to expose all the properties from all configuration sources using a mbean
and at runtime trying to update the Properties. I wouldn't know though, from which source
the properties came from as the CombinedConfiguration takes care of that abstraction, but
when I do the following it doesn't change the persistance store(in this case the files on
the Filesystem).
> /*combinedConfig.setProperty(Key, updatedValue);*/
> There is no save method on the combinedConfiguration class so that the persistance store
gets updated.
> There is a save method in PropertiesConfiguration class or XMLConfiguration class, but
I wouldn't know at runtime or inside the code which file or configuration source the Key belongs
to, so even If I add a config-name to each source there is no use. 
> SO wouldn't the setProperty help me update the value of the Configuration and persist
it back to the original file. I don't know it is a bug or a feature it doesn't support or
there is a workaround in such scenarios. 
> Please advice.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message