[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-dev
Subject:    [jira] Created: (CONFIGURATION-254) Wrong creation of
From:       "Carsten Kaiser (JIRA)" <jira () apache ! org>
Date:       2007-02-28 21:22:51
Message-ID: 21166257.1172697771186.JavaMail.jira () brutus
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic