##### Configuration

- Home
- Download
- Release History
- User's Guide
- Howtos (1.2 release)
- Runtime Dependencies
- Javadoc (current release)
- Javadoc (old releases)

##### Development

- Building
- Roadmap
- Issue Tracking
- SVN

##### Project Documentation

- About Commons Configuration
- Downloads
- Project Info
- Project Reports
- Development Process

##### Commons

- Home
- Components
- Sandbox
- Dormant
- Volunteering
- Contributing Patches
- Building Components
- Releasing Components
- Wiki

## 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);
    }