diff --git a/src/main/java/com/upplication/s3fs/util/S3Utils.java b/src/main/java/com/upplication/s3fs/util/S3Utils.java index aff084f..d167d70 100644 --- a/src/main/java/com/upplication/s3fs/util/S3Utils.java +++ b/src/main/java/com/upplication/s3fs/util/S3Utils.java @@ -11,6 +11,7 @@ import java.nio.file.NoSuchFileException; import java.nio.file.attribute.FileTime; import java.nio.file.attribute.PosixFilePermission; +import java.nio.file.attribute.PosixFilePermissions; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -94,17 +95,18 @@ public S3PosixFileAttributes getS3PosixFileAttributes(S3Path s3Path) throws NoSu String bucketName = s3Path.getFileStore().name(); S3BasicFileAttributes attrs = toS3FileAttributes(objectSummary, key); - S3UserPrincipal userPrincipal = null; - Set permissions = null; + AccessControlList acl; + AmazonS3 client = s3Path.getFileSystem().getClient(); if (!attrs.isDirectory()) { - AmazonS3 client = s3Path.getFileSystem().getClient(); - AccessControlList acl = client.getObjectAcl(bucketName, key); - Owner owner = acl.getOwner(); + acl = client.getObjectAcl(bucketName, key); + } else { + acl = client.getBucketAcl(bucketName); - userPrincipal = new S3UserPrincipal(owner.getId() + ":" + owner.getDisplayName()); - permissions = toPosixFilePermissions(acl.getGrantsAsList()); } + Owner owner = acl.getOwner(); + S3UserPrincipal userPrincipal = new S3UserPrincipal(owner.getId() + ":" + owner.getDisplayName()); + Set permissions = toPosixFilePermissions(acl.getGrantsAsList()); return new S3PosixFileAttributes((String)attrs.fileKey(), attrs.lastModifiedTime(), attrs.size(), attrs.isDirectory(), attrs.isRegularFile(), userPrincipal, null, permissions); @@ -189,4 +191,4 @@ public S3BasicFileAttributes toS3FileAttributes(S3ObjectSummary objectSummary, S } return new S3BasicFileAttributes(resolvedKey, lastModifiedTime, size, directory, regularFile); } -} \ No newline at end of file +}