Repository: jclouds
Updated Branches:
  refs/heads/master 9d88f6df5 -> 36353d615


[JCLOUDS-1422] Ensure that LocalBlobStore.list honors !recursive even when a 
prefix is defined.


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/36353d61
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/36353d61
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/36353d61

Branch: refs/heads/master
Commit: 36353d6157a1c6c3f8f5e8497a68802a79784b12
Parents: 11fac4f
Author: Jesse Glick <[email protected]>
Authored: Tue May 22 20:06:21 2018 -0400
Committer: Andrew Gaul <[email protected]>
Committed: Wed Jun 6 22:47:56 2018 -0700

----------------------------------------------------------------------
 .../blobstore/config/LocalBlobStore.java        |  5 ++--
 .../strategy/internal/ListContainerTest.java    | 24 +++++++++++++++++++-
 2 files changed, 26 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/36353d61/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
----------------------------------------------------------------------
diff --git 
a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java 
b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
index 98c006d..77cee20 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -343,8 +343,9 @@ public final class LocalBlobStore implements BlobStore {
          }
       }));
 
-      if (options.getDelimiter() != null) {
-         return extractCommonPrefixes(contents, options.getDelimiter(), 
options.getPrefix());
+      if (options.getDelimiter() != null || !options.isRecursive()) {
+          String delimiter = options.getDelimiter() == null ? 
storageStrategy.getSeparator() : options.getDelimiter();
+          return extractCommonPrefixes(contents, delimiter, 
options.getPrefix());
       }
 
       return contents;

http://git-wip-us.apache.org/repos/asf/jclouds/blob/36353d61/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
----------------------------------------------------------------------
diff --git 
a/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
 
b/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
index 421cb2d..cb9f79e 100644
--- 
a/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
+++ 
b/blobstore/src/test/java/org/jclouds/blobstore/strategy/internal/ListContainerTest.java
@@ -72,7 +72,7 @@ public class ListContainerTest {
       blobStore.putBlob(containerName, 
blobStore.blobBuilder("bar").payload("").build());
 
       Iterable<? extends StorageMetadata> results = 
concatter.execute(containerName,
-            ListContainerOptions.Builder.prefix(prefix).recursive());
+            ListContainerOptions.Builder.prefix(prefix)./* irrelevant 
*/recursive());
       assertThat(results).hasSize(3);
       assertThat(Iterables.get(results, 0).getName()).isEqualTo(prefix);
       assertThat(Iterables.get(results, 
0).getType()).isEqualTo(StorageType.BLOB);
@@ -126,6 +126,28 @@ public class ListContainerTest {
       assertThat(Iterables.get(results, 2).getName()).isEqualTo(prefix + 
"baz/object");
    }
 
+   public void testListRecursivePrefixDelimiter() {
+      String containerName = "testListRecursivePrefixDelimiter";
+      String prefix = "foo/";
+      blobStore.createContainerInLocation(null, containerName);
+      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"object").payload("").build());
+      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"bar/object").payload("")
+            .build());
+      blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"baz/object").payload("")
+            .build());
+      blobStore.putBlob(containerName, 
blobStore.blobBuilder("bar/object").payload("").build());
+
+      Iterable<? extends StorageMetadata> results = 
concatter.execute(containerName,
+            ListContainerOptions.Builder.prefix(prefix));
+      assertThat(results).hasSize(3);
+      assertThat(Iterables.get(results, 
0).getType()).isEqualTo(StorageType.RELATIVE_PATH);
+      assertThat(Iterables.get(results, 0).getName()).isEqualTo(prefix + 
"bar/");
+      assertThat(Iterables.get(results, 
1).getType()).isEqualTo(StorageType.RELATIVE_PATH);
+      assertThat(Iterables.get(results, 1).getName()).isEqualTo(prefix + 
"baz/");
+      assertThat(Iterables.get(results, 
2).getType()).isEqualTo(StorageType.BLOB);
+      assertThat(Iterables.get(results, 2).getName()).isEqualTo(prefix + 
"object");
+   }
+
    public void testListDirectory() {
       String containerName = "testListDir";
       String directory = "dir";

Reply via email to