[ 
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

Reply via email to