You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Henri Yandell (JIRA)" <ji...@apache.org> on 2010/03/02 08:03:27 UTC

[jira] Updated: (LANG-596) StrSubstitutor should also handle the default properties of a java.util.Properties class

     [ https://issues.apache.org/jira/browse/LANG-596?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Henri Yandell updated LANG-596:
-------------------------------

    Fix Version/s: 3.1

Sounds good - assigning to 3.1. Needs code/test patch.

> StrSubstitutor should also handle the default properties of a java.util.Properties class
> ----------------------------------------------------------------------------------------
>
>                 Key: LANG-596
>                 URL: https://issues.apache.org/jira/browse/LANG-596
>             Project: Commons Lang
>          Issue Type: Bug
>          Components: lang.text.*
>    Affects Versions: 2.5
>            Reporter: Ulrich Voigt
>            Priority: Minor
>             Fix For: 3.1
>
>   Original Estimate: 0.5h
>  Remaining Estimate: 0.5h
>
> The following program show a problem with a shortcoming of the java.util.Properties class. 
> The default properties are not substituted by the StrSubstitutor.
> {code:title=StrSubstTest.java|borderStyle=solid}
> import org.apache.commons.lang.text.StrSubstitutor;
> public class StrSubstTest
> {
>     public static void main(String[] args)
>     {
>         String org = "${doesnotwork}";
>         System.setProperty("doesnotwork", "It work's!");
>         // create a new Poperties object with the System.getProperties as default
>         Properties props = new Properties(System.getProperties());
>         String subst = StrSubstitutor.replace(org, props);
>         // is ${doesnotwork} substituted?
>         System.out.println(subst);
>     }
> }
> {code} 
> The following method could be added to the StrSubstitutor class to fix this problem in an easy way:
> {code:borderStyle=solid}
>     /**
>      * Replaces all the occurrences of variables in the given source object with their matching
>      * values from the properties.
>      * 
>      * @param source the source text containing the variables to substitute, null returns null
>      * @param properties the properties with values, may be null
>      * @return the result of the replace operation
>      */
>     public static String replace(Object source, Properties valueProperties)
>     {
>         if (valueProperties == null) {
>             return source;
>         }
>         Map valueMap = new HashMap();
>         Enumeration propNames = valueProperties.propertyNames();
>         while (propNames.hasMoreElements())
>         {
>             String propName = (String)propNames.nextElement();
>             String propValue = valueProperties.getProperty(propName);
>             valueMap.put(propName, propValue);
>         }
>         return StrSubstitutor.replace(source, valueMap);
>     }
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.