Updated Branches: refs/heads/master b8bb4880d -> 11fbcaacd
JCLOUDS-190: list a directory within a container Note that this commit removes the ability to list multiple containers in the same command. Callers should issue multiple commands instead. Project: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/commit/11fbcaac Tree: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/tree/11fbcaac Diff: http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/diff/11fbcaac Branch: refs/heads/master Commit: 11fbcaacd5b4260170c74b722645282b3ba5939c Parents: b8bb488 Author: Andrew Gaul <[email protected]> Authored: Fri Jun 21 14:25:25 2013 -0700 Committer: Andrew Gaul <[email protected]> Committed: Mon Jul 15 18:43:01 2013 -0700 ---------------------------------------------------------------------- .../commands/blobstore/BlobListCommand.java | 66 +++++++------------- 1 file changed, 24 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-jclouds-karaf/blob/11fbcaac/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java ---------------------------------------------------------------------- diff --git a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java index 30bc5d4..88f7baa 100644 --- a/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java +++ b/commands/src/main/java/org/jclouds/karaf/commands/blobstore/BlobListCommand.java @@ -40,11 +40,11 @@ import org.jclouds.blobstore.options.ListContainerOptions; @Command(scope = "jclouds", name = "blobstore-list", description = "Lists blobs in a container") public class BlobListCommand extends BlobStoreCommandWithOptions { - @Argument(index = 0, name = "containerNames", description = "The name of the container", required = false, multiValued = true) - final List<String> containerNames = Lists.newArrayList(); + @Argument(index = 0, name = "containerName", description = "The name of the container", required = true) + String containerName; - @Option(name = "-a", aliases = "--all", description = "List all containers", required = false) - boolean listAllContainers = false; + @Argument(index = 1, name = "directoryPath", description = "List blobs only in this directory path", required = false) + String directoryPath; private static final PrintStream out = System.out; @@ -52,50 +52,32 @@ public class BlobListCommand extends BlobStoreCommandWithOptions { protected Object doExecute() throws Exception { BlobStore blobStore = getBlobStore(); - if (listAllContainers) { - containerNames.clear(); - for (StorageMetadata containerMetadata : blobStore.list()) { - String containerName = containerMetadata.getName(); - containerNames.add(containerName); - cacheProvider.getProviderCacheForType("container").put(containerMetadata.getProviderId(), containerName); - } - } else if (containerNames.isEmpty()) { - throw new CommandException("Must specify container names or --all"); + ListContainerOptions options = ListContainerOptions.Builder.recursive(); + if (directoryPath != null) { + options = options.inDirectory(directoryPath); } - for (int i = 0; i < containerNames.size(); ++i) { - String containerName = containerNames.get(i); - if (containerNames.size() > 1) { - if (i != 0) { - out.println(); - } - out.println(containerName + ":"); - } - - ListContainerOptions options = ListContainerOptions.Builder.recursive(); - - while (true) { - PageSet<? extends StorageMetadata> blobStoreMetadatas = blobStore.list(containerName, options); - List<String> blobNames = Lists.newArrayList(); + while (true) { + PageSet<? extends StorageMetadata> blobStoreMetadatas = blobStore.list(containerName, options); + List<String> blobNames = Lists.newArrayList(); - for (StorageMetadata blobMetadata : blobStoreMetadatas) { - String blobName = blobMetadata.getName(); - cacheProvider.getProviderCacheForType("blob").put(blobMetadata.getProviderId(), blobName); - blobNames.add(blobName); - } - - Collections.sort(blobNames); - for (String blobName : blobNames) { - out.println(blobName); - } + for (StorageMetadata blobMetadata : blobStoreMetadatas) { + String blobName = blobMetadata.getName(); + cacheProvider.getProviderCacheForType("blob").put(blobMetadata.getProviderId(), blobName); + blobNames.add(blobName); + } - String marker = blobStoreMetadatas.getNextMarker(); - if (marker == null) { - break; - } + Collections.sort(blobNames); + for (String blobName : blobNames) { + out.println(blobName); + } - options = options.afterMarker(marker); + String marker = blobStoreMetadatas.getNextMarker(); + if (marker == null) { + break; } + + options = options.afterMarker(marker); } return null; }
