Package org.apache.lucene.index

## Class StoredFieldVisitor

- java.lang.Object
- - org.apache.lucene.index.StoredFieldVisitor

- Direct Known Subclasses:
    `DocumentStoredFieldVisitor`, `StoredFieldsWriter.MergeVisitor`

      public abstract class StoredFieldVisitor
      extends Object

  Expert: provides a low-level means of accessing the stored field values in an index. See `StoredFields.document(int, StoredFieldVisitor)`.

  NOTE: a `StoredFieldVisitor` implementation should not try to load or visit other stored documents in the same reader because the implementation of stored fields for most codecs is not reentrant and you will see strange exceptions as a result.

  See `DocumentStoredFieldVisitor`, which is a `StoredFieldVisitor` that builds the `Document` containing all stored fields. This is used by `StoredFields.document(int)`.

  WARNING: This API is experimental and might change in incompatible ways in the next release.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `StoredFieldVisitor.Status` | Enumeration of possible return values for `needsField(org.apache.lucene.index.FieldInfo)`.

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `StoredFieldVisitor()` | Sole constructor.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `binaryField​(FieldInfo fieldInfo, byte[] value)` | Process a binary field.
    `void` | `binaryField​(FieldInfo fieldInfo, DataInput value, int length)` | Expert: Process a binary field directly from the `DataInput`.
    `void` | `doubleField​(FieldInfo fieldInfo, double value)` | Process a double numeric field.
    `void` | `floatField​(FieldInfo fieldInfo, float value)` | Process a float numeric field.
    `void` | `intField​(FieldInfo fieldInfo, int value)` | Process a int numeric field.
    `void` | `longField​(FieldInfo fieldInfo, long value)` | Process a long numeric field.
    `abstract StoredFieldVisitor.Status` | `needsField​(FieldInfo fieldInfo)` | Hook before processing a field.
    `void` | `stringField​(FieldInfo fieldInfo, String value)` | Process a string field.

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

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### StoredFieldVisitor

          protected StoredFieldVisitor()

      Sole constructor. (For invocation by subclass constructors, typically implicit.)

  - ### Method Detail

    - #### binaryField

          public void binaryField​(FieldInfo fieldInfo,
                                  DataInput value,
                                  int length)
                           throws IOException

      Expert: Process a binary field directly from the `DataInput`. Implementors of this method must read `length` bytes from the given `DataInput`. The default implementation reads all byes in a newly created byte array and calls `binaryField(FieldInfo, byte[])`.
      Parameters:
        `value` - newly allocated byte array with the binary contents.
      Throws:
        `IOException`

    - #### binaryField

          public void binaryField​(FieldInfo fieldInfo,
                                  byte[] value)
                           throws IOException

      Process a binary field.
      Parameters:
        `value` - newly allocated byte array with the binary contents.
      Throws:
        `IOException`

    - #### stringField

          public void stringField​(FieldInfo fieldInfo,
                                  String value)
                           throws IOException

      Process a string field.
      Throws:
        `IOException`

    - #### intField

          public void intField​(FieldInfo fieldInfo,
                               int value)
                        throws IOException

      Process a int numeric field.
      Throws:
        `IOException`

    - #### longField

          public void longField​(FieldInfo fieldInfo,
                                long value)
                         throws IOException

      Process a long numeric field.
      Throws:
        `IOException`

    - #### floatField

          public void floatField​(FieldInfo fieldInfo,
                                 float value)
                          throws IOException

      Process a float numeric field.
      Throws:
        `IOException`

    - #### doubleField

          public void doubleField​(FieldInfo fieldInfo,
                                  double value)
                           throws IOException

      Process a double numeric field.
      Throws:
        `IOException`

    - #### needsField

          public abstract StoredFieldVisitor.Status needsField​(FieldInfo fieldInfo)
                                                        throws IOException

      Hook before processing a field. Before a field is processed, this method is invoked so that subclasses can return a `StoredFieldVisitor.Status` representing whether they need that particular field or not, or to stop processing entirely.
      Throws:
        `IOException`