JCLOUDS-948: S3 Cache-Control support Deprecate older S3-specific Cache-Control mechanism.
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f292408a Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f292408a Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f292408a Branch: refs/heads/master Commit: f292408af4f9700fdde3f35c45a97cfb64793319 Parents: 82ad05e Author: Andrew Gaul <[email protected]> Authored: Fri Jan 15 04:18:52 2016 -0800 Committer: Andrew Gaul <[email protected]> Committed: Fri Jan 15 13:22:14 2016 -0800 ---------------------------------------------------------------------- .../s3/binders/BindObjectMetadataToRequest.java | 4 ++-- .../s3/binders/BindS3ObjectMetadataToRequest.java | 6 ------ .../java/org/jclouds/s3/blobstore/S3BlobStore.java | 5 +++++ .../org/jclouds/s3/domain/MutableObjectMetadata.java | 3 +++ .../java/org/jclouds/s3/domain/ObjectMetadata.java | 3 +++ .../org/jclouds/s3/domain/ObjectMetadataBuilder.java | 4 +--- .../domain/internal/MutableObjectMetadataImpl.java | 10 ++++++---- .../org/jclouds/s3/options/CopyObjectOptions.java | 15 +++++++++++++++ .../binders/BindS3ObjectMetadataToRequestTest.java | 3 +-- 9 files changed, 36 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/binders/BindObjectMetadataToRequest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/binders/BindObjectMetadataToRequest.java b/apis/s3/src/main/java/org/jclouds/s3/binders/BindObjectMetadataToRequest.java index 1f96b7a..84948e1 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/binders/BindObjectMetadataToRequest.java +++ b/apis/s3/src/main/java/org/jclouds/s3/binders/BindObjectMetadataToRequest.java @@ -54,8 +54,8 @@ public class BindObjectMetadataToRequest implements Binder { request = metadataPrefixer.bindToRequest(request, md.getUserMetadata()); Builder<String, String> headers = ImmutableMultimap.builder(); - if (md.getCacheControl() != null) { - headers.put(HttpHeaders.CACHE_CONTROL, md.getCacheControl()); + if (md.getContentMetadata().getCacheControl() != null) { + headers.put(HttpHeaders.CACHE_CONTROL, md.getContentMetadata().getCacheControl()); } if (md.getContentMetadata().getContentDisposition() != null) { http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequest.java b/apis/s3/src/main/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequest.java index f35ff5c..d35a3e6 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequest.java +++ b/apis/s3/src/main/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequest.java @@ -27,8 +27,6 @@ import org.jclouds.http.HttpRequest; import org.jclouds.rest.Binder; import org.jclouds.s3.domain.S3Object; -import com.google.common.net.HttpHeaders; - @Singleton public class BindS3ObjectMetadataToRequest implements Binder { protected final BindMapToHeadersWithPrefix metadataPrefixer; @@ -53,10 +51,6 @@ public class BindS3ObjectMetadataToRequest implements Binder { request = metadataPrefixer.bindToRequest(request, s3Object.getMetadata().getUserMetadata()); - if (s3Object.getMetadata().getCacheControl() != null) { - request = (R) request.toBuilder() - .replaceHeader(HttpHeaders.CACHE_CONTROL, s3Object.getMetadata().getCacheControl()).build(); - } return request; } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java index 4cb5ea2..fbb481c 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java +++ b/apis/s3/src/main/java/org/jclouds/s3/blobstore/S3BlobStore.java @@ -278,6 +278,11 @@ public class S3BlobStore extends BaseBlobStore { Optional<ContentMetadata> contentMetadata = options.getContentMetadata(); if (contentMetadata.isPresent()) { + String cacheControl = contentMetadata.get().getCacheControl(); + if (cacheControl != null) { + s3Options.cacheControl(cacheControl); + } + String contentDisposition = contentMetadata.get().getContentDisposition(); if (contentDisposition != null) { s3Options.contentDisposition(contentDisposition); http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java b/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java index 5af1025..8ec9a71 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/MutableObjectMetadata.java @@ -59,7 +59,10 @@ public interface MutableObjectMetadata extends ObjectMetadata { * Can be used to specify caching behavior along the request/reply chain. * * @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html?sec14.9. + * + * @deprecated call getContentMetadata().setCacheControl(String) instead */ + @Deprecated void setCacheControl(String cacheControl); @Override http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java b/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java index 10e56f5..d7dd394 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadata.java @@ -63,7 +63,10 @@ public interface ObjectMetadata extends Comparable<ObjectMetadata> { * Can be used to specify caching behavior along the request/reply chain. * * @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html?sec14.9. + * + * @deprecated call getContentMetadata().getCacheControl() instead */ + @Deprecated String getCacheControl(); Date getLastModified(); http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadataBuilder.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadataBuilder.java b/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadataBuilder.java index ba6c938..e142ca7 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadataBuilder.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/ObjectMetadataBuilder.java @@ -42,7 +42,6 @@ public class ObjectMetadataBuilder { private String bucket; private URI uri; private StorageClass storageClass = StorageClass.STANDARD; - private String cacheControl; private Date lastModified; private String eTag; private CanonicalUser owner; @@ -84,7 +83,7 @@ public class ObjectMetadataBuilder { } public ObjectMetadataBuilder cacheControl(String cacheControl) { - this.cacheControl = cacheControl; + contentMetadataBuilder.cacheControl(cacheControl); return this; } @@ -130,7 +129,6 @@ public class ObjectMetadataBuilder { public ObjectMetadata build() { MutableObjectMetadataImpl toReturn = new MutableObjectMetadataImpl(); toReturn.setContentMetadata(BaseMutableContentMetadata.fromContentMetadata(contentMetadataBuilder.build())); - toReturn.setCacheControl(cacheControl); toReturn.setKey(key); toReturn.setBucket(bucket); toReturn.setUri(uri); http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/domain/internal/MutableObjectMetadataImpl.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/domain/internal/MutableObjectMetadataImpl.java b/apis/s3/src/main/java/org/jclouds/s3/domain/internal/MutableObjectMetadataImpl.java index e2692cb..6fc329f 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/domain/internal/MutableObjectMetadataImpl.java +++ b/apis/s3/src/main/java/org/jclouds/s3/domain/internal/MutableObjectMetadataImpl.java @@ -108,11 +108,12 @@ public class MutableObjectMetadataImpl implements MutableObjectMetadata { } /** - *{@inheritDoc} + * @deprecated call getContentMetadata().getCacheControl() instead */ + @Deprecated @Override public String getCacheControl() { - return cacheControl; + return contentMetadata.getCacheControl(); } /** @@ -148,11 +149,12 @@ public class MutableObjectMetadataImpl implements MutableObjectMetadata { } /** - *{@inheritDoc} + * @deprecated call getContentMetadata().setCacheControl(String) instead */ + @Deprecated @Override public void setCacheControl(String cacheControl) { - this.cacheControl = cacheControl; + contentMetadata.setCacheControl(cacheControl); } /** http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java b/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java index 2370bf5..374278d 100644 --- a/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java +++ b/apis/s3/src/main/java/org/jclouds/s3/options/CopyObjectOptions.java @@ -72,6 +72,7 @@ import com.google.common.net.HttpHeaders; public class CopyObjectOptions extends BaseHttpRequestOptions { private static final DateService dateService = new SimpleDateFormatDateService(); public static final CopyObjectOptions NONE = new CopyObjectOptions(); + private String cacheControl; private String contentDisposition; private String contentEncoding; private String contentLanguage; @@ -255,6 +256,10 @@ public class CopyObjectOptions extends BaseHttpRequestOptions { returnVal.put(entry.getKey().replace(DEFAULT_AMAZON_HEADERTAG, headerTag), entry.getValue()); } boolean replace = false; + if (cacheControl != null) { + returnVal.put(HttpHeaders.CACHE_CONTROL, cacheControl); + replace = true; + } if (contentDisposition != null) { returnVal.put(HttpHeaders.CONTENT_DISPOSITION, contentDisposition); replace = true; @@ -284,6 +289,11 @@ public class CopyObjectOptions extends BaseHttpRequestOptions { return returnVal.build(); } + public CopyObjectOptions cacheControl(String cacheControl) { + this.cacheControl = checkNotNull(cacheControl, "cacheControl"); + return this; + } + public CopyObjectOptions contentDisposition(String contentDisposition) { this.contentDisposition = checkNotNull(contentDisposition, "contentDisposition"); return this; @@ -354,6 +364,11 @@ public class CopyObjectOptions extends BaseHttpRequestOptions { return options.ifSourceETagDoesntMatch(eTag); } + public static CopyObjectOptions cacheControl(String cacheControl) { + CopyObjectOptions options = new CopyObjectOptions(); + return options.cacheControl(cacheControl); + } + public static CopyObjectOptions contentDisposition(String contentDisposition) { CopyObjectOptions options = new CopyObjectOptions(); return options.contentDisposition(contentDisposition); http://git-wip-us.apache.org/repos/asf/jclouds/blob/f292408a/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java ---------------------------------------------------------------------- diff --git a/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java b/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java index b65c2b9..229f4a1 100644 --- a/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java +++ b/apis/s3/src/test/java/org/jclouds/s3/binders/BindS3ObjectMetadataToRequestTest.java @@ -62,7 +62,6 @@ public class BindS3ObjectMetadataToRequestTest extends BaseS3ClientTest<S3Client payload.getContentMetadata().setContentLength(5368709120l); object.setPayload(payload); object.getMetadata().setKey("foo"); - object.getMetadata().setCacheControl("no-cache"); object.getMetadata().setUserMetadata(ImmutableMap.of("foo", "bar")); HttpRequest request = HttpRequest.builder().method("PUT").endpoint("http://localhost").build(); @@ -70,7 +69,7 @@ public class BindS3ObjectMetadataToRequestTest extends BaseS3ClientTest<S3Client assertEquals(binder.bindToRequest(request, object), HttpRequest.builder().method("PUT").endpoint( URI.create("http://localhost")).headers( - ImmutableMultimap.of("Cache-Control", "no-cache", "x-amz-meta-foo", "bar")).build()); + ImmutableMultimap.of("x-amz-meta-foo", "bar")).build()); } @Test(expectedExceptions = IllegalArgumentException.class)
