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);
}