You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2016/05/20 23:06:19 UTC
jclouds git commit: Handle nested braces in UriTemplates.expand
Repository: jclouds
Updated Branches:
refs/heads/master f46b38dd8 -> 981b882f5
Handle nested braces in UriTemplates.expand
This allows replacement of JSON-like payloads without using hacks like
percent-encoding braces.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/981b882f
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/981b882f
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/981b882f
Branch: refs/heads/master
Commit: 981b882f593a834b47d767c52d37b577404c0040
Parents: f46b38d
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri May 20 09:24:02 2016 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Fri May 20 09:26:45 2016 -0700
----------------------------------------------------------------------
.../main/java/org/jclouds/http/UriTemplates.java | 19 ++++++++++++++-----
.../java/org/jclouds/http/UriTemplatesTest.java | 4 ++++
2 files changed, 18 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds/blob/981b882f/core/src/main/java/org/jclouds/http/UriTemplates.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/jclouds/http/UriTemplates.java b/core/src/main/java/org/jclouds/http/UriTemplates.java
index db81dc7..77f6b80 100644
--- a/core/src/main/java/org/jclouds/http/UriTemplates.java
+++ b/core/src/main/java/org/jclouds/http/UriTemplates.java
@@ -44,17 +44,26 @@ public class UriTemplates {
for (char c : Lists.charactersOf(template)) {
switch (c) {
case '{':
+ if (inVar) {
+ builder.append('{');
+ builder.append(var);
+ var.setLength(0);
+ }
inVar = true;
break;
case '}':
- inVar = false;
String key = var.toString();
Object value = variables.get(var.toString());
- if (value != null)
- builder.append(value);
- else
- builder.append('{').append(key).append('}');
+ if (inVar) {
+ if (value != null)
+ builder.append(value);
+ else
+ builder.append('{').append(key).append('}');
+ } else {
+ builder.append('}');
+ }
var.setLength(0);
+ inVar = false;
break;
default:
if (inVar)
http://git-wip-us.apache.org/repos/asf/jclouds/blob/981b882f/core/src/test/java/org/jclouds/http/UriTemplatesTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/jclouds/http/UriTemplatesTest.java b/core/src/test/java/org/jclouds/http/UriTemplatesTest.java
index fcaa38f..83c1f86 100644
--- a/core/src/test/java/org/jclouds/http/UriTemplatesTest.java
+++ b/core/src/test/java/org/jclouds/http/UriTemplatesTest.java
@@ -51,4 +51,8 @@ public class UriTemplatesTest {
public void testMissingParamProceeds() {
assertEquals(expand("/{user-dir}", ImmutableMap.of("user_dir", "foo")), "/{user-dir}");
}
+
+ public void testJson() {
+ assertEquals(expand("{\"key\":\"{variable}\"}", ImmutableMap.of("variable", "value")), "{\"key\":\"value\"}");
+ }
}