commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ulrich Voigt (JIRA)" <j...@apache.org>
Subject [jira] Created: (LANG-596) StrSubstitutor should also handle the default properties of a java.util.Properties class
Date Mon, 01 Mar 2010 12:18:05 GMT
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


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.


Mime
View raw message