Repository: jclouds
Updated Branches:
  refs/heads/master cbb76523c -> 584ca19fa


JCLOUDS-1392: Do not filter non BLOBs during list


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

Branch: refs/heads/master
Commit: 584ca19fadcfcc0c603598eced249a42cc85b484
Parents: cbb7652
Author: Alin Dreghiciu <[email protected]>
Authored: Wed Mar 7 21:01:06 2018 +0200
Committer: Andrew Gaul <[email protected]>
Committed: Thu Mar 8 22:39:26 2018 -0800

----------------------------------------------------------------------
 .../strategy/internal/FetchBlobMetadata.java    | 25 ++++++++------------
 .../internal/BaseContainerIntegrationTest.java  | 22 +++++++++++++++++
 2 files changed, 32 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/584ca19f/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/FetchBlobMetadata.java
----------------------------------------------------------------------
diff --git 
a/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/FetchBlobMetadata.java
 
b/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/FetchBlobMetadata.java
index 79f10a4..191ecbd 100644
--- 
a/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/FetchBlobMetadata.java
+++ 
b/blobstore/src/main/java/org/jclouds/blobstore/strategy/internal/FetchBlobMetadata.java
@@ -24,9 +24,9 @@ import java.util.concurrent.Callable;
 import javax.annotation.Resource;
 import javax.inject.Named;
 
+import com.google.common.util.concurrent.Futures;
 import org.jclouds.Constants;
 import org.jclouds.blobstore.BlobStore;
-import org.jclouds.blobstore.domain.BlobMetadata;
 import org.jclouds.blobstore.domain.PageSet;
 import org.jclouds.blobstore.domain.StorageMetadata;
 import org.jclouds.blobstore.domain.StorageType;
@@ -37,8 +37,6 @@ import org.jclouds.javax.annotation.concurrent.NotThreadSafe;
 import org.jclouds.logging.Logger;
 
 import com.google.common.base.Function;
-import com.google.common.base.Predicate;
-import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
@@ -81,19 +79,16 @@ public class FetchBlobMetadata implements 
Function<PageSet<? extends StorageMeta
    public PageSet<? extends StorageMetadata> apply(PageSet<? extends 
StorageMetadata> in) {
       checkState(container != null, "container name should be initialized");
 
-      Iterable<BlobMetadata> returnv = 
Lists.newArrayList(transformParallel(Iterables.filter(in, new 
Predicate<StorageMetadata>() {
+      Iterable<StorageMetadata> returnv = 
Lists.newArrayList(transformParallel(in,
+          new Function<StorageMetadata, ListenableFuture<? extends 
StorageMetadata>>() {
 
          @Override
-         public boolean apply(StorageMetadata input) {
-            return input.getType() == StorageType.BLOB;
-         }
-
-      }), new Function<StorageMetadata, ListenableFuture<? extends 
BlobMetadata>>() {
-
-         @Override
-         public ListenableFuture<BlobMetadata> apply(final StorageMetadata 
from) {
-            return userExecutor.submit(new Callable<BlobMetadata>() {
-               @Override public BlobMetadata call() throws Exception {
+         public ListenableFuture<StorageMetadata> apply(final StorageMetadata 
from) {
+            if (from.getType() != StorageType.BLOB) {
+               return Futures.immediateFuture(from);
+            }
+            return userExecutor.submit(new Callable<StorageMetadata>() {
+               @Override public StorageMetadata call() throws Exception {
                   return blobstore.blobMetadata(container, from.getName());
                }
             });
@@ -101,6 +96,6 @@ public class FetchBlobMetadata implements Function<PageSet<? 
extends StorageMeta
 
       }, userExecutor, maxTime, logger, String.format("getting metadata from 
containerName: %s", container)));
 
-      return new PageSetImpl<BlobMetadata>(returnv, in.getNextMarker());
+      return new PageSetImpl<StorageMetadata>(returnv, in.getNextMarker());
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/584ca19f/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
 
b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
index 9c22fb8..abbaba7 100644
--- 
a/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
+++ 
b/blobstore/src/test/java/org/jclouds/blobstore/integration/internal/BaseContainerIntegrationTest.java
@@ -553,6 +553,28 @@ public class BaseContainerIntegrationTest extends 
BaseBlobStoreIntegrationTest {
    }
 
    @Test(groups = {"integration", "live"})
+   public void testContainerListWithDetails() throws InterruptedException {
+      final String containerName = getContainerName();
+      BlobStore blobStore = view.getBlobStore();
+      String prefix = "testContainerListWithDetails/";
+      try {
+         blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"foo/bar").payload("").build());
+         blobStore.putBlob(containerName, blobStore.blobBuilder(prefix + 
"car").payload("").build());
+         checkEqualNames(
+             ImmutableSet.of(prefix + "foo/", prefix + "car"),
+             blobStore.list(containerName, 
ListContainerOptions.Builder.prefix(prefix).delimiter("/"))
+         );
+         checkEqualNames(
+             ImmutableSet.of(prefix + "foo/", prefix + "car"),
+             blobStore.list(containerName, 
ListContainerOptions.Builder.prefix(prefix).delimiter("/").withDetails())
+         );
+      }
+      finally {
+         returnContainer(containerName);
+      }
+   }
+
+   @Test(groups = {"integration", "live"})
    public void testDelimiterList() throws InterruptedException {
       final String containerName = getContainerName();
       BlobStore blobStore = view.getBlobStore();

Reply via email to