From d1f5952a8e537aa1720d0f1c63ebd03f89e23e84 Mon Sep 17 00:00:00 2001 From: andrey-qlogic Date: Tue, 8 Jan 2019 13:32:35 +0000 Subject: [PATCH] 3918: Added checking of attributes size for 0. Added unit test --- .../contrib/nio/CloudStorageFileSystemProvider.java | 6 ++++++ .../contrib/nio/CloudStorageFileAttributesTest.java | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/main/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProvider.java b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/main/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProvider.java index d4d7e0a246ee..4f22c9aeb89e 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/main/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProvider.java +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/main/java/com/google/cloud/storage/contrib/nio/CloudStorageFileSystemProvider.java @@ -768,6 +768,12 @@ public A readAttributes( } CloudStorageObjectAttributes ret; ret = new CloudStorageObjectAttributes(blobInfo); + // if size is 0 it could be a folder + if (ret.size() == 0 && cloudPath.seemsLikeADirectoryAndUsePseudoDirectories(storage)) { + @SuppressWarnings("unchecked") + A result = (A) new CloudStoragePseudoDirectoryAttributes(cloudPath); + return result; + } @SuppressWarnings("unchecked") A result = (A) ret; return result; diff --git a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java index 472c0cf0a5ce..041c66670ff7 100644 --- a/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java +++ b/google-cloud-clients/google-cloud-contrib/google-cloud-nio/src/test/java/com/google/cloud/storage/contrib/nio/CloudStorageFileAttributesTest.java @@ -38,6 +38,7 @@ public class CloudStorageFileAttributesTest { private static final byte[] HAPPY = "(✿◕ ‿◕ )ノ".getBytes(UTF_8); + private static final byte[] EMPTY = "".getBytes(UTF_8); private Path path; private Path dir; @@ -104,6 +105,14 @@ public void testIsDirectory() throws IOException { assertThat(Files.readAttributes(dir, CloudStorageFileAttributes.class).isDirectory()).isTrue(); } + @Test + public void testIsPseudoDirectory() throws IOException { + Files.write(path, EMPTY); + assertThat(Files.readAttributes(path, CloudStorageFileAttributes.class).isDirectory()) + .isFalse(); + assertThat(Files.readAttributes(dir, CloudStorageFileAttributes.class).isDirectory()).isTrue(); + } + @Test public void testIsRegularFile() throws IOException { Files.write(path, HAPPY);