commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Heger (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CONFIGURATION-599) CombinedConfiguration fails to merge correctly when one configuration only contains one property
Date Wed, 29 Apr 2015 20:03:06 GMT

    [ https://issues.apache.org/jira/browse/CONFIGURATION-599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14520101#comment-14520101
] 

Oliver Heger commented on CONFIGURATION-599:
--------------------------------------------

Are you sure you are using the correct node combiner for your use case? {{MergeCombiner}}
implements some pretty special merging rules; have a look at the Javadocs at http://commons.apache.org/proper/commons-configuration/apidocs/org/apache/commons/configuration2/tree/MergeCombiner.html.

Try UnionCombiner; this class always generates a union of the configurations involved. Examples
for the different combiners can be found in the user's guide: 
http://commons.apache.org/proper/commons-configuration/userguide/howto_combinedconfiguration.html#Node_combiners

> CombinedConfiguration fails to merge correctly when one configuration only contains one
property
> ------------------------------------------------------------------------------------------------
>
>                 Key: CONFIGURATION-599
>                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-599
>             Project: Commons Configuration
>          Issue Type: Bug
>    Affects Versions: 1.9
>            Reporter: Martin Lindgren
>            Priority: Critical
>
> When using a CombinedConfiguration it fails to merge properties located in both of the
configurations if one of the configuration only contains 1 property.
> {code:title=CombinedConfiguration.java|borderStyle=solid}
> 	public static void main(String[] args)
> 	{
> 		NodeCombiner combiner = new MergeCombiner();
> 		combiner.addListNode("module");
> 		CombinedConfiguration configuration = new CombinedConfiguration(combiner);
> 		
> 		XMLConfiguration xmlConf = new XMLConfiguration();
> 		xmlConf.addProperty("modules.module", "1");
> 		xmlConf.addProperty("modules.module", "2");
> 		xmlConf.addProperty("modules.module", "3");
> 		
> 		XMLConfiguration xmlConf2 = new XMLConfiguration();
> 		xmlConf2.addProperty("modules.module", "4");
> 		configuration.addConfiguration(xmlConf);
> 		configuration.addConfiguration(xmlConf2);
> 		
> 		//THIS WILL NOT PRINT THE VALUE 4 FROM XMLCONF2
> 		for(String s : configuration.getStringArray("modules.module"))
> 		{
> 			System.out.println(s);
> 		}
> 		
> 		System.out.println();
> 		//Now add one more additional property
> 		xmlConf2.addProperty("modules.module", "5");
> 		
> 		//NOW IT WILL PRINT BOTH VALUE 4 AND 5 FROM XMLCONF2
> 		for(String s : configuration.getStringArray("modules.module"))
> 		{
> 			System.out.println(s);
> 		}
> 	}
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message