Repository: jclouds Updated Branches: refs/heads/2.1.x fa88bcc0d -> bc78739ea
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/bc78739e Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/bc78739e Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/bc78739e Branch: refs/heads/2.1.x Commit: bc78739ea92b6bbf322769eba336d6f0a6de95b5 Parents: fa88bcc 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:58 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/bc78739e/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/bc78739e/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();
