[
https://issues.apache.org/jira/browse/CONFIGURATION-460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13084900#comment-13084900
]
Oliver Heger commented on CONFIGURATION-460:
--------------------------------------------
The problem is probably caused by the structure of the combined configuration
produced by {{DefaultConfigurationBuilder}}:
* There is one {{CombinedConfiguration}} which stores all properties. It is
configured by properties in the _result_ section.
* For configuration sources declared in the _additional_ section another
{{CombinedConfiguration}} is created and added to the first
{{CombinedConfiguration}}. This configuration, however, is currently not fully
initialized. Especially the _forceReloadCheck_ property is not set. Therefore
reloads are not detected.
A fix for this issue has to ensure that some of the properties defined for the
result configuration are also set for the configuration for the additional
sources.
> 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