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 2018/06/07 05:49:31 UTC

[2/2] jclouds git commit: [JCLOUDS-1422] Ensure that LocalBlobStore.list honors !recursive even when a prefix is defined.

[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/8d2808e3
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/8d2808e3
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/8d2808e3

Branch: refs/heads/2.1.x
Commit: 8d2808e3091a888e9812149e68fecd294628c0d3
Parents: 3cb8d4f
Author: Jesse Glick <jg...@cloudbees.com>
Authored: Tue May 22 20:06:21 2018 -0400
Committer: Andrew Gaul <ga...@apache.org>
Committed: Wed Jun 6 22:49:19 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/8d2808e3/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 f440312..5acd62e 100644
--- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
+++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java
@@ -342,8 +342,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/8d2808e3/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";