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/04/01 02:24:16 UTC

[4/4] jclouds git commit: JCLOUDS-732: Filesystem portable object ACLs

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

Branch: refs/heads/master
Commit: fadbbad8acbcc18dcaa3c0cd25382006012e1f14
Parents: 279a984
Author: Andrew Gaul <ga...@apache.org>
Authored: Tue Mar 31 15:24:29 2015 -0700
Committer: Andrew Gaul <ga...@apache.org>
Committed: Tue Mar 31 15:33:34 2015 -0700

----------------------------------------------------------------------
 .../internal/FilesystemStorageStrategyImpl.java | 32 ++++++++++++++++++++
 .../FilesystemBlobIntegrationTest.java          |  6 ----
 2 files changed, 32 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/fadbbad8/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
index 004d2e0..2f9f14b 100644
--- a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
+++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java
@@ -45,6 +45,7 @@ import javax.inject.Provider;
 
 import org.jclouds.blobstore.LocalStorageStrategy;
 import org.jclouds.blobstore.domain.Blob;
+import org.jclouds.blobstore.domain.BlobAccess;
 import org.jclouds.blobstore.domain.BlobBuilder;
 import org.jclouds.blobstore.domain.ContainerAccess;
 import org.jclouds.blobstore.domain.MutableStorageMetadata;
@@ -430,6 +431,7 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
                logger.debug("xattrs not supported on %s", outputPath);
             }
          }
+         setBlobAccess(containerName, blobKey, BlobAccess.PRIVATE);
          return base16().lowerCase().encode(actualHashCode.asBytes());
       } catch (IOException ex) {
          if (outputFile != null) {
@@ -476,6 +478,36 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
    }
 
    @Override
+   public BlobAccess getBlobAccess(String containerName, String blobName) {
+      Path path = new File(buildPathStartingFromBaseDir(containerName, blobName)).toPath();
+      Set<PosixFilePermission> permissions;
+      try {
+         permissions = getPosixFilePermissions(path);
+      } catch (IOException ioe) {
+         throw Throwables.propagate(ioe);
+      }
+      return permissions.contains(PosixFilePermission.OTHERS_READ)
+            ? BlobAccess.PUBLIC_READ : BlobAccess.PRIVATE;
+   }
+
+   @Override
+   public void setBlobAccess(String container, String name, BlobAccess access) {
+      Path path = new File(buildPathStartingFromBaseDir(container, name)).toPath();
+      Set<PosixFilePermission> permissions;
+      try {
+         permissions = getPosixFilePermissions(path);
+         if (access == BlobAccess.PRIVATE) {
+            permissions.remove(PosixFilePermission.OTHERS_READ);
+         } else if (access == BlobAccess.PUBLIC_READ) {
+            permissions.add(PosixFilePermission.OTHERS_READ);
+         }
+         setPosixFilePermissions(path, permissions);
+      } catch (IOException ioe) {
+         throw Throwables.propagate(ioe);
+      }
+   }
+
+   @Override
    public Location getLocation(final String containerName) {
       return null;
    }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/fadbbad8/apis/filesystem/src/test/java/org/jclouds/filesystem/integration/FilesystemBlobIntegrationTest.java
----------------------------------------------------------------------
diff --git a/apis/filesystem/src/test/java/org/jclouds/filesystem/integration/FilesystemBlobIntegrationTest.java b/apis/filesystem/src/test/java/org/jclouds/filesystem/integration/FilesystemBlobIntegrationTest.java
index 417a4d9..0452389 100644
--- a/apis/filesystem/src/test/java/org/jclouds/filesystem/integration/FilesystemBlobIntegrationTest.java
+++ b/apis/filesystem/src/test/java/org/jclouds/filesystem/integration/FilesystemBlobIntegrationTest.java
@@ -27,7 +27,6 @@ import org.jclouds.blobstore.integration.internal.BaseBlobStoreIntegrationTest;
 import org.jclouds.filesystem.reference.FilesystemConstants;
 import org.jclouds.filesystem.utils.TestUtils;
 import org.testng.annotations.Test;
-import org.testng.SkipException;
 
 @Test(groups = { "integration" }, singleThreaded = true,  testName = "blobstore.FilesystemBlobIntegrationTest")
 public class FilesystemBlobIntegrationTest extends BaseBlobIntegrationTest {
@@ -86,9 +85,4 @@ public class FilesystemBlobIntegrationTest extends BaseBlobIntegrationTest {
          super.checkUserMetadata(userMetadata1, userMetadata2);
       }
    }
-
-   @Override
-   public void testSetBlobAccess() throws Exception {
-      throw new SkipException("Intentionally not implemented for the transient provider");
-   }
 }