[
https://issues.apache.org/jira/browse/CONFIGURATION-368?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12680002#action_12680002
]
Oliver Heger commented on CONFIGURATION-368:
--------------------------------------------
The problem is the following: Though the SubnodeConfiguration detects that its
parent configuration was changed and it updates itself, it does not fire any
change event. Thus the hosting CombinedConfiguration does not recognize that
there are any changes; querying the CombinedConfiguration returns stale data.
A fix is to sent a change event whenever the SubnodeConfiguration detects a
change of its parent.
To get the test case pass I also had to slightly modify the node construction
process of CombinedConfiguration: In the tests {{FileAlwaysReloadingStrategy}}
is used as reloading strategy, which triggers a reload on every property
access. Obviously it is problematic if multiple reloads occur while the node
structure of a single child configuration of the CombinedConfiguration is
constructed. The new code makes sure that {{getRootNode()}} on the child
configuration is called only once.
> CombinedConfiguration: java.util.NoSuchElementException after reload of
> enclosed SubnodeConfiguration/XMLConfiguration
> ----------------------------------------------------------------------------------------------------------------------
>
> Key: CONFIGURATION-368
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-368
> Project: Commons Configuration
> Issue Type: Bug
> Components: File reloading
> Affects Versions: 1.6
> Reporter: Paul Meyer
> Assignee: Oliver Heger
> Attachments: TestCombinedConfigurationReload.java
>
>
> Steps to repeat:
> - create a XMLConfiguration based on a XML config file (xml file content
> e.g.: <config><foo><bar>0</bar></for></config>)
> - assign file reloading strategy to the XMLConfiguration
> - create a SubnodeConfiguration based on this XMLConfiguration (prefix e.g.:
> 'foor')
> - create a CombinedConfiguration
> - add the SubnodeConfiguration to this CombinedConfiguration
> - get a configuration value from the CombinedConfiguration (e.g. 'bar') ->
> OK, this works
> - touch the underlying xml configuration
> - try to get a configuration value from the CombinedConfiguration again (e.g.
> 'bar') -> java.util.NoSuchElementException
> See also attached TestCase.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.