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/23 07:54:23 UTC
jclouds-labs-google git commit: JCLOUDS-844: GCS putBlob ACLs
Repository: jclouds-labs-google
Updated Branches:
refs/heads/master a50aee663 -> 34561eae6
JCLOUDS-844: GCS putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/commit/34561eae
Tree: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/tree/34561eae
Diff: http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/diff/34561eae
Branch: refs/heads/master
Commit: 34561eae6a92df87761a5696a04712c1fbe80719
Parents: a50aee6
Author: Andrew Gaul <ga...@apache.org>
Authored: Mon Dec 21 23:01:01 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Mon Dec 21 23:25:00 2015 -0800
----------------------------------------------------------------------
.../blobstore/GoogleCloudStorageBlobStore.java | 44 ++++++++++++++------
1 file changed, 32 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/jclouds-labs-google/blob/34561eae/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
----------------------------------------------------------------------
diff --git a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
index 5dbb7cd..a3b22d1 100644
--- a/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
+++ b/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
@@ -209,15 +209,7 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
*/
@Override
public String putBlob(String container, Blob blob) {
- checkNotNull(blob.getPayload().getContentMetadata().getContentLength());
- HashCode md5 = blob.getMetadata().getContentMetadata().getContentMD5AsHashCode();
-
- ObjectTemplate template = blobMetadataToObjectTemplate.apply(blob.getMetadata());
-
- if (md5 != null) {
- template.md5Hash(base64().encode(md5.asBytes()));
- }
- return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).etag();
+ return putBlob(container, blob, PutOptions.NONE);
}
@Override
@@ -225,7 +217,25 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
if (options.isMultipart()) {
return putMultipartBlob(container, blob, options);
} else {
- return putBlob(container, blob);
+ checkNotNull(blob.getPayload().getContentMetadata().getContentLength());
+
+ ObjectTemplate template = blobMetadataToObjectTemplate.apply(blob.getMetadata());
+
+ HashCode md5 = blob.getMetadata().getContentMetadata().getContentMD5AsHashCode();
+ if (md5 != null) {
+ template.md5Hash(base64().encode(md5.asBytes()));
+ }
+
+ if (options.getBlobAccess() == BlobAccess.PUBLIC_READ) {
+ ObjectAccessControls controls = ObjectAccessControls.builder()
+ .entity("allUsers")
+ .bucket(container)
+ .role(READER)
+ .build();
+ template.addAcl(controls);
+ }
+
+ return api.getObjectApi().multipartUpload(container, template, blob.getPayload()).etag();
}
}
@@ -342,9 +352,9 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
}
@Override
- public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata) {
+ public MultipartUpload initiateMultipartUpload(String container, BlobMetadata blobMetadata, PutOptions options) {
String uploadId = blobMetadata.getName();
- return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata);
+ return MultipartUpload.create(container, blobMetadata.getName(), uploadId, blobMetadata, options);
}
@Override
@@ -364,7 +374,17 @@ public final class GoogleCloudStorageBlobStore extends BaseBlobStore {
builder.add(api.getObjectApi().getObject(mpu.containerName(),
Strings2.urlEncode(getMPUPartName(mpu, part.partNumber()))));
}
+
ObjectTemplate destination = blobMetadataToObjectTemplate.apply(mpu.blobMetadata());
+ if (mpu.putOptions().getBlobAccess() == BlobAccess.PUBLIC_READ) {
+ ObjectAccessControls controls = ObjectAccessControls.builder()
+ .entity("allUsers")
+ .bucket(mpu.containerName())
+ .role(READER)
+ .build();
+ destination.addAcl(controls);
+ }
+
ComposeObjectTemplate template = ComposeObjectTemplate.builder().fromGoogleCloudStorageObject(builder.build())
.destination(destination).build();
return api.getObjectApi().composeObjects(mpu.containerName(), Strings2.urlEncode(mpu.blobName()), template)