Composite Configuration Details

We will discuss how you can establish a "default" choice for your Composite Configuration as well as save changes made to your Composite Configuration.

Setting Up Defaults

Defaults are very simple. You can just add them as your last configuration object, either through the ConfigurationFactory or manually:

Configuration defaults = new PropertiesConfiguration(fileToDefaults);
Configuration otherProperties = new PropertiesConfiguration(fileToOtherProperties);
CompositeConfiguration cc = new CompositeConfiguration();
cc.addConfiguration(otherProperties);
cc.addDefaults(fileToDefaults);

Saving Changes

If you have a non static Configuration where you want to save changes made to a configuration, and you are using a CompositeConfiguration, then you will need to pass into the constructor of the CompositeConfiguration what Configuration to save the changes via.

PropertiesConfiguration saveConfiguration = new PropertiesConfiguration(fileToSaveChangesIn);
Configuration cc = new CompositeConfiguration(saveConfiguration);
cc.setProperty("newProperty","new value");

saveConfiguration.save();

Alternatively, you can just request the inMemoryConfiguration that stores the changes:

Configuration changes = myCompositeConfiguration.getInMemoryConfiguration();
DatabaseConfiguration config = new DatabaseConfiguration(datasource, "configuration", "key", "value");
for (Iterator i = changes.getKeys().iterator();i.hasNext()){
	String key = (key)i.next();
	Object value = changes.get(key);
	config.setProperty(key,value);
}