##### 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

## About this document

This document describes the features of the Commons Configuration component starting with the very basics and up to the more advanced topics. If you read it in a linear way, you should get a sound understanding of the provided classes and the possibilities they offer. But you can also skip sections and jump directly to the topics you are most interested in.

Note that many features described in this guide are only available since the 1.3 release of Commons Configuration. If you are using a 1.2 version, have a look at the older Howtos documents, which specifically deal with this version.

## Table of contents

- Using Configuration

- Configuration Sources
- Mixing Configuration Sources
- The Configuration interface
- Threading issues

- Basic features and AbstractConfiguration

- Handling of missing properties
- List handling
- Variable Interpolation
- Customizing interpolation

- Properties files

- Using PropertiesConfiguration
- Includes
- Lists and arrays
- Saving
- Special Characters
- Layout Objects

- File-based Configurations

- Specifying the file
- Loading
- Saving
- Automatic Saving
- Automatic Reloading

- Hierarchical properties

- Accessing properties defined in XML documents
- Structured XML
- Accessing structured properties
- Adding new properties
- Escaping dot characters in XML tags

- Expression engines

- The default expression engine
- The XPATH expression engine

- Validation of XML configuration files
- Composite Configuration Details

- Setting Up Defaults
- Saving Changes

- Combined Configuration

- How it works
- Node combiners
- Constructing a CombinedConfiguration
- Dealing with changes

- Declaring and Creating Beans

- Basic Concepts
- An Example
- Extending the Basic Mechanism

- Using a Configuration Factory

- The configuration definition file
- Setting up a ConfigurationFactory
- Accessing properties

- Multiple configuration sources

- Overriding properties
- Optional configuration sources

- Union configuration
- Configuration definition file reference

- Setting further options
- Referencing system properties

- Using DefaultConfigurationBuilder

- Differences to ConfigurationFactory
- Enhancements of the configuration definition file
- An example
- Extending the configuration definition file format

- Multi-tenant Configurations

- MultiFileHierarchicalConfiguration
- DynamicCombinedConfiguration
- Sample Configuration
- PatternSubtreeConfigurationWrapper

- Configuration Events

- Configuration listeners
- An example
- Error listeners

- Utility classes and Tips and Tricks

- Copy a configuration
- Converting a flat configuration into a hierarchical one
- Converting between properties and configurations
- Interpolation of all variables
- Handling of runtime exceptions