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 2017/05/08 18:10:27 UTC
[25/50] jclouds git commit: JCLOUDS-844: GCS putBlob ACLs
JCLOUDS-844: GCS putBlob ACLs
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/57d162c6
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/57d162c6
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/57d162c6
Branch: refs/heads/master
Commit: 57d162c646b83ca69da804b95fef987b2ca352f0
Parents: 639e96d
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/blob/57d162c6/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
----------------------------------------------------------------------
diff --git a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java b/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
index 5dbb7cd..a3b22d1 100644
--- a/providers/google-cloud-storage/src/main/java/org/jclouds/googlecloudstorage/blobstore/GoogleCloudStorageBlobStore.java
+++ b/providers/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)