JCLOUDS-1263: URL encode object names from list object response before creating 
URIs with them

This fix calls urlEncode on the path before appending them to the existing 
path, as the core UriBuilder
class expects them to be URL-encoded.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/14621c08
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/14621c08
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/14621c08

Branch: refs/heads/master
Commit: 14621c08d70c3f128d7d1a81149fc88f43c61c95
Parents: 65a5ec8
Author: Mat Mannion <[email protected]>
Authored: Mon Apr 3 14:49:22 2017 +0100
Committer: Andrew Gaul <[email protected]>
Committed: Mon May 21 22:19:25 2018 -0700

----------------------------------------------------------------------
 .../swift/v1/functions/ParseObjectListFromResponse.java          | 2 +-
 .../jclouds/openstack/swift/v1/features/ObjectApiMockTest.java   | 4 ++--
 apis/openstack-swift/src/test/resources/object_list.json         | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/14621c08/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectListFromResponse.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectListFromResponse.java
 
b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectListFromResponse.java
index a31fe85..38c9100 100644
--- 
a/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectListFromResponse.java
+++ 
b/apis/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/functions/ParseObjectListFromResponse.java
@@ -87,7 +87,7 @@ public class ParseObjectListFromResponse implements 
Function<HttpResponse, Objec
       public SwiftObject apply(InternalObject input) {
          if (input.subdir != null) {
             return SwiftObject.builder()
-                  
.uri(uriBuilder(containerUri).clearQuery().appendPath(input.subdir).build())
+                  
.uri(uriBuilder(containerUri).clearQuery().appendPath(urlEncode(input.subdir)).build())
                   .name(input.subdir)
                   .etag(SUBDIR_ETAG)
                   .payload(payload(input.bytes, input.hash, 
"application/directory", input.expires))

http://git-wip-us.apache.org/repos/asf/jclouds/blob/14621c08/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
 
b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
index 7b6ae32..da0de45 100644
--- 
a/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
+++ 
b/apis/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
@@ -91,8 +91,8 @@ public class ObjectApiMockTest extends 
BaseOpenStackMockTest<SwiftApi> {
                   .payload(payload(64L, "application/octet-stream", null))
                   
.lastModified(dates.iso8601DateParse("2009-02-03T05:26:32.612278")).build(),
             SwiftObject.builder()
-                  .name("test obj 3")
-                  .uri(URI.create(baseUri + "/test%20obj%203"))
+                  .name("test obj 3 %$.")
+                  .uri(URI.create(baseUri + "/test%20obj%203%20%25%24."))
                   .etag("0b2e80bd0744d9ebb20484149a57c82e")
                   .payload(payload(14, "application/octet-stream", new Date()))
                   
.lastModified(dates.iso8601DateParse("2014-05-20T05:26:32.612278")).build());

http://git-wip-us.apache.org/repos/asf/jclouds/blob/14621c08/apis/openstack-swift/src/test/resources/object_list.json
----------------------------------------------------------------------
diff --git a/apis/openstack-swift/src/test/resources/object_list.json 
b/apis/openstack-swift/src/test/resources/object_list.json
index afe8c77..0deab8c 100644
--- a/apis/openstack-swift/src/test/resources/object_list.json
+++ b/apis/openstack-swift/src/test/resources/object_list.json
@@ -14,7 +14,7 @@
         "last_modified": "2009-02-03T05:26:32.612278"
     },
     {
-        "name": "test obj 3",
+        "name": "test obj 3 %$.",
         "hash": "0b2e80bd0744d9ebb20484149a57c82e",
         "bytes": 123,
         "content_type": "application/octet-stream",

Reply via email to