[ https://issues.apache.org/jira/browse/CONFIGURATION-524?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13569612#comment-13569612 ]
Oliver Heger commented on CONFIGURATION-524: -------------------------------------------- Thank you for the report. There have been some changes recently in the current development version in the field of interpolation. However, I am pretty sure that the problem still exists. > AbstractConfiguration does not interpolate correctly after cloning > ------------------------------------------------------------------ > > Key: CONFIGURATION-524 > URL: https://issues.apache.org/jira/browse/CONFIGURATION-524 > Project: Commons Configuration > Issue Type: Bug > Components: Build > Reporter: Juan Diego Gago Perez > Original Estimate: 24h > Remaining Estimate: 24h > > If you clone a Configuration, does not clone the StrSubstitutor when it has > been instanced, so the cloned copy has the same StrSubstituor than the > original composite. If you change a property in the original compoiste it is > changed in the cloned copy. > Way to reproduce it : > {code} > public class SampleConfiguration { > public static void main(final String[] args) { > final String sentence = "SELECT * FORM TABLE WHERE YEAR=${year} and > QUARTER=${quarter}"; > final CompositeConfiguration cp = new CompositeConfiguration(); > cp.addProperty("year", "2000"); > cp.addProperty("quarter", "2"); > final AbstractConfiguration clonedConfig = (AbstractConfiguration) > ConfigurationUtils.cloneConfiguration(cp); > cp.setProperty("year", "2001"); > clonedConfig.setProperty("year", "2002"); > System.out.println("Original sentence " + > PropertyConverter.interpolate(sentence, cp)); > System.out.println("Cloned sentence " + > PropertyConverter.interpolate(sentence, clonedConfig)); > final AbstractConfiguration clonedConfig2 = (AbstractConfiguration) > ConfigurationUtils.cloneConfiguration(cp); > cp.setProperty("year", "2003"); > clonedConfig2.setProperty("year", "2004"); > System.out.println("Original sentence " + > PropertyConverter.interpolate(sentence, cp)); > System.out.println("Cloned (after interpolate with same > strSubstitutor )sentence " > + PropertyConverter.interpolate(sentence, clonedConfig2)); > } > } > {code} > The solution can be to make in the following ways: > Make the clone of the strSubstitutor in the AbstractConfigutration class. > Create a clone method inside the StrSubtitutor and invoke it from the > AbstractConfiguration class. > Set null the strSubstituror when the clone method is invoked in the Abstract > Configuration class. The next invocation to interpolate methos instances the > strSubstitutor. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira