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:31:59 GMT
Brian Boyle schrieb:
> Hi Oliver,
> 
> Thanks for replying so quickly.
> I tried out your suggestion and it works perfectly.
> I've had a look at the CombinedConfiguration object and I managed to get it
> working. I have added my code below.....is this the correct way to do this
> or is there an even easier way to do it with CombinedConfiguration?
> 
> Cheers,
> 
> Brian
> 
>             CombinedConfiguration cc = new CombinedConfiguration(new
> OverrideCombiner());
>             cc.addConfiguration(masterConf);
>             cc.addConfiguration(localConf);
> 
>             XMLConfiguration result = new XMLConfiguration();
>             result.setRootNode(cc.getRootNode());
>             XMLConfiguration finalResult = new XMLConfiguration(result);
>             finalResult.setRootElementName("IMConfig");
>             finalResult.save("resources/CombinedConfig.xml");
> 

I think you should be able to do

	CombinedConfiguration cc = new CombinedConfiguration(new
  OverrideCombiner());
         cc.addConfiguration(masterConf);
         cc.addConfiguration(localConf);
	XMLConfiguration result = new XMLConfiguration(cc);
	result.save(...);

Oliver

> 
> On Wed, Nov 26, 2008 at 9:04 PM, Oliver Heger
> <oliver.heger@oliver-heger.de>wrote:
> 
>> 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
>>
>>
> 
> 


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


Mime
View raw message