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:19 UTC

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

JCLOUDS-732: 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/49cd0aeb
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/49cd0aeb
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/49cd0aeb

Branch: refs/heads/master
Commit: 49cd0aeba2c85cfdf32f78544a41babd1156e751
Parents: bc81919
Author: Andrew Gaul <ga...@apache.org>
Authored: Wed Feb 18 13:51:31 2015 -0800
Committer: Andrew Gaul <ga...@apache.org>
Committed: Sat Feb 21 10:28:01 2015 -0800

----------------------------------------------------------------------
 .../java/org/jclouds/blobstore/BlobStore.java   |  7 +++++
 .../jclouds/blobstore/domain/BlobAccess.java    | 28 ++++++++++++++++++++
 .../internal/BaseBlobIntegrationTest.java       | 21 +++++++++++++++
 3 files changed, 56 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/49cd0aeb/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java b/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
index 59b3b0d..bebdb48 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/BlobStore.java
@@ -21,6 +21,7 @@ import java.util.Set;
 import com.google.common.annotations.Beta;
 
 import org.jclouds.blobstore.domain.Blob;
+import org.jclouds.blobstore.domain.BlobAccess;
 import org.jclouds.blobstore.domain.BlobBuilder;
 import org.jclouds.blobstore.domain.BlobMetadata;
 import org.jclouds.blobstore.domain.ContainerAccess;
@@ -296,6 +297,12 @@ public interface BlobStore {
     */
    void removeBlobs(String container, Iterable<String> names);
 
+   @Beta
+   BlobAccess getBlobAccess(String container, String name);
+
+   @Beta
+   void setBlobAccess(String container, String name, BlobAccess access);
+
    /**
     * @return a count of all blobs in the container, excluding directory markers
     */

http://git-wip-us.apache.org/repos/asf/jclouds/blob/49cd0aeb/blobstore/src/main/java/org/jclouds/blobstore/domain/BlobAccess.java
----------------------------------------------------------------------
diff --git a/blobstore/src/main/java/org/jclouds/blobstore/domain/BlobAccess.java b/blobstore/src/main/java/org/jclouds/blobstore/domain/BlobAccess.java
new file mode 100644
index 0000000..7735c3d
--- /dev/null
+++ b/blobstore/src/main/java/org/jclouds/blobstore/domain/BlobAccess.java
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jclouds.blobstore.domain;
+
+import com.google.common.annotations.Beta;
+
+@Beta
+public enum BlobAccess {
+   /** Only allow bucket owner to read and write objects. */
+   PRIVATE,
+   /** Allow all users to read object but only allow owner to write object. */
+   PUBLIC_READ;
+}

http://git-wip-us.apache.org/repos/asf/jclouds/blob/49cd0aeb/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
----------------------------------------------------------------------
diff --git a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
index 079a3b9..81b3af2 100644
--- a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
+++ b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseBlobIntegrationTest.java
@@ -51,6 +51,7 @@ import org.jclouds.blobstore.BlobStore;
 import org.jclouds.blobstore.ContainerNotFoundException;
 import org.jclouds.blobstore.attr.ConsistencyModel;
 import org.jclouds.blobstore.domain.Blob;
+import org.jclouds.blobstore.domain.BlobAccess;
 import org.jclouds.blobstore.domain.BlobBuilder.PayloadBlobBuilder;
 import org.jclouds.blobstore.domain.BlobMetadata;
 import org.jclouds.blobstore.domain.PageSet;
@@ -578,6 +579,26 @@ public class BaseBlobIntegrationTest extends BaseBlobStoreIntegrationTest {
       testPut(payload, new ByteSourcePayload(byteSource), length, new PutOptions().multipart(true));
    }
 
+   @Test(groups = { "integration", "live" })
+   public void testSetBlobAccess() throws Exception {
+      BlobStore blobStore = view.getBlobStore();
+      String containerName = getContainerName();
+      String blobName = "set-access-blob-name";
+      try {
+         addBlobToContainer(containerName, blobName, blobName, MediaType.TEXT_PLAIN);
+
+         assertThat(blobStore.getBlobAccess(containerName, blobName)).isEqualTo(BlobAccess.PRIVATE);
+
+         blobStore.setBlobAccess(containerName, blobName, BlobAccess.PUBLIC_READ);
+         assertThat(blobStore.getBlobAccess(containerName, blobName)).isEqualTo(BlobAccess.PUBLIC_READ);
+
+         blobStore.setBlobAccess(containerName, blobName, BlobAccess.PRIVATE);
+         assertThat(blobStore.getBlobAccess(containerName, blobName)).isEqualTo(BlobAccess.PRIVATE);
+      } finally {
+         returnContainer(containerName);
+      }
+   }
+
    protected void checkUserMetadata(Map<String, String> userMetadata1, Map<String, String> userMetadata2) {
       assertThat(userMetadata1).isEqualTo(userMetadata2);
    }