Class

com.swoval.files.node

FileTreeRepository

Related Doc: package node

Permalink

class FileTreeRepository[T <: AnyRef] extends AnyRef

Provides an in memory cache of portions of the file system. Directories are added to the cache using the FileTreeRepository.register method. Once a Path is added the cache, its contents may be retrieved using the FileTreeRepository.list method. The cache stores the path information in FileTreeDataViews.Entry instances.

A default implementation is provided by FileTreeRepositories.get. The user may cache arbitrary information in the cache by customizing the Converter that is passed into the factory FileTreeRepositories.get.

The cache allows the user to register a regular file, directory or symbolic link. After registration, the cache should monitor the path (and in the case of symbolic links, the target of the link) for updates. Whenever an update is detected, the cache updates its internal representation of the file system. When that is complete, it will notify all of the registered com.swoval.files.Observers of the change. In general, the update that is sent in the callback will be visible if the user lists the relevant path. It is however, possible that if the file is being updated rapidly that the internal state of the cache may change in between the callback being invoked and the user listing the path. Once the file system activity settles down, the cache should always end up in a consistent state where it mirrors the state of the file system.

The semantics of the list method are very similar to the linux ls tool. Listing a directory returns all of the subdirectories and files contained in the directory and the empty list if the directory is empty. Listing a file, however, will return the entry for the file if it exists and the empty list otherwise.

T

the type of data stored in the FileTreeDataViews.Entry instances for the cache

Annotations
@JSExportTopLevel( "FileTreeRepository" ) @JSExportAll()
Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FileTreeRepository
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new FileTreeRepository(underlying: files.FileTreeRepository[T])

    Permalink

    Attributes
    protected[com.swoval.files.node]

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def addCacheObserver(cacheObserver: CacheObserver[T]): Int

    Permalink

    Add an observer of cache events.

    Add an observer of cache events.

    returns

    the handle to the observer.

  5. def addObserver(observer: Observer[Entry[T]]): Int

    Permalink

    Add an observer of events.

    Add an observer of events.

    observer

    the Observer to add

    returns

    the handle to the observer.

  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. def close(): Unit

    Permalink

    Shutdown the repository, freeing any native resources.

  9. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  10. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  11. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  14. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  15. def list(path: String, maxDepth: UndefOr[Int], filter: UndefOr[Function1[TypedPath, Boolean]]): Array[TypedPath]

    Permalink

    List all of the files for the path that are accepted by the filter.

    List all of the files for the path that are accepted by the filter.

    path

    the path to list. If this is a file, returns a list containing the Entry for the file or an empty list if the file is not monitored by the path.

    maxDepth

    the maximum depth of subdirectories to return. Default value: Integer.MAX_VALUE.

    filter

    include only paths accepted by this. By default it accepts all paths.

    returns

    a List of TypedPath instances accepted by the filter.

  16. def listEntries(path: String, maxDepth: UndefOr[Int], filter: UndefOr[Function1[Entry[T], Boolean]]): Array[Entry[T]]

    Permalink

    List all of the files for the path that are accepted by the filter.

    List all of the files for the path that are accepted by the filter.

    path

    the path to list. If this is a file, returns a list containing the Entry for the file or an empty list if the file is not monitored by the path.

    maxDepth

    the maximum depth of subdirectories to return. Default value: Integer.MAX_VALUE.

    filter

    include only paths accepted by this. By default it accepts all paths.

    returns

    a List of Entry instances accepted by the filter. The list will be empty if the path is not a subdirectory of this CachedDirectory or if it is a subdirectory, but the CachedDirectory was created without the recursive flag.

  17. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  18. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  19. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  20. def register(path: String, maxDepth: UndefOr[Int]): Either[IOException, Boolean]

    Permalink

    Register a path with the cache.

    Register a path with the cache. A successful call to this method will both start monitoring of the path add will fill the cache for this path.

    path

    the directory to watch for file events and to add to the cache

    maxDepth

    the maximum maxDepth of subdirectories to watch. Default value: Integer.MAX_VALUE.

    returns

    an com.swoval.functional.Either that will return a right value when no exception is thrown. The right value will be true if the path has not been previously registered. The com.swoval.functional.Either will be a left if any IOException is thrown attempting to register the path.

  21. def removeObserver(handle: Int): Unit

    Permalink

    Remove an observer that was previously added via FileTreeRepository.addObserver or FileTreeRepository.addCacheObserver.

    Remove an observer that was previously added via FileTreeRepository.addObserver or FileTreeRepository.addCacheObserver.

    handle

    the handle returned by FileTreeRepository.addObserver or FileTreeRepository.addCacheObserver corresponding to the observer to remove.

  22. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  23. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  24. def unregister(path: String): Unit

    Permalink

    Unregister a path from the cache.

    Unregister a path from the cache. This removes the path from monitoring and from the cache so long as the path isn't covered by another registered path. For example, if the path /foo was previously registered, after removal, no changes to /foo or files in /foo should be detected by the cache. Moreover, calling FileTreeRepository.list for /foo should return an empty list. If, however, we register both /foo recursively and /foo/bar (recursively or not), after unregistering /foo/bar, changes to /foo/bar should continue to be detected and /foo/bar should be included in the list returned by FileTreeRepository.list.

    path

    the path to unregister

  25. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  27. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped