commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ulrich Voigt (JIRA)" <>
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
             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.

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?


The following method could be added to the StrSubstitutor class to fix this problem in an
easy way:
     * 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
     * @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);

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

View raw message