<?xml version="1.0"?>
<document>

  <properties>
    <author email="pete@kazmier.com">Pete Kazmier</author>
    <author email="mpoeschl@marmot.at">Martin Poeschl</author>
    <author email="jason@zenplex.com">Jason van Zyl</author>
    <author email="epugh@upstate.com">Eric Pugh</author>
    <author email="tobrien@discursive.com">Tim O'Brien</author>
    <title>Configuration</title>
  </properties>

  <body>
    <section name="Intro">
      <p>
      	Commons Configuration provides a generic configuration
      	interface which enables an application to read configuration
      	data from a variety of sources.  Commons Configuration
      	provides typed access to single, and multi-valued
      	configuration parameters as demonstrated by the following
      	code:

        <source><![CDATA[ Double double = Configuration.getDouble("some_double_value"); ]]></source>

      </p>
      <p>
		Configuration parameters may be loaded from the following
		sources:

        <ul>
          <li>Properties files</li>
          <li>XML documents</li>
          <li>JNDI</li>
          <li>JDBC Datasource</li>
        </ul>

        Different configuration sources can be mixed using a
		<code>ConfigurationFactory</code> and
		<code>CompositeConfiguration</code>.  Additional sources of
		configuration parameters can be created by using custom
		configuration objects.  This customization can be achieved by
		extending <code>AbstractConfiguration</code>.
      </p>
	  <p>
		The full Configuration API is available <a href="apidocs/org/apache/commons/configuration/Configuration.html#method_summary">here</a>.
	  </p>
    </section>  	
    
    <section name="Latest Release">
      <p>
        The latest release of Apache Jakarta Commons Configuration is available from <a href="downloads.html">here</a>. 
        It is also available from <a href="http://www.ibiblio.org/maven/commons-configuration/jars">IBiblio</a>.
        The <a href="changes-report.html">Changes Report</a> 
        explains all of the changes and bug fixes that have been made.  
      </p>
    </section>
    
    <section name="History">
      <p>
        Commons Configuration started as code in Apache JServ.  The
        JServ code was subsequently added to <a
        href="http://jakarta.apache.org/turbine">Jakarta Turbine</a>.
        After Jakarta Turbine, this configuration interface moved to
        <a href="http://jakarta.apache.org/velocity">Jakarta
        Velocity</a> and underwent various improvements.  After
        Velocity, this code was introduced to the <a
        href="http://jakarta.apache.org/commons">Jakarta Commons</a>
        as <code>ExtendedProperties</code>.  Configuration began life
        in the Commons as a Sandbox component, and was promoted to the
        Commons Proper in late 2003.
      </p>
    </section>
  </body>
</document>
