Repository: jclouds Updated Branches: refs/heads/master a4c40e15c -> 62410d31a
Handle missing containers in LocalBlobStore.list Also fix FilesystemStorageStrategyImpl.getContainerMetadata to return null on missing container as jdbc and transient already do. Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/62410d31 Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/62410d31 Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/62410d31 Branch: refs/heads/master Commit: 62410d31aec1af1bbea4ec1b0483154ad26dc4b4 Parents: a4c40e1 Author: Andrew Gaul <[email protected]> Authored: Fri May 6 21:22:44 2016 -0700 Committer: Andrew Gaul <[email protected]> Committed: Fri May 6 21:36:28 2016 -0700 ---------------------------------------------------------------------- .../internal/FilesystemStorageStrategyImpl.java | 3 +++ .../org/jclouds/blobstore/LocalStorageStrategy.java | 2 +- .../org/jclouds/blobstore/config/LocalBlobStore.java | 12 +++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/62410d31/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java ---------------------------------------------------------------------- diff --git a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java index 127f5f2..ff16954 100644 --- a/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java +++ b/apis/filesystem/src/main/java/org/jclouds/filesystem/strategy/internal/FilesystemStorageStrategyImpl.java @@ -35,6 +35,7 @@ import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; +import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.PosixFilePermission; @@ -269,6 +270,8 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy { BasicFileAttributes attr; try { attr = readAttributes(path, BasicFileAttributes.class); + } catch (NoSuchFileException nsfe) { + return null; } catch (IOException e) { throw Throwables.propagate(e); } http://git-wip-us.apache.org/repos/asf/jclouds/blob/62410d31/blobstore/src/main/java/org/jclouds/blobstore/LocalStorageStrategy.java ---------------------------------------------------------------------- diff --git a/blobstore/src/main/java/org/jclouds/blobstore/LocalStorageStrategy.java b/blobstore/src/main/java/org/jclouds/blobstore/LocalStorageStrategy.java index 597e0b7..1498ee1 100644 --- a/blobstore/src/main/java/org/jclouds/blobstore/LocalStorageStrategy.java +++ b/blobstore/src/main/java/org/jclouds/blobstore/LocalStorageStrategy.java @@ -81,7 +81,7 @@ public interface LocalStorageStrategy { */ void clearContainer(String container, ListContainerOptions options); - /** @return StorageMetadata associated with a container name, e.g., creation date and location */ + /** @return StorageMetadata associated with a container name, e.g., creation date and location, or null if container does not exist */ StorageMetadata getContainerMetadata(String container); /** http://git-wip-us.apache.org/repos/asf/jclouds/blob/62410d31/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 f1a4938..f48e2da 100644 --- a/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java +++ b/blobstore/src/main/java/org/jclouds/blobstore/config/LocalBlobStore.java @@ -88,8 +88,10 @@ import org.jclouds.util.Closeables2; import com.google.common.base.Function; import com.google.common.base.Optional; import com.google.common.base.Predicate; +import com.google.common.base.Predicates; import com.google.common.base.Supplier; import com.google.common.base.Throwables; +import com.google.common.collect.FluentIterable; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Iterators; @@ -429,12 +431,16 @@ public final class LocalBlobStore implements BlobStore { ArrayList<String> containers = new ArrayList<String>(storageStrategy.getAllContainerNames()); Collections.sort(containers); - return new PageSetImpl<StorageMetadata>(transform( - containers, new Function<String, StorageMetadata>() { + return new PageSetImpl<StorageMetadata>(FluentIterable + .from(containers) + .transform(new Function<String, StorageMetadata>() { + @Override public StorageMetadata apply(String name) { return storageStrategy.getContainerMetadata(name); } - }), null); + }) + .filter(Predicates.<StorageMetadata>notNull()), + null); } @Override
