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 2015/12/14 07:44:07 UTC

[1/2] jclouds git commit: Fix Azure setBlobProperties

Repository: jclouds
Updated Branches:
  refs/heads/master 0634da98a -> b64d05abb


Fix Azure setBlobProperties

Also backfill test.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/85bc4a6b
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/85bc4a6b
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/85bc4a6b

Branch: refs/heads/master
Commit: 85bc4a6b7e20057821c42fc6d49c0724cd414fcf
Parents: 0634da9
Author: Andrew Gaul <ga...@apache.org>
Authored: Sun Dec 13 22:07:04 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Sun Dec 13 22:24:53 2015 -0800

----------------------------------------------------------------------
 .../storage/reference/AzureStorageHeaders.java  |  5 +++
 .../org/jclouds/azureblob/AzureBlobClient.java  |  2 +-
 .../BindAzureContentMetadataToRequest.java      | 23 +++++++++----
 .../azureblob/AzureBlobClientLiveTest.java      | 34 ++++++++++++++++++++
 4 files changed, 57 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/85bc4a6b/providers/azureblob/src/main/java/org/jclouds/azure/storage/reference/AzureStorageHeaders.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azure/storage/reference/AzureStorageHeaders.java b/providers/azureblob/src/main/java/org/jclouds/azure/storage/reference/AzureStorageHeaders.java
index b57caa9..9521e37 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azure/storage/reference/AzureStorageHeaders.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azure/storage/reference/AzureStorageHeaders.java
@@ -23,6 +23,11 @@ package org.jclouds.azure.storage.reference;
  */
 public final class AzureStorageHeaders {
 
+   public static final String CONTENT_DISPOSITION = "x-ms-blob-content-disposition";
+   public static final String CONTENT_ENCODING = "x-ms-blob-content-encoding";
+   public static final String CONTENT_LANGUAGE = "x-ms-blob-content-language";
+   public static final String CONTENT_TYPE = "x-ms-blob-content-type";
+
    public static final String USER_METADATA_PREFIX = "x-ms-meta-";
 
    public static final String COPY_SOURCE = "x-ms-copy-source";

http://git-wip-us.apache.org/repos/asf/jclouds/blob/85bc4a6b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
index b8a25e5..b2fa4f5 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/AzureBlobClient.java
@@ -418,7 +418,7 @@ public interface AzureBlobClient extends Closeable {
    @Named("SetBlobProperties")
    @PUT
    @Path("{container}/{name}")
-   @QueryParams(keys = { "comp" }, values = { "metadata" })
+   @QueryParams(keys = { "comp" }, values = { "properties" })
    @ResponseParser(ParseETagHeader.class)
    String setBlobProperties(
          @PathParam("container") @ParamValidators(ContainerNameValidator.class) String container,

http://git-wip-us.apache.org/repos/asf/jclouds/blob/85bc4a6b/providers/azureblob/src/main/java/org/jclouds/azureblob/binders/BindAzureContentMetadataToRequest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/binders/BindAzureContentMetadataToRequest.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/binders/BindAzureContentMetadataToRequest.java
index 2bf496d..6568e4d 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/binders/BindAzureContentMetadataToRequest.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/binders/BindAzureContentMetadataToRequest.java
@@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull;
 
 import javax.inject.Singleton;
 
+import org.jclouds.azure.storage.reference.AzureStorageHeaders;
 import org.jclouds.http.HttpRequest;
 import org.jclouds.io.ContentMetadata;
 import org.jclouds.rest.Binder;
@@ -44,14 +45,24 @@ public class BindAzureContentMetadataToRequest implements Binder {
 
       ImmutableMap.Builder<String, String> headers = ImmutableMap.builder();
 
-      String contentType = contentMetadata.getContentType();
-      if (contentType != null) {
-         headers.put("x-ms-blob-type", contentType);
-      }
-
       String contentDisposition = contentMetadata.getContentDisposition();
       if (contentDisposition != null) {
-         headers.put("x-ms-blob-content-disposition", contentDisposition);
+         headers.put(AzureStorageHeaders.CONTENT_DISPOSITION, contentDisposition);
+      }
+
+      String contentEncoding = contentMetadata.getContentEncoding();
+      if (contentEncoding != null) {
+         headers.put(AzureStorageHeaders.CONTENT_ENCODING, contentEncoding);
+      }
+
+      String contentLanguage = contentMetadata.getContentLanguage();
+      if (contentLanguage != null) {
+         headers.put(AzureStorageHeaders.CONTENT_LANGUAGE, contentLanguage);
+      }
+
+      String contentType = contentMetadata.getContentType();
+      if (contentType != null) {
+         headers.put(AzureStorageHeaders.CONTENT_TYPE, contentType);
       }
 
       return (R) request.toBuilder().replaceHeaders(Multimaps.forMap(headers.build())).build();

http://git-wip-us.apache.org/repos/asf/jclouds/blob/85bc4a6b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
index db3ef9d..7bc7236 100644
--- a/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
+++ b/providers/azureblob/src/test/java/org/jclouds/azureblob/AzureBlobClientLiveTest.java
@@ -50,6 +50,8 @@ import org.jclouds.blobstore.integration.internal.BaseBlobStoreIntegrationTest;
 import org.jclouds.http.HttpResponseException;
 import org.jclouds.http.options.GetOptions;
 import org.jclouds.io.ByteStreams2;
+import org.jclouds.io.ContentMetadata;
+import org.jclouds.io.ContentMetadataBuilder;
 import org.jclouds.io.Payloads;
 import org.jclouds.util.Strings2;
 import org.jclouds.util.Throwables2;
@@ -544,4 +546,36 @@ public class AzureBlobClientLiveTest extends BaseBlobStoreIntegrationTest {
       AzureBlob getBlob = getApi().getBlob(privateContainer, "to-if-none-match");
       assertEquals(ByteStreams2.toByteArrayAndClose(getBlob.getPayload().openStream()), byteSource.read());
    }
+
+   @Test
+   public void testSetBlobProperties() throws Exception {
+      String blobName = "blob-name";
+      ByteSource byteSource = TestUtils.randomByteSource().slice(0, 1024);
+      String contentDisposition = "attachment; filename=photo.jpg";
+      String contentEncoding = "compress";
+      String contentLanguage = "en";
+      String contentType = "audio/ogg";
+
+      // create blob
+      AzureBlob object = getApi().newBlob();
+      object.getProperties().setName(blobName);
+      object.setPayload(byteSource.read());
+      getApi().putBlob(privateContainer, object);
+
+      // set properties
+      getApi().setBlobProperties(privateContainer, blobName, ContentMetadataBuilder.create()
+              .contentDisposition(contentDisposition)
+              .contentEncoding(contentEncoding)
+              .contentLanguage(contentLanguage)
+              .contentType(contentType)
+              .build());
+
+      // get properties
+      BlobProperties properties = getApi().getBlobProperties(privateContainer, blobName);
+      ContentMetadata contentMetadata = properties.getContentMetadata();
+      assertThat(contentMetadata.getContentDisposition()).isEqualTo(contentDisposition);
+      assertThat(contentMetadata.getContentEncoding()).isEqualTo(contentEncoding);
+      assertThat(contentMetadata.getContentLanguage()).isEqualTo(contentLanguage);
+      assertThat(contentMetadata.getContentType()).isEqualTo(contentType);
+   }
 }


[2/2] jclouds git commit: Allow setting content metadata during copyBlob

Posted by ga...@apache.org.
Allow setting content metadata during copyBlob

Also remove unneeded call to setBlobMetadata which copy sets.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/b64d05ab
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/b64d05ab
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/b64d05ab

Branch: refs/heads/master
Commit: b64d05abb9f04bad28b9f08382f6d52c8ecd6fb3
Parents: 85bc4a6
Author: Andrew Gaul <ga...@apache.org>
Authored: Sun Dec 13 22:28:01 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Sun Dec 13 22:33:08 2015 -0800

----------------------------------------------------------------------
 .../azureblob/blobstore/AzureBlobStore.java       | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/b64d05ab/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
----------------------------------------------------------------------
diff --git a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
index 45d3e7c..4702a05 100644
--- a/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
+++ b/providers/azureblob/src/main/java/org/jclouds/azureblob/blobstore/AzureBlobStore.java
@@ -242,15 +242,25 @@ public class AzureBlobStore extends BaseBlobStore {
       URI source = context.getSigner().signGetBlob(fromContainer, fromName).getEndpoint();
       String eTag = sync.copyBlob(source, toContainer, toName, azureOptions.build());
 
-      ContentMetadataBuilder builder = ContentMetadataBuilder.create();
-
       Optional<ContentMetadata> contentMetadata = options.getContentMetadata();
       if (contentMetadata.isPresent()) {
+         ContentMetadataBuilder builder = ContentMetadataBuilder.create();
+
          String contentDisposition = contentMetadata.get().getContentDisposition();
          if (contentDisposition != null) {
             builder.contentDisposition(contentDisposition);
          }
 
+         String contentEncoding = contentMetadata.get().getContentEncoding();
+         if (contentEncoding != null) {
+            builder.contentEncoding(contentEncoding);
+         }
+
+         String contentLanguage = contentMetadata.get().getContentLanguage();
+         if (contentLanguage != null) {
+            builder.contentLanguage(contentLanguage);
+         }
+
          String contentType = contentMetadata.get().getContentType();
          if (contentType != null) {
             builder.contentType(contentType);
@@ -259,10 +269,6 @@ public class AzureBlobStore extends BaseBlobStore {
          eTag = sync.setBlobProperties(toContainer, toName, builder.build());
       }
 
-      if (userMetadata.isPresent()) {
-         eTag = sync.setBlobMetadata(toContainer, toName, userMetadata.get());
-      }
-
       return eTag;
    }