You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2018/07/10 22:01:10 UTC

jclouds git commit: [JCLOUDS-1433] $ and \ in tokenValues passed to Strings2.replaceTokens(String, Multimap) could result in IllegalArgumentException.

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 <jg...@cloudbees.com>
Authored: Tue Jul 10 15:22:20 2018 -0400
Committer: Ignasi Barrera <na...@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() {