org.apache.solr.core
Class DirectoryFactory

java.lang.Object
  extended by org.apache.solr.core.DirectoryFactory
All Implemented Interfaces:
Closeable, NamedListInitializedPlugin
Direct Known Subclasses:
CachingDirectoryFactory

public abstract class DirectoryFactory
extends Object
implements NamedListInitializedPlugin, Closeable

Provides access to a Directory implementation. You must release every Directory that you get.


Nested Class Summary
static class DirectoryFactory.DirContext
           
 
Field Summary
static IOContext IOCONTEXT_NO_CACHE
           
 
Constructor Summary
DirectoryFactory()
           
 
Method Summary
abstract  void addCloseListener(Directory dir, CachingDirectoryFactory.CloseListener closeListener)
          Adds a close listener for a Directory.
abstract  void close()
          Close the this and all of the Directories it contains.
protected abstract  Directory create(String path, DirectoryFactory.DirContext dirContext)
          Creates a new Directory for a given path.
abstract  void doneWithDirectory(Directory directory)
          Indicates a Directory will no longer be used, and when it's ref count hits 0, it can be closed.
static boolean empty(Directory dir)
          Delete the files in the Directory
abstract  boolean exists(String path)
          Returns true if a Directory exists for a given path.
abstract  Directory get(String path, DirectoryFactory.DirContext dirContext, String rawLockType)
          Returns the Directory for a given path, using the specified rawLockType.
 String getDataHome(CoreDescriptor cd)
           
abstract  void incRef(Directory directory)
          Increment the number of references to the given Directory.
 boolean isAbsolute(String path)
           
abstract  boolean isPersistent()
           
 void move(Directory fromDir, Directory toDir, String fileName, IOContext ioContext)
          Override for more efficient moves.
 String normalize(String path)
          Normalize a given path.
abstract  void release(Directory directory)
          Releases the Directory so that it may be closed when it is no longer referenced.
abstract  void remove(Directory dir)
          Removes the Directory's persistent storage.
abstract  void remove(Directory dir, boolean afterCoreClose)
          Removes the Directory's persistent storage.
abstract  void remove(String path)
          This remove is special in that it may be called even after the factory has been closed.
abstract  void remove(String path, boolean afterCoreClose)
          This remove is special in that it may be called even after the factory has been closed.
 boolean searchersReserveCommitPoints()
          If your implementation can count on delete-on-last-close semantics or throws an exception when trying to remove a file in use, return false (eg NFS).
static long sizeOf(Directory directory, String file)
           
static long sizeOfDirectory(Directory directory)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.solr.util.plugin.NamedListInitializedPlugin
init
 

Field Detail

IOCONTEXT_NO_CACHE

public static final IOContext IOCONTEXT_NO_CACHE
Constructor Detail

DirectoryFactory

public DirectoryFactory()
Method Detail

doneWithDirectory

public abstract void doneWithDirectory(Directory directory)
                                throws IOException
Indicates a Directory will no longer be used, and when it's ref count hits 0, it can be closed. On shutdown all directories will be closed whether this has been called or not. This is simply to allow early cleanup.

Throws:
IOException - If there is a low-level I/O error.

addCloseListener

public abstract void addCloseListener(Directory dir,
                                      CachingDirectoryFactory.CloseListener closeListener)
Adds a close listener for a Directory.


close

public abstract void close()
                    throws IOException
Close the this and all of the Directories it contains.

Specified by:
close in interface Closeable
Throws:
IOException - If there is a low-level I/O error.

create

protected abstract Directory create(String path,
                                    DirectoryFactory.DirContext dirContext)
                             throws IOException
Creates a new Directory for a given path.

Throws:
IOException - If there is a low-level I/O error.

exists

public abstract boolean exists(String path)
                        throws IOException
Returns true if a Directory exists for a given path.

Throws:
IOException - If there is a low-level I/O error.

remove

public abstract void remove(Directory dir)
                     throws IOException
Removes the Directory's persistent storage. For example: A file system impl may remove the on disk directory.

Throws:
IOException - If there is a low-level I/O error.

remove

public abstract void remove(Directory dir,
                            boolean afterCoreClose)
                     throws IOException
Removes the Directory's persistent storage. For example: A file system impl may remove the on disk directory.

Throws:
IOException - If there is a low-level I/O error.

remove

public abstract void remove(String path,
                            boolean afterCoreClose)
                     throws IOException
This remove is special in that it may be called even after the factory has been closed. Remove only makes sense for persistent directory factories.

Parameters:
path - to remove
afterCoreClose - whether to wait until after the core is closed.
Throws:
IOException - If there is a low-level I/O error.

remove

public abstract void remove(String path)
                     throws IOException
This remove is special in that it may be called even after the factory has been closed. Remove only makes sense for persistent directory factories.

Parameters:
path - to remove
Throws:
IOException - If there is a low-level I/O error.

move

public void move(Directory fromDir,
                 Directory toDir,
                 String fileName,
                 IOContext ioContext)
          throws IOException
Override for more efficient moves. Intended for use with replication - use carefully - some Directory wrappers will cache files for example.

Throws:
IOException - If there is a low-level I/O error.

get

public abstract Directory get(String path,
                              DirectoryFactory.DirContext dirContext,
                              String rawLockType)
                       throws IOException
Returns the Directory for a given path, using the specified rawLockType. Will return the same Directory instance for the same path.

Throws:
IOException - If there is a low-level I/O error.

incRef

public abstract void incRef(Directory directory)
Increment the number of references to the given Directory. You must call release for every call to this method.


isPersistent

public abstract boolean isPersistent()
Returns:
true if data is kept after close.

release

public abstract void release(Directory directory)
                      throws IOException
Releases the Directory so that it may be closed when it is no longer referenced.

Throws:
IOException - If there is a low-level I/O error.

normalize

public String normalize(String path)
                 throws IOException
Normalize a given path.

Parameters:
path - to normalize
Returns:
normalized path
Throws:
IOException - on io error

isAbsolute

public boolean isAbsolute(String path)
Parameters:
path - the path to check
Returns:
true if absolute, as in not relative

sizeOfDirectory

public static long sizeOfDirectory(Directory directory)
                            throws IOException
Throws:
IOException

sizeOf

public static long sizeOf(Directory directory,
                          String file)
                   throws IOException
Throws:
IOException

empty

public static boolean empty(Directory dir)
Delete the files in the Directory


searchersReserveCommitPoints

public boolean searchersReserveCommitPoints()
If your implementation can count on delete-on-last-close semantics or throws an exception when trying to remove a file in use, return false (eg NFS). Otherwise, return true. Defaults to returning false.

Returns:
true if factory impl requires that Searcher's explicitly reserve commit points.

getDataHome

public String getDataHome(CoreDescriptor cd)
                   throws IOException
Throws:
IOException


Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.