commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Oliver Heger <oliver.he...@oliver-heger.de>
Subject Re: Commons Configuration - Saving a combined configuration
Date Wed, 26 Nov 2008 21:04:46 GMT
Brian Boyle schrieb:
> Hi there,
> 
> I am using the OverrideCombiner class to combine two XMLConfigurations
> together. This works fine and then I set this combined configuration as the
> RootNode of a new XMLConfigruation. I am then trying to save this newly
> created configuration as a new file and this does not seem to work. Does
> anybody know if this is possible or have a missed a step along the way?
> 
> Thanks,
> 
> Brian
> P.S. Here is my code.
> 
>            XMLConfiguration masterConf = new XMLConfiguration();
>            XMLConfiguration localConf = new XMLConfiguration();
>             masterConf.load("resources/Masterconfig.xml");
>             localConf.load("resources/localConfig.xml");
> 
>             NodeCombiner combiner = new OverrideCombiner();
>             ConfigurationNode cn = combiner.combine(localConf.getRootNode(),
> masterConf.getRootNode());
> 
>             XMLConfiguration result = new XMLConfiguration();
>             result.setRootNode(cn);
>             result.save("resources/CombinedConfig.xml");
> 

The problem is that the configuration nodes contain references to the 
XML DOM elements they correspond to. These references are also used by 
XMLConfiguration to find out, which nodes have been changed and must be 
written.

To solve your problem these references must be cleared. The easiest way 
to do this is using the constructor of XMLConfiguration that takes 
another hierarchical configuration as argument. You can try creating 
another XMLConfiguration as copy of the existing one:

	XMLConfiguration result = new XMLConfiguration();
  	result.setRootNode(cn);
	XMLConfiguratiion finalResult = new XMLConfiguration(result);
	finalResult.save(...);

BTW, is there a reason why you do not use CombinedConfiguration? This 
class will do the work with the combiners for you. You can then create 
the result XMLConfiguration from this combined configuration.

HTH
Oliver

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@commons.apache.org
For additional commands, e-mail: user-help@commons.apache.org


Mime
View raw message