You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by za...@apache.org on 2014/05/14 04:26:19 UTC
git commit: jclouds-565 Fixes a bug with swift where the metadata is
updated, but the content-type is reset to application/x-www-form-urlencoded.
Repository: jclouds-labs-openstack
Updated Branches:
refs/heads/1.7.x d9f798c12 -> ac117fc3d
jclouds-565 Fixes a bug with swift where the metadata is updated, but the content-type is reset to application/x-www-form-urlencoded.
Workaround: send an empty Content-Type header, only for the updateMetadata call.
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/commit/ac117fc3
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/tree/ac117fc3
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/diff/ac117fc3
Branch: refs/heads/1.7.x
Commit: ac117fc3d85a02625b72e4831617e5d68d4fa376
Parents: d9f798c
Author: Zack Shoylev <za...@rackspace.com>
Authored: Mon May 12 23:15:08 2014 -0500
Committer: Zack Shoylev <za...@rackspace.com>
Committed: Tue May 13 21:25:56 2014 -0500
----------------------------------------------------------------------
.../openstack/swift/v1/features/ObjectApi.java | 2 ++
.../swift/v1/features/ObjectApiMockTest.java | 27 ++++++++++++++++++++
2 files changed, 29 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/ac117fc3/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java
index e56de7d..4c442fd 100644
--- a/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java
+++ b/openstack-swift/src/main/java/org/jclouds/openstack/swift/v1/features/ObjectApi.java
@@ -30,6 +30,7 @@ import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
@@ -173,6 +174,7 @@ public interface ObjectApi {
@POST
@Fallback(FalseOnNotFoundOr404.class)
@Path("/{objectName}")
+ @Produces("")
boolean updateMetadata(@PathParam("objectName") String objectName,
@BinderParam(BindObjectMetadataToHeaders.class) Map<String, String> metadata);
http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/blob/ac117fc3/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
----------------------------------------------------------------------
diff --git a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
index 7fe10b7..276a5e0 100644
--- a/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
+++ b/openstack-swift/src/test/java/org/jclouds/openstack/swift/v1/features/ObjectApiMockTest.java
@@ -256,6 +256,33 @@ public class ObjectApiMockTest extends BaseOpenStackMockTest<SwiftApi> {
}
}
+ public void testUpdateMetadataContentType() throws Exception {
+ MockWebServer server = mockOpenStackServer();
+ server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));
+ server.enqueue(addCommonHeaders(objectResponse()
+ .addHeader(OBJECT_METADATA_PREFIX + "ApiName", "swift")
+ .addHeader(OBJECT_METADATA_PREFIX + "ApiVersion", "v1.1")));
+
+ try {
+ SwiftApi api = api(server.getUrl("/").toString(), "openstack-swift");
+ assertTrue(api.objectApiInRegionForContainer("DFW", "myContainer").updateMetadata("myObject", metadata));
+
+ assertEquals(server.getRequestCount(), 2);
+ assertEquals(server.takeRequest().getRequestLine(), "POST /tokens HTTP/1.1");
+ RecordedRequest replaceRequest = server.takeRequest();
+ assertEquals(replaceRequest.getHeaders("Content-Type").get(0), "", "updateMetadata should send an empty content-type header, but sent "
+ + replaceRequest.getHeaders("Content-Type").get(0).toString());
+
+ assertEquals(replaceRequest.getRequestLine(),
+ "POST /v1/MossoCloudFS_5bcf396e-39dd-45ff-93a1-712b9aba90a9/myContainer/myObject HTTP/1.1");
+ for (Entry<String, String> entry : metadata.entrySet()) {
+ assertEquals(replaceRequest.getHeader(OBJECT_METADATA_PREFIX + entry.getKey().toLowerCase()), entry.getValue());
+ }
+ } finally {
+ server.shutdown();
+ }
+ }
+
public void deleteMetadata() throws Exception {
MockWebServer server = mockOpenStackServer();
server.enqueue(addCommonHeaders(new MockResponse().setBody(stringFromResource("/access.json"))));