org.apache.lucene.index

## Class ExitableDirectoryReader

- java.lang.Object
- - org.apache.lucene.index.IndexReader
  - - org.apache.lucene.index.CompositeReader
    - - org.apache.lucene.index.BaseCompositeReader<LeafReader>
      - - org.apache.lucene.index.DirectoryReader
        - - org.apache.lucene.index.FilterDirectoryReader
          - - org.apache.lucene.index.ExitableDirectoryReader

All Implemented Interfaces:
  Closeable, AutoCloseable

    public class ExitableDirectoryReader
    extends FilterDirectoryReader

The `ExitableDirectoryReader` wraps a real index `DirectoryReader` and allows for a `QueryTimeout` implementation object to be checked periodically to see if the thread should exit or not. If `QueryTimeout.shouldExit()` returns true, an `ExitableDirectoryReader.ExitingReaderException` is thrown.

### Nested Class Summary

Nested Classes
`static class` `ExitableDirectoryReader.ExitableFilterAtomicReader` Wrapper class for another FilterAtomicReader.
`static class` `ExitableDirectoryReader.ExitableSubReaderWrapper` Wrapper class for a SubReaderWrapper that is used by the ExitableDirectoryReader.
`static class` `ExitableDirectoryReader.ExitableTerms` Wrapper class for another Terms implementation that is used by ExitableFields.
`static class` `ExitableDirectoryReader.ExitableTermsEnum` Wrapper class for TermsEnum that is used by ExitableTerms for implementing an exitable enumeration of terms.
`static class` `ExitableDirectoryReader.ExitingReaderException` Exception that is thrown to prematurely terminate a term enumeration.

### Nested classes/interfaces inherited from class org.apache.lucene.index.FilterDirectoryReader

`FilterDirectoryReader.SubReaderWrapper`

### Nested classes/interfaces inherited from class org.apache.lucene.index.IndexReader

`IndexReader.CacheHelper, IndexReader.CacheKey, IndexReader.ClosedListener`

### Field Summary

### Fields inherited from class org.apache.lucene.index.FilterDirectoryReader

`in`

### Fields inherited from class org.apache.lucene.index.DirectoryReader

`directory`

### Constructor Summary

Constructors
Constructor and Description
`ExitableDirectoryReader(DirectoryReader in, QueryTimeout queryTimeout)` Constructor

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`protected DirectoryReader` `doWrapDirectoryReader(DirectoryReader in)` Called by the doOpenIfChanged() methods to return a new wrapped DirectoryReader.
`IndexReader.CacheHelper` `getReaderCacheHelper()` Optional method: Return a `IndexReader.CacheHelper` that can be used to cache based on the content of this reader.
`String` `toString()`
`static DirectoryReader` `wrap(DirectoryReader in, QueryTimeout queryTimeout)` Wraps a provided DirectoryReader.

### Methods inherited from class org.apache.lucene.index.FilterDirectoryReader

`doClose, doOpenIfChanged, doOpenIfChanged, doOpenIfChanged, getDelegate, getIndexCommit, getVersion, isCurrent, unwrap`

### Methods inherited from class org.apache.lucene.index.DirectoryReader

`directory, indexExists, listCommits, open, open, open, open, open, open, openIfChanged, openIfChanged, openIfChanged, openIfChanged`

### Methods inherited from class org.apache.lucene.index.BaseCompositeReader

`docFreq, document, getDocCount, getSequentialSubReaders, getSumDocFreq, getSumTotalTermFreq, getTermVectors, maxDoc, numDocs, readerBase, readerIndex, totalTermFreq`

### Methods inherited from class org.apache.lucene.index.CompositeReader

`getContext`

### Methods inherited from class org.apache.lucene.index.IndexReader

`close, decRef, document, document, ensureOpen, equals, getRefCount, getTermVector, hasDeletions, hashCode, incRef, leaves, numDeletedDocs, registerParentReader, tryIncRef`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### ExitableDirectoryReader

    public ExitableDirectoryReader(DirectoryReader in,
                                   QueryTimeout queryTimeout)
                            throws IOException

Constructor

Parameters:
  `in` - DirectoryReader that this ExitableDirectoryReader wraps around to make it Exitable.
  `queryTimeout` - The object to periodically check if the query should time out.
Throws:
  `IOException`

### Method Detail

#### doWrapDirectoryReader

    protected DirectoryReader doWrapDirectoryReader(DirectoryReader in)
                                             throws IOException

Description copied from class: `FilterDirectoryReader`
Called by the doOpenIfChanged() methods to return a new wrapped DirectoryReader. Implementations should just return an instantiation of themselves, wrapping the passed in DirectoryReader.

Specified by:
  `doWrapDirectoryReader` in class `FilterDirectoryReader`
Parameters:
  `in` - the DirectoryReader to wrap
Returns:
  the wrapped DirectoryReader
Throws:
  `IOException`

#### wrap

    public static DirectoryReader wrap(DirectoryReader in,
                                       QueryTimeout queryTimeout)
                                throws IOException

Wraps a provided DirectoryReader. Note that for convenience, the returned reader can be used normally (e.g. passed to `DirectoryReader.openIfChanged(DirectoryReader)`) and so on.

Throws:
  `IOException`

#### getReaderCacheHelper

    public IndexReader.CacheHelper getReaderCacheHelper()

Description copied from class: `IndexReader`
Optional method: Return a `IndexReader.CacheHelper` that can be used to cache based on the content of this reader. Two readers that have different data or different sets of deleted documents will be considered different.

A return value of `null` indicates that this reader is not suited for caching, which is typically the case for short-lived wrappers that alter the content of the wrapped reader.

Specified by:
  `getReaderCacheHelper` in class `IndexReader`

#### toString

    public String toString()

Overrides:
  `toString` in class `CompositeReader`