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",
