Repository: jclouds Updated Branches: refs/heads/master 1bd3b8f9d -> c34935dcd
[JCLOUDS-1433] $ and \ in tokenValues passed to Strings2.replaceTokens(String, Multimap) could result in IllegalArgumentException. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/c34935dc Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/c34935dc Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/c34935dc Branch: refs/heads/master Commit: c34935dcd3476db7397e7433de6243ec81a09ccf Parents: 1bd3b8f Author: Jesse Glick <jgl...@cloudbees.com> Authored: Tue Jul 10 15:22:20 2018 -0400 Committer: Ignasi Barrera <n...@apache.org> Committed: Tue Jul 10 15:00:56 2018 -0700 ---------------------------------------------------------------------- core/src/main/java/org/jclouds/util/Strings2.java | 2 +- core/src/test/java/org/jclouds/util/Strings2Test.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/c34935dc/core/src/main/java/org/jclouds/util/Strings2.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/jclouds/util/Strings2.java b/core/src/main/java/org/jclouds/util/Strings2.java index 27fd545..cc09b6c 100644 --- a/core/src/main/java/org/jclouds/util/Strings2.java +++ b/core/src/main/java/org/jclouds/util/Strings2.java @@ -182,7 +182,7 @@ public class Strings2 { public static String replaceTokens(String input, Multimap<String, ?> tokenValues) { for (Entry<String, ?> tokenValue : tokenValues.entries()) { Pattern pattern = TOKEN_TO_PATTERN.getUnchecked(tokenValue.getKey()); - input = pattern.matcher(input).replaceAll(tokenValue.getValue().toString()); + input = pattern.matcher(input).replaceAll(tokenValue.getValue().toString().replace("\\", "\\\\").replace("$", "\\$")); } return input; } http://git-wip-us.apache.org/repos/asf/jclouds/blob/c34935dc/core/src/test/java/org/jclouds/util/Strings2Test.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/jclouds/util/Strings2Test.java b/core/src/test/java/org/jclouds/util/Strings2Test.java index 2acdd35..cf838bc 100644 --- a/core/src/test/java/org/jclouds/util/Strings2Test.java +++ b/core/src/test/java/org/jclouds/util/Strings2Test.java @@ -23,12 +23,15 @@ import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMultimap; @Test(groups = "unit") public class Strings2Test { public void testReplaceTokens() { assertEquals(Strings2.replaceTokens("hello {where}", ImmutableMap.of("where", "world")), "hello world"); + assertEquals(Strings2.replaceTokens("hello {where}", ImmutableMap.of("where", "$1,000,000 \\o/!")), "hello $1,000,000 \\o/!"); + assertEquals(Strings2.replaceTokens("hello {where}", ImmutableMultimap.of("where", "$1,000,000 \\o/!")), "hello $1,000,000 \\o/!"); } public void testUrlEncodeDecodeShouldGiveTheSameString() {