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/13 22:46:24 UTC
git commit: 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/master e86146f46 -> a68c407b4
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/a68c407b
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/tree/a68c407b
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-openstack/diff/a68c407b
Branch: refs/heads/master
Commit: a68c407b414ff361e8201056482134474188770d
Parents: e86146f
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 15:36:21 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/a68c407b/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 0320542..665fa37 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;
@@ -176,6 +177,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/a68c407b/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"))));