[ https://issues.apache.org/jira/browse/CONFIGURATION-254?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Oliver Heger updated CONFIGURATION-254: --------------------------------------- Fix Version/s: 1.4 > 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 > Assigned To: Oliver Heger > Fix For: 1.4 > > > 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]