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/02/13 02:42:20 UTC

[7/8] jclouds git commit: JCLOUDS-660: S3 portable container ACLs

JCLOUDS-660: S3 portable container ACLs


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

Branch: refs/heads/master
Commit: ec3f0354873b246bd0e92553f2962b350f7f73c7
Parents: 994f84e
Author: Andrew Gaul <ga...@apache.org>
Authored: Fri Feb 6 14:47:42 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Thu Feb 12 17:26:48 2015 -0800

----------------------------------------------------------------------
 .../org/jclouds/s3/blobstore/S3BlobStore.java   | 26 ++++++++++++++++++++
 1 file changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/ec3f0354/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 b546cee..4d28a12 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
@@ -30,6 +30,7 @@ import org.jclouds.blobstore.BlobStoreContext;
 import org.jclouds.blobstore.ContainerNotFoundException;
 import org.jclouds.blobstore.domain.Blob;
 import org.jclouds.blobstore.domain.BlobMetadata;
+import org.jclouds.blobstore.domain.ContainerAccess;
 import org.jclouds.blobstore.domain.PageSet;
 import org.jclouds.blobstore.domain.StorageMetadata;
 import org.jclouds.blobstore.functions.BlobToHttpGetOptions;
@@ -130,6 +131,31 @@ public class S3BlobStore extends BaseBlobStore {
       return createContainerInLocation(location, container, CreateContainerOptions.NONE);
    }
 
+   @Override
+   public ContainerAccess getContainerAccess(String container) {
+      AccessControlList acl = sync.getBucketACL(container);
+      if (acl.hasPermission(GroupGranteeURI.ALL_USERS, Permission.READ)) {
+         return ContainerAccess.PUBLIC_READ;
+      } else {
+         return ContainerAccess.PRIVATE;
+      }
+   }
+
+   @Override
+   public void setContainerAccess(String container, ContainerAccess access) {
+      AccessControlList acl = sync.getBucketACL(container);
+      if (access == ContainerAccess.PUBLIC_READ) {
+         acl.revokePermission(GroupGranteeURI.ALL_USERS, Permission.FULL_CONTROL)
+               .revokePermission(GroupGranteeURI.ALL_USERS, Permission.WRITE)
+               .addPermission(GroupGranteeURI.ALL_USERS, Permission.READ);
+      } else if (access == ContainerAccess.PRIVATE) {
+         acl.revokePermission(GroupGranteeURI.ALL_USERS, Permission.FULL_CONTROL)
+               .revokePermission(GroupGranteeURI.ALL_USERS, Permission.READ)
+               .revokePermission(GroupGranteeURI.ALL_USERS, Permission.WRITE);
+      }
+      sync.putBucketACL(container, acl);
+   }
+
    /**
     * This implementation invokes {@link S3Client#listBucket}
     *