You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2016/01/17 02:15:20 UTC

[5/7] jclouds git commit: JCLOUDS-948: S3 Cache-Control support

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 <ga...@apache.org>
Authored: Fri Jan 15 04:18:52 2016 -0800
Committer: Andrew Gaul <ga...@apache.org>
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)