commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Brian Boyle" <bboyl...@gmail.com>
Subject Re: Commons Configuration - Saving a combined configuration
Date Wed, 26 Nov 2008 21:28:47 GMT
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");


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


-- 
Brian Boyle
Mobile: 087 418 5215
Email: bboyle18@gmail.com

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message