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.