reloadStrategy does not work for files inside <additional> tag using
DefaultConfigurationBuilder
------------------------------------------------------------------------------------------------
Key: CONFIGURATION-460
URL: https://issues.apache.org/jira/browse/CONFIGURATION-460
Project: Commons Configuration
Issue Type: Bug
Components: File reloading
Affects Versions: 1.6
Environment: Linux x86_64
Reporter: Azfar Kazmi
In the configuration file that DefaultConfigurationBuilder reads to build a
CombinedConfiguration, it's possible to include configuration file either
inside <override> or <additional> xml elements.
Each such declaration, of a file, allows a realodStrategy to be specified (see
example below). It appears that the reload occurs only for the files inside
<override> and not for the ones inside <additional>.
Example:
<configuration>
<header>
<result forceReloadCheck="true">
<expressionEngine
config-class="org.apache.commons.configuration.tree.xpath.XPathExpressionEngine"/>
</result>
</header>
<override>
<properties fileName="user.properties" config-optional="true">
<reloadingStrategy refreshDelay="100"
config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"/>
</properties>
</override>
<additional>
<properties fileName="application.properties">
<reloadingStrategy refreshDelay="100"
config-class="org.apache.commons.configuration.reloading.FileChangedReloadingStrategy"/>
</properties>
</additional>
</configuration>
In above example, both user.properties and application.properties are supposed
to reload upon change. However, as tested by the following code, one
user.properties gets reloaded:
DefaultConfigurationBuilder dcb = new
DefaultConfigurationBuilder("example.xml");
Configuration conf = dcb.getConfiguration();
System.out.println("user: " + conf.getBoolean("user"));
System.out.println("application: " +
conf.getBoolean("application"));
System.out.println("Change files and then press to
continue...");
System.in.read();
System.out.println("user: " + conf.getBoolean("user"));
System.out.println("application: " +
conf.getBoolean("application"));
Output from above code:
user: true
application: true
Change files and then press to continue...
0 [main] INFO org.apache.commons.configuration.PropertiesConfiguration -
Reloading configuration. URL is file:<snipped>/user.properties
user: false
application: true
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira