Updated Branches: refs/heads/master 7e99ddef5 -> 3321506c8
JCLOUDS-403. Add support for Swift object expiry Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/3321506c Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/3321506c Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/3321506c Branch: refs/heads/master Commit: 3321506c849a29b79499a820bc9c895b1c657c66 Parents: 7e99dde Author: Andrew Gaul <[email protected]> Authored: Mon Dec 9 22:20:43 2013 -0800 Committer: Andrew Gaul <[email protected]> Committed: Wed Dec 11 14:20:32 2013 -0800 ---------------------------------------------------------------------- .../blobstore/CloudFilesBlobSignerExpectTest.java | 4 +++- .../swift/binders/BindSwiftObjectMetadataToRequest.java | 11 +++++++++++ .../binders/BindSwiftObjectMetadataToRequestTest.java | 6 ++++++ .../swift/blobstore/SwiftBlobSignerExpectTest.java | 4 +++- .../blobstore/SwiftKeystoneBlobSignerExpectTest.java | 4 +++- .../HPCloudObjectStorageBlobSignerExpectTest.java | 4 +++- 6 files changed, 29 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/3321506c/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java ---------------------------------------------------------------------- diff --git a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java index 9659ec3..dbf140f 100644 --- a/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java +++ b/apis/cloudfiles/src/test/java/org/jclouds/cloudfiles/blobstore/CloudFilesBlobSignerExpectTest.java @@ -80,7 +80,9 @@ public class CloudFilesBlobSignerExpectTest extends BaseBlobSignerExpectTest { .endpoint("https://storage101.lon3.clouddrive.com/v1/MossoCloudFS_83a9d536-2e25-4166-bd3b-a503a934f953/container/name") .addHeader("ETag", "00020408") .addHeader("Expect", "100-continue") - .addHeader("X-Auth-Token", authToken).build(); + .addHeader("X-Auth-Token", authToken) + .addHeader("X-Delete-At", "1") + .build(); } @Override http://git-wip-us.apache.org/repos/asf/jclouds/blob/3321506c/apis/swift/src/main/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequest.java ---------------------------------------------------------------------- diff --git a/apis/swift/src/main/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequest.java b/apis/swift/src/main/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequest.java index 6f1e53a..e529c12 100644 --- a/apis/swift/src/main/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequest.java +++ b/apis/swift/src/main/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequest.java @@ -16,9 +16,11 @@ */ package org.jclouds.openstack.swift.binders; +import static java.util.concurrent.TimeUnit.MILLISECONDS; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; +import java.util.Date; import javax.inject.Inject; import javax.inject.Singleton; import javax.ws.rs.core.MediaType; @@ -72,6 +74,15 @@ public class BindSwiftObjectMetadataToRequest implements Binder { .build(); } + Date expires = object.getPayload().getContentMetadata().getExpires(); + if (expires != null) { + // Swizzle Expires to X-Delete-At + request = (R) request.toBuilder() + .addHeader("X-Delete-At", String.valueOf( + MILLISECONDS.toSeconds(expires.getTime()))) + .build(); + } + request = mdBinder.bindToRequest(request, object2Blob.apply(object)); return request; } http://git-wip-us.apache.org/repos/asf/jclouds/blob/3321506c/apis/swift/src/test/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequestTest.java ---------------------------------------------------------------------- diff --git a/apis/swift/src/test/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequestTest.java b/apis/swift/src/test/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequestTest.java index c5accb2..fb54cee 100644 --- a/apis/swift/src/test/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequestTest.java +++ b/apis/swift/src/test/java/org/jclouds/openstack/swift/binders/BindSwiftObjectMetadataToRequestTest.java @@ -16,10 +16,12 @@ */ package org.jclouds.openstack.swift.binders; +import static java.util.concurrent.TimeUnit.MILLISECONDS; import static org.testng.Assert.assertEquals; import java.io.File; import java.net.URI; +import java.util.Date; import org.jclouds.http.HttpRequest; import org.jclouds.io.Payload; @@ -59,6 +61,8 @@ public class BindSwiftObjectMetadataToRequestTest extends CommonSwiftClientTest SwiftObject object = injector.getInstance(SwiftObject.Factory.class).create(null); Payload payload = Payloads.newStringPayload(""); payload.getContentMetadata().setContentLength(5 * 1024 * 1024 * 1024l); + long expiresMillis = 1000; + payload.getContentMetadata().setExpires(new Date(expiresMillis)); object.setPayload(payload); object.getInfo().setName("foo"); object.getInfo().getMetadata().putAll(ImmutableMap.of("foo", "bar")); @@ -67,6 +71,8 @@ public class BindSwiftObjectMetadataToRequestTest extends CommonSwiftClientTest BindSwiftObjectMetadataToRequest binder = injector.getInstance(BindSwiftObjectMetadataToRequest.class); assertEquals(binder.bindToRequest(request, object), HttpRequest.builder().method("PUT") + .addHeader("X-Delete-At", String.valueOf( + MILLISECONDS.toSeconds(expiresMillis))) .endpoint("http://localhost").addHeader("X-Object-Meta-foo", "bar").build()); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/3321506c/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftBlobSignerExpectTest.java ---------------------------------------------------------------------- diff --git a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftBlobSignerExpectTest.java b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftBlobSignerExpectTest.java index b2be6eb..6508e1d 100644 --- a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftBlobSignerExpectTest.java +++ b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftBlobSignerExpectTest.java @@ -78,7 +78,9 @@ public class SwiftBlobSignerExpectTest extends BaseBlobSignerExpectTest { .endpoint("http://storage/container/name") .addHeader("ETag", "00020408") .addHeader("Expect", "100-continue") - .addHeader("X-Auth-Token", "testtoken").build(); + .addHeader("X-Auth-Token", "testtoken") + .addHeader("X-Delete-At", "1") + .build(); } @Override http://git-wip-us.apache.org/repos/asf/jclouds/blob/3321506c/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftKeystoneBlobSignerExpectTest.java ---------------------------------------------------------------------- diff --git a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftKeystoneBlobSignerExpectTest.java b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftKeystoneBlobSignerExpectTest.java index 01c21a7..476962a 100644 --- a/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftKeystoneBlobSignerExpectTest.java +++ b/apis/swift/src/test/java/org/jclouds/openstack/swift/blobstore/SwiftKeystoneBlobSignerExpectTest.java @@ -73,7 +73,9 @@ public class SwiftKeystoneBlobSignerExpectTest extends BaseBlobSignerExpectTest .endpoint("https://objects.jclouds.org/v1.0/40806637803162/container/name") .addHeader("ETag", "00020408") .addHeader("Expect", "100-continue") - .addHeader("X-Auth-Token", "Auth_4f173437e4b013bee56d1007").build(); + .addHeader("X-Auth-Token", "Auth_4f173437e4b013bee56d1007") + .addHeader("X-Delete-At", "1") + .build(); } @Override http://git-wip-us.apache.org/repos/asf/jclouds/blob/3321506c/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java ---------------------------------------------------------------------- diff --git a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java index 1da4b72..f95d10b 100644 --- a/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java +++ b/providers/hpcloud-objectstorage/src/test/java/org/jclouds/hpcloud/objectstorage/blobstore/HPCloudObjectStorageBlobSignerExpectTest.java @@ -76,7 +76,9 @@ public class HPCloudObjectStorageBlobSignerExpectTest extends BaseBlobSignerExpe .endpoint("https://objects.jclouds.org/v1.0/40806637803162/container/name") .addHeader("ETag", "00020408") .addHeader("Expect", "100-continue") - .addHeader("X-Auth-Token", "Auth_4f173437e4b013bee56d1007").build(); + .addHeader("X-Auth-Token", "Auth_4f173437e4b013bee56d1007") + .addHeader("X-Delete-At", "1") + .build(); } @Override
