Wrong creation of XMLFileConfigurationDelegate in XMLConfiguration.clone()
--------------------------------------------------------------------------

                 Key: CONFIGURATION-254
                 URL: https://issues.apache.org/jira/browse/CONFIGURATION-254
             Project: Commons Configuration
          Issue Type: Bug
    Affects Versions: 1.3
         Environment: Java 1.4.2, Windows XP, Shale
            Reporter: Carsten Kaiser


The clone() operation on a XMLConfiguration does not work correctly due to the 
following problem:

private class XMLFileConfigurationDelegate extends FileConfigurationDelegate
{
     public void load(InputStream in) throws ConfigurationException
     {
            XMLConfiguration.this.load(in);
      }
}

Obviously the delegate references the XMLConfiguration instance it is created 
in. Thus when calling

public Object clone()
{
      XMLConfiguration copy = (XMLConfiguration) super.clone();

       // clear document related properties
       copy.document = null;

       copy.setDelegate(createDelegate());

       // clear all references in the nodes, too
       copy.getRoot().visit(new NodeVisitor()
       {
            public void visitBeforeChildren(Node node, ConfigurationKey key)
            {
                node.setReference(null);
             }
        }, null);
 
        return copy;
}
 
the delegate still references the original XMLConfiguration, thus will save the 
content of the original one
to file instead of the clone as expected! Changing the code like this

        copy.setDelegate(copy.createDelegate());

solves the problem! Now the cloned XMLConfiguration with all its  applied 
changes can be saved!


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to