commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Heger (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CONFIGURATION-524) AbstractConfiguration does not interpolate correctly after cloning
Date Sat, 02 Feb 2013 18:30:13 GMT

    [ 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

Mime
View raw message