commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carsten Kaiser (JIRA)" <j...@apache.org>
Subject [jira] Created: (CONFIGURATION-254) Wrong creation of XMLFileConfigurationDelegate in XMLConfiguration.clone()
Date Wed, 28 Feb 2007 21:22:51 GMT
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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org


Mime
View raw message