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

       https://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>
    <fileSystem config-class="org.apache.commons.configuration2.VFSFileSystem"/>
    <providers>
      <provider config-tag="test"
                config-class="org.apache.commons.configuration2.DefaultConfigurationBuilder$FileConfigurationProvider"/>
    </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 -->
  <xml fileName="${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_file_combine}"/>  -->
    <xml config-name="combiner2" fileName="testcombine2.xml"/>
  </additional>
</configuration>