// Path: core/src/main/java/it/nerdammer/spash/shell/common/SpashCollection.java
// public interface SpashCollection<T> extends Serializable {
// 
//     /**
//      * Prints the whole collection to the given writer.
//      *
//      * @param writer the writer on which the collection will be printed on.
//      */
//     void mkString(PrintWriter writer);
// 
//     /**
//      * Tranforms every element of the collection into another element.
//      *
//      * @param f the transformation function
//      * @param <R> the new type
//      * @return the transformed collection
//      */
//     <R> SpashCollection<R> map(SerializableFunction<T, R> f);
// 
//     /**
//      * Merges this collection to the one provided as input.
//      *
//      * @param coll the collection to merge
//      * @return the union of the two collections
//      */
//     SpashCollection<T> union(SpashCollection<T> coll);
// 
//     /**
//      * Filters a collection retaining only elements respecting the given condition.
//      *
//      * @param condition the condition that must evaluate to true for retained elements
//      * @return te resulting collection
//      */
//     SpashCollection<T> filter(SerializableFunction<T, Boolean> condition);
// 
//     /**
//      * Converts this collection to a Spark {@code JavaRDD}.
//      *
//      * @param sc the current Spark context
//      * @return a RDD corresponding to this collection
//      */
//     JavaRDD<T> toRDD(JavaSparkContext sc);
// 
//     /**
//      * Collects the whole collection into a {@code List}.
//      *
//      * @return the elements of the collection
//      */
//     List<T> collect();
// 
// }


import it.nerdammer.spash.shell.common.SpashCollection;
import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.Path;
import java.nio.file.attribute.PosixFileAttributes;
package it.nerdammer.spash.shell.api.fs;



/**
 * An abstraction for a file system.
 *
 * @author Nicola Ferraro
 */
public interface FileSystemFacade {

    /**
     * Returns the defaul filesystem.
     *
     * @return the filesystem
     */
    FileSystem getFileSystem();

    /**
     * Returns a collection of paths contained in the given path.
     *
     * @param path the base path
     * @return the sub paths
     */
// Path: core/src/main/java/it/nerdammer/spash/shell/common/SpashCollection.java
// public interface SpashCollection<T> extends Serializable {
// 
//     /**
//      * Prints the whole collection to the given writer.
//      *
//      * @param writer the writer on which the collection will be printed on.
//      */
//     void mkString(PrintWriter writer);
// 
//     /**
//      * Tranforms every element of the collection into another element.
//      *
//      * @param f the transformation function
//      * @param <R> the new type
//      * @return the transformed collection
//      */
//     <R> SpashCollection<R> map(SerializableFunction<T, R> f);
// 
//     /**
//      * Merges this collection to the one provided as input.
//      *
//      * @param coll the collection to merge
//      * @return the union of the two collections
//      */
//     SpashCollection<T> union(SpashCollection<T> coll);
// 
//     /**
//      * Filters a collection retaining only elements respecting the given condition.
//      *
//      * @param condition the condition that must evaluate to true for retained elements
//      * @return te resulting collection
//      */
//     SpashCollection<T> filter(SerializableFunction<T, Boolean> condition);
// 
//     /**
//      * Converts this collection to a Spark {@code JavaRDD}.
//      *
//      * @param sc the current Spark context
//      * @return a RDD corresponding to this collection
//      */
//     JavaRDD<T> toRDD(JavaSparkContext sc);
// 
//     /**
//      * Collects the whole collection into a {@code List}.
//      *
//      * @return the elements of the collection
//      */
//     List<T> collect();
// 
// }


// Path: core/src/main/java/it/nerdammer/spash/shell/api/fs/FileSystemFacade.java
import it.nerdammer.spash.shell.common.SpashCollection;
import java.net.URI;
import java.nio.file.FileSystem;
import java.nio.file.Path;
import java.nio.file.attribute.PosixFileAttributes;

package it.nerdammer.spash.shell.api.fs;



/**
 * An abstraction for a file system.
 *
 * @author Nicola Ferraro
 */
public interface FileSystemFacade {

    /**
     * Returns the defaul filesystem.
     *
     * @return the filesystem
     */
    FileSystem getFileSystem();

    /**
     * Returns a collection of paths contained in the given path.
     *
     * @param path the base path
     * @return the sub paths
     */
    SpashCollection<Path> ls(String path);