[ 
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.

Reply via email to