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/21 19:29:22 UTC

[5/6] jclouds git commit: JCLOUDS-732: S3 portable object ACLs

JCLOUDS-732: S3 portable object ACLs


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

Branch: refs/heads/master
Commit: 6c8be1270384e9b6f051b7a9c6bb8cca6d9a57ef
Parents: d8aea21
Author: Andrew Gaul <ga...@apache.org>
Authored: Wed Feb 18 15:29:43 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Sat Feb 21 10:28:02 2015 -0800

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


http://git-wip-us.apache.org/repos/asf/jclouds/blob/6c8be127/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 b12ccb8..2d6b84a 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 javax.inject.Singleton;
 import org.jclouds.blobstore.BlobStoreContext;
 import org.jclouds.blobstore.ContainerNotFoundException;
 import org.jclouds.blobstore.domain.Blob;
+import org.jclouds.blobstore.domain.BlobAccess;
 import org.jclouds.blobstore.domain.BlobMetadata;
 import org.jclouds.blobstore.domain.ContainerAccess;
 import org.jclouds.blobstore.domain.PageSet;
@@ -292,6 +293,31 @@ public class S3BlobStore extends BaseBlobStore {
       }
    }
 
+   @Override
+   public BlobAccess getBlobAccess(String container, String name) {
+      AccessControlList acl = sync.getObjectACL(container, name);
+      if (acl.hasPermission(GroupGranteeURI.ALL_USERS, Permission.READ)) {
+         return BlobAccess.PUBLIC_READ;
+      } else {
+         return BlobAccess.PRIVATE;
+      }
+   }
+
+   @Override
+   public void setBlobAccess(String container, String name, BlobAccess access) {
+      AccessControlList acl = sync.getObjectACL(container, name);
+      if (access == BlobAccess.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 == BlobAccess.PRIVATE) {
+         acl.revokePermission(GroupGranteeURI.ALL_USERS, Permission.FULL_CONTROL)
+               .revokePermission(GroupGranteeURI.ALL_USERS, Permission.READ)
+               .revokePermission(GroupGranteeURI.ALL_USERS, Permission.WRITE);
+      }
+      sync.putObjectACL(container, name, acl);
+   }
+
    /**
     * This implementation invokes {@link S3Utils#deleteAndVerifyContainerGone}
     */