Author: niallp Date: Sun Jan 9 02:34:19 2011 New Revision: 1056868 URL: http://svn.apache.org/viewvc?rev=1056868&view=rev Log: Port LANG-596 to LANG 2.x Branch - add a replace(String, Properties) variant to StrSubstitutor
Modified: commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrSubstitutor.java commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java Modified: commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrSubstitutor.java URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrSubstitutor.java?rev=1056868&r1=1056867&r2=1056868&view=diff ============================================================================== --- commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrSubstitutor.java (original) +++ commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/text/StrSubstitutor.java Sun Jan 9 02:34:19 2011 @@ -17,8 +17,11 @@ package org.apache.commons.lang.text; import java.util.ArrayList; +import java.util.Enumeration; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Properties; /** * Substitutes variables within a string by values. @@ -151,6 +154,30 @@ public class StrSubstitutor { } /** + * 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 valueProperties 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.toString(); + } + 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); + } + + /** * Replaces all the occurrences of variables in the given source object with * their matching values from the system properties. * Modified: commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java URL: http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java?rev=1056868&r1=1056867&r2=1056868&view=diff ============================================================================== --- commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java (original) +++ commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/text/StrSubstitutorTest.java Sun Jan 9 02:34:19 2011 @@ -19,6 +19,7 @@ package org.apache.commons.lang.text; import java.util.HashMap; import java.util.Map; +import java.util.Properties; import junit.framework.TestCase; @@ -410,6 +411,19 @@ public class StrSubstitutorTest extends + "directory is ${user.home}.")); } + /** + * Test the replace of a properties object + */ + public void testSubstitutetDefaultProperties(){ + String org = "${doesnotwork}"; + System.setProperty("doesnotwork", "It work's!"); + + // create a new Properties object with the System.getProperties as default + Properties props = new Properties(System.getProperties()); + + assertEquals("It work's!",StrSubstitutor.replace(org, props)); + } + //----------------------------------------------------------------------- private void doTestReplace(String expectedResult, String replaceTemplate, boolean substring) { String expectedShortResult = expectedResult.substring(1, expectedResult.length() - 1);