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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to