Class FilterDirectory

java.lang.Object
org.apache.lucene.store.Directory
org.apache.lucene.store.FilterDirectory
All Implemented Interfaces:
Closeable, AutoCloseable
Direct Known Subclasses:
RateLimitedDirectoryWrapper, TrackingDirectoryWrapper

public class FilterDirectory extends Directory
Directory implementation that delegates calls to another directory. This class can be used to add limitations on top of an existing Directory implementation such as rate limiting or to add additional sanity checks for tests. However, if you plan to write your own Directory implementation, you should consider extending directly Directory or BaseDirectory rather than try to reuse functionality of existing Directorys by extending this class.
  • Method Details

    • getDelegate

      public final Directory getDelegate()
      Return the wrapped Directory.
    • listAll

      public String[] listAll() throws IOException
      Description copied from class: Directory
      Returns an array of strings, one for each file in the directory.
      Specified by:
      listAll in class Directory
      Throws:
      IOException - in case of other IO errors
    • fileExists

      public boolean fileExists(String name) throws IOException
      Description copied from class: Directory
      Returns true iff a file with the given name exists.
      Specified by:
      fileExists in class Directory
      Throws:
      IOException
    • deleteFile

      public void deleteFile(String name) throws IOException
      Description copied from class: Directory
      Removes an existing file in the directory.
      Specified by:
      deleteFile in class Directory
      Throws:
      IOException
    • fileLength

      public long fileLength(String name) throws IOException
      Description copied from class: Directory
      Returns the length of a file in the directory. This method follows the following contract:
      • Must throw FileNotFoundException if the file does not exist (not java.nio.file.NoSuchFileException of Java 7).
      • Returns a value ≥0 if the file exists, which specifies its length.
      Specified by:
      fileLength in class Directory
      Parameters:
      name - the name of the file for which to return the length.
      Throws:
      IOException - if there was an IO error while retrieving the file's length.
    • createOutput

      public IndexOutput createOutput(String name, IOContext context) throws IOException
      Description copied from class: Directory
      Creates a new, empty file in the directory with the given name. Returns a stream writing this file.
      Specified by:
      createOutput in class Directory
      Throws:
      IOException
    • sync

      public void sync(Collection<String> names) throws IOException
      Description copied from class: Directory
      Ensure that any writes to these files are moved to stable storage. Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.

      NOTE: Clients may call this method for same files over and over again, so some impls might optimize for that. For other impls the operation can be a noop, for various reasons.
      Specified by:
      sync in class Directory
      Throws:
      IOException
    • openInput

      public IndexInput openInput(String name, IOContext context) throws IOException
      Description copied from class: Directory
      Returns a stream reading an existing file, with the specified read buffer size. The particular Directory implementation may ignore the buffer size. Currently the only Directory implementations that respect this parameter are FSDirectory and CompoundFileDirectory.
    • Must throw FileNotFoundException if the file does not exist (not java.nio.file.NoSuchFileException of Java 7).
    • Specified by:
      openInput in class Directory
      Throws:
      IOException
    • makeLock

      public Lock makeLock(String name)
      Description copied from class: Directory
      Construct a Lock.
      Specified by:
      makeLock in class Directory
      Parameters:
      name - the name of the lock file
    • clearLock

      public void clearLock(String name) throws IOException
      Description copied from class: Directory
      Attempt to clear (forcefully unlock and remove) the specified lock. Only call this at a time when you are certain this lock is no longer in use.
      Specified by:
      clearLock in class Directory
      Parameters:
      name - name of the lock to be cleared.
      Throws:
      IOException
    • close

      public void close() throws IOException
      Description copied from class: Directory
      Closes the store.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Specified by:
      close in class Directory
      Throws:
      IOException
    • setLockFactory

      public void setLockFactory(LockFactory lockFactory) throws IOException
      Description copied from class: Directory
      Set the LockFactory that this Directory instance should use for its locking implementation. Each * instance of LockFactory should only be used for one directory (ie, do not share a single instance across multiple Directories).
      Specified by:
      setLockFactory in class Directory
      Parameters:
      lockFactory - instance of LockFactory.
      Throws:
      IOException
    • getLockID

      public String getLockID()
      Description copied from class: Directory
      Return a string identifier that uniquely differentiates this Directory instance from other Directory instances. This ID should be the same if two Directory instances (even in different JVMs and/or on different machines) are considered "the same index". This is how locking "scopes" to the right index.
      Overrides:
      getLockID in class Directory
    • getLockFactory

      public LockFactory getLockFactory()
      Description copied from class: Directory
      Get the LockFactory that this Directory instance is using for its locking implementation. Note that this may be null for Directory implementations that provide their own locking implementation.
      Specified by:
      getLockFactory in class Directory
    • toString

      public String toString()
      Overrides:
      toString in class Directory