mirror of https://github.com/apache/jclouds.git
Merge pull request #868 from andrewgaul/filesystem-get-all-container-names
Simplify filesystem blobstore getAllContainerNames
This commit is contained in:
commit
5da084d6c4
|
@ -21,11 +21,8 @@ package org.jclouds.filesystem.strategy.internal;
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileFilter;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
@ -34,11 +31,11 @@ import javax.inject.Named;
|
||||||
import javax.inject.Provider;
|
import javax.inject.Provider;
|
||||||
|
|
||||||
import com.google.common.base.Throwables;
|
import com.google.common.base.Throwables;
|
||||||
|
import com.google.common.collect.ImmutableList;
|
||||||
import com.google.common.io.ByteStreams;
|
import com.google.common.io.ByteStreams;
|
||||||
import com.google.common.io.Files;
|
import com.google.common.io.Files;
|
||||||
|
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.filefilter.DirectoryFileFilter;
|
|
||||||
import org.jclouds.blobstore.LocalStorageStrategy;
|
import org.jclouds.blobstore.LocalStorageStrategy;
|
||||||
import org.jclouds.blobstore.domain.Blob;
|
import org.jclouds.blobstore.domain.Blob;
|
||||||
import org.jclouds.blobstore.domain.BlobBuilder;
|
import org.jclouds.blobstore.domain.BlobBuilder;
|
||||||
|
@ -93,14 +90,17 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<String> getAllContainerNames() {
|
public Iterable<String> getAllContainerNames() {
|
||||||
Iterable<String> containers = new Iterable<String>() {
|
File[] files = new File(buildPathStartingFromBaseDir()).listFiles();
|
||||||
@Override
|
if (files == null) {
|
||||||
public Iterator<String> iterator() {
|
return ImmutableList.of();
|
||||||
return new FileIterator(buildPathStartingFromBaseDir(), DirectoryFileFilter.INSTANCE);
|
|
||||||
}
|
}
|
||||||
};
|
ImmutableList.Builder<String> containers = ImmutableList.builder();
|
||||||
|
for (File file : files) {
|
||||||
return containers;
|
if (file.isDirectory()) {
|
||||||
|
containers.add(file.getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return containers.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -433,39 +433,6 @@ public class FilesystemStorageStrategyImpl implements LocalStorageStrategy {
|
||||||
return folder;
|
return folder;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class FileIterator implements Iterator<String> {
|
|
||||||
int currentFileIndex = 0;
|
|
||||||
File[] children = new File[0];
|
|
||||||
File currentFile = null;
|
|
||||||
|
|
||||||
public FileIterator(String fileName, FileFilter filter) {
|
|
||||||
File file = new File(fileName);
|
|
||||||
if (file.exists() && file.isDirectory()) {
|
|
||||||
children = file.listFiles(filter);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasNext() {
|
|
||||||
return currentFileIndex < children.length;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String next() {
|
|
||||||
currentFile = children[currentFileIndex++];
|
|
||||||
return currentFile.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void remove() {
|
|
||||||
if (currentFile != null && currentFile.exists()) {
|
|
||||||
if (!currentFile.delete()) {
|
|
||||||
throw new RuntimeException("An error occurred deleting " + currentFile.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void populateBlobKeysInContainer(File directory, Set<String> blobNames) {
|
private void populateBlobKeysInContainer(File directory, Set<String> blobNames) {
|
||||||
File[] children = directory.listFiles();
|
File[] children = directory.listFiles();
|
||||||
for (File child : children) {
|
for (File child : children) {
|
||||||
|
|
Loading…
Reference in New Issue