package uk.org.taverna.fswrap; import java.io.IOException; import java.nio.file.DirectoryStream; import java.nio.file.Path; import java.nio.file.ProviderMismatchException; import java.util.Iterator; public class WrappedDirectoryStream implements DirectoryStream<Path> { private WrappedFileSystem fileSystem; private DirectoryStream<Path> originalDirectoryStream; public WrappedDirectoryStream(Path dir, DirectoryStream<Path> originalDirectoryStream) { if (!(dir instanceof WrappedPath)) { throw new ProviderMismatchException("Wrong Path type " + dir.getClass()); } this.originalDirectoryStream = originalDirectoryStream; this.fileSystem = (WrappedFileSystem) dir.getFileSystem(); } @Override public void close() throws IOException { originalDirectoryStream.close(); } @Override public Iterator<Path> iterator() { final Iterator<Path> origIt = originalDirectoryStream.iterator(); return new Iterator<Path>() { @Override public boolean hasNext() { return origIt.hasNext(); } @Override public Path next() { return fileSystem.toWrappedPath(origIt.next()); } @Override public void remove() { origIt.remove(); } }; } }