<?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>
    <lookups>
      <lookup config-prefix="test"
              config-class="org.apache.commons.configuration2.TestDefaultConfigurationBuilder$TestLookup"/>
    </lookups>
    <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 -->
  <xml fileName="${test:test_file_xml}" config-name="xml">
    <expressionEngine config-class="org.apache.commons.configuration2.tree.DefaultExpressionEngine"
      propertyDelimiter="/" indexStart="[" indexEnd="]"/>
  </xml>
  <additional>
    <xml config-name="combiner1" fileName="${test:test_file_combine}"/>  -->
    <xml config-name="combiner2" fileName="testcombine2.xml"/>
  </additional>
</configuration>