<?xml version="1.0" encoding="ISO-8859-1" ?>
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<!-- Test configuration definition file that demonstrates complex initialization -->
<configuration>
  <header>
    <result delimiterParsingDisabled="true">
      <nodeCombiner config-class="org.apache.commons.configuration2.tree.OverrideCombiner"/>
      <expressionEngine config-class="org.apache.commons.configuration2.tree.xpath.XPathExpressionEngine"/>
    </result>
    <providers>
      <provider config-tag="test"
                config-class="org.apache.commons.configuration2.DefaultConfigurationBuilder$XMLConfigurationProvider"
                configurationClass="org.apache.commons.configuration2.TestDefaultConfigurationBuilder$ExtendedXMLConfiguration"/>
    </providers>
    <combiner>
      <override>
        <list-nodes>
          <node>table</node>
          <node>list</node>
        </list-nodes>
      </override>
    </combiner>
  </header>
  <system/>
  <properties fileName="test.properties" throwExceptionOnMissing="true"
    config-name="properties">
    <reloadingStrategy config-class="org.apache.commons.configuration2.reloading.FileChangedReloadingStrategy"
      refreshDelay="10000"/>
  </properties>
  <!-- Fetch the file name from a variable -->
  <test fileName="${test_file_xml}" config-name="xml">
    <expressionEngine config-class="org.apache.commons.configuration2.tree.DefaultExpressionEngine"
      propertyDelimiter="/" indexStart="[" indexEnd="]"/>
  </test>
  <additional>
    <xml config-name="combiner1" fileName="${test_file_combine}"/>  -->
    <xml config-name="combiner2" fileName="testcombine2.xml"/>
  </additional>
</configuration>