org.apache.avro.generic

## Class GenericDatumReader<D>

- java.lang.Object
- - org.apache.avro.generic.GenericDatumReader<D>

- All Implemented Interfaces:
    DatumReader<D>
  Direct Known Subclasses:
    ProtobufDatumReader, SpecificDatumReader, ThriftDatumReader

      public class GenericDatumReader<D>
      extends Object
      implements DatumReader<D>

  `DatumReader` for generic Java objects.

- - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `GenericDatumReader()`
    `protected` | `GenericDatumReader(GenericData data)`
    `` | `GenericDatumReader(Schema schema)` Construct where the writer's and reader's schemas are the same.
    `` | `GenericDatumReader(Schema writer, Schema reader)` Construct given writer's and reader's schema.
    `` | `GenericDatumReader(Schema writer, Schema reader, GenericData data)`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addToArray(Object array, long pos, Object e)` Called by the default implementation of `readArray(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to add a value.
    `protected void` | `addToMap(Object map, Object key, Object value)` Called by the default implementation of `readMap(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to add a key/value pair.
    `protected Object` | `convert(Object datum, Schema schema, LogicalType type, Conversion<?> conversion)` Convert an underlying representation of a logical type (such as a ByteBuffer) to a higher level object (such as a BigDecimal).
    `protected Object` | `createBytes(byte[] value)` Called to create byte arrays from default values.
    `protected Object` | `createEnum(String symbol, Schema schema)` Called to create an enum value.
    `protected Object` | `createFixed(Object old, byte[] bytes, Schema schema)` Deprecated. As of Avro 1.6.0 this method has been moved to `GenericData.createFixed(Object, byte[], Schema)`
    `protected Object` | `createFixed(Object old, Schema schema)` Deprecated. As of Avro 1.6.0 this method has been moved to `GenericData.createFixed(Object, Schema)`
    `protected Object` | `createString(String value)` Called to create a string from a default value.
    `protected Class` | `findStringClass(Schema schema)` Determines the class to used to represent a string Schema.
    `GenericData` | `getData()` Return the `GenericData` implementation.
    `Schema` | `getExpected()` Get the reader's schema.
    `protected ResolvingDecoder` | `getResolver(Schema actual, Schema expected)` Gets a resolving decoder for use by this GenericDatumReader.
    `Schema` | `getSchema()` Return the writer's schema.
    `protected Object` | `newArray(Object old, int size, Schema schema)` Called to create new array instances.
    `protected Object` | `newInstanceFromString(Class c, String s)`
    `protected Object` | `newMap(Object old, int size)` Called to create new array instances.
    `protected Object` | `newRecord(Object old, Schema schema)` Deprecated. As of Avro 1.6.0 this method has been moved to `GenericData.newRecord(Object, Schema)`
    `protected Object` | `peekArray(Object array)` Called by the default implementation of `readArray(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to retrieve a value from a reused instance.
    `D` | `read(D reuse, Decoder in)` Read a datum.
    `protected Object` | `read(Object old, Schema expected, ResolvingDecoder in)` Called to read data.
    `protected Object` | `readArray(Object old, Schema expected, ResolvingDecoder in)` Called to read an array instance.
    `protected Object` | `readBytes(Object old, Decoder in)` Called to read byte arrays.
    `protected Object` | `readBytes(Object old, Schema s, Decoder in)` Called to read byte arrays.
    `protected Object` | `readEnum(Schema expected, Decoder in)` Called to read an enum value.
    `protected void` | `readField(Object record, Schema.Field field, Object oldDatum, ResolvingDecoder in, Object state)` Called to read a single field of a record.
    `protected Object` | `readFixed(Object old, Schema expected, Decoder in)` Called to read a fixed value.
    `protected Object` | `readInt(Object old, Schema expected, Decoder in)` Called to read integers.
    `protected Object` | `readMap(Object old, Schema expected, ResolvingDecoder in)` Called to read a map instance.
    `protected Object` | `readMapKey(Object old, Schema expected, Decoder in)` Called by the default implementation of `readMap(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to read a key value.
    `protected Object` | `readRecord(Object old, Schema expected, ResolvingDecoder in)` Called to read a record instance.
    `protected Object` | `readString(Object old, Decoder in)` Called to read strings.
    `protected Object` | `readString(Object old, Schema expected, Decoder in)` Called to read strings.
    `protected Object` | `readWithConversion(Object old, Schema expected, LogicalType logicalType, Conversion<?> conversion, ResolvingDecoder in)`
    `protected Object` | `readWithoutConversion(Object old, Schema expected, ResolvingDecoder in)`
    `void` | `setExpected(Schema reader)` Set the reader's schema.
    `void` | `setSchema(Schema writer)` Set the writer's schema.
    `static void` | `skip(Schema schema, Decoder in)` Skip an instance of a schema.

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

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

- - ### Constructor Detail

    - #### GenericDatumReader

          public GenericDatumReader()

    - #### GenericDatumReader

          public GenericDatumReader(Schema schema)

      Construct where the writer's and reader's schemas are the same.

    - #### GenericDatumReader

          public GenericDatumReader(Schema writer,
                                    Schema reader)

      Construct given writer's and reader's schema.

    - #### GenericDatumReader

          public GenericDatumReader(Schema writer,
                                    Schema reader,
                                    GenericData data)

    - #### GenericDatumReader

          protected GenericDatumReader(GenericData data)

  - ### Method Detail

    - #### getData

          public GenericData getData()

      Return the `GenericData` implementation.

    - #### getSchema

          public Schema getSchema()

      Return the writer's schema.

    - #### setSchema

          public void setSchema(Schema writer)

      Description copied from interface: `DatumReader`
      Set the writer's schema.
      Specified by:
        `setSchema` in interface `DatumReader<D>`

    - #### getExpected

          public Schema getExpected()

      Get the reader's schema.

    - #### setExpected

          public void setExpected(Schema reader)

      Set the reader's schema.

    - #### getResolver

          protected final ResolvingDecoder getResolver(Schema actual,
                                                       Schema expected)
                                                throws IOException

      Gets a resolving decoder for use by this GenericDatumReader. Unstable API. Currently uses a thread local cache to prevent constructing the resolvers too often, because that is very expensive.
      Throws:
        `IOException`

    - #### read

          public D read(D reuse,
                        Decoder in)
                 throws IOException

      Description copied from interface: `DatumReader`
      Read a datum. Traverse the schema, depth-first, reading all leaf values in the schema into a datum that is returned. If the provided datum is non-null it may be reused and returned.
      Specified by:
        `read` in interface `DatumReader<D>`
      Throws:
        `IOException`

    - #### read

          protected Object read(Object old,
                                Schema expected,
                                ResolvingDecoder in)
                         throws IOException

      Called to read data.
      Throws:
        `IOException`

    - #### readWithConversion

          protected Object readWithConversion(Object old,
                                              Schema expected,
                                              LogicalType logicalType,
                                              Conversion<?> conversion,
                                              ResolvingDecoder in)
                                       throws IOException

      Throws:
        `IOException`

    - #### readWithoutConversion

          protected Object readWithoutConversion(Object old,
                                                 Schema expected,
                                                 ResolvingDecoder in)
                                          throws IOException

      Throws:
        `IOException`

    - #### convert

          protected Object convert(Object datum,
                                   Schema schema,
                                   LogicalType type,
                                   Conversion<?> conversion)

      Convert an underlying representation of a logical type (such as a ByteBuffer) to a higher level object (such as a BigDecimal).
      Throws:
        `IllegalArgumentException` - if a null schema or logicalType is passed in while datum and conversion are not null. Please be noticed that the exception type has changed. With version 1.8.0 and earlier, in above circumstance, the exception thrown out depends on the implementation of conversion (most likely a NullPointerException). Now, an IllegalArgumentException will be thrown out instead.

    - #### readRecord

          protected Object readRecord(Object old,
                                      Schema expected,
                                      ResolvingDecoder in)
                               throws IOException

      Called to read a record instance. May be overridden for alternate record representations.
      Throws:
        `IOException`

    - #### readField

          protected void readField(Object record,
                                   Schema.Field field,
                                   Object oldDatum,
                                   ResolvingDecoder in,
                                   Object state)
                            throws IOException

      Called to read a single field of a record. May be overridden for more efficient or alternate implementations.
      Throws:
        `IOException`

    - #### readEnum

          protected Object readEnum(Schema expected,
                                    Decoder in)
                             throws IOException

      Called to read an enum value. May be overridden for alternate enum representations. By default, returns a GenericEnumSymbol.
      Throws:
        `IOException`

    - #### createEnum

          protected Object createEnum(String symbol,
                                      Schema schema)

      Called to create an enum value. May be overridden for alternate enum representations. By default, returns a GenericEnumSymbol.

    - #### readArray

          protected Object readArray(Object old,
                                     Schema expected,
                                     ResolvingDecoder in)
                              throws IOException

      Called to read an array instance. May be overridden for alternate array representations.
      Throws:
        `IOException`

    - #### peekArray

          protected Object peekArray(Object array)

      Called by the default implementation of `readArray(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to retrieve a value from a reused instance. The default implementation is for `GenericArray`.

    - #### addToArray

          protected void addToArray(Object array,
                                    long pos,
                                    Object e)

      Called by the default implementation of `readArray(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to add a value. The default implementation is for `Collection`.

    - #### readMap

          protected Object readMap(Object old,
                                   Schema expected,
                                   ResolvingDecoder in)
                            throws IOException

      Called to read a map instance. May be overridden for alternate map representations.
      Throws:
        `IOException`

    - #### readMapKey

          protected Object readMapKey(Object old,
                                      Schema expected,
                                      Decoder in)
                               throws IOException

      Called by the default implementation of `readMap(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to read a key value. The default implementation returns delegates to `readString(Object, org.apache.avro.io.Decoder)`.
      Throws:
        `IOException`

    - #### addToMap

          protected void addToMap(Object map,
                                  Object key,
                                  Object value)

      Called by the default implementation of `readMap(java.lang.Object, org.apache.avro.Schema, org.apache.avro.io.ResolvingDecoder)` to add a key/value pair. The default implementation is for `Map`.

    - #### readFixed

          protected Object readFixed(Object old,
                                     Schema expected,
                                     Decoder in)
                              throws IOException

      Called to read a fixed value. May be overridden for alternate fixed representations. By default, returns `GenericFixed`.
      Throws:
        `IOException`

    - #### createFixed

          @Deprecated
          protected Object createFixed(Object old,
                                                   Schema schema)

      Deprecated. As of Avro 1.6.0 this method has been moved to `GenericData.createFixed(Object, Schema)`
      Called to create an fixed value. May be overridden for alternate fixed representations. By default, returns `GenericFixed`.

    - #### createFixed

          @Deprecated
          protected Object createFixed(Object old,
                                                   byte[] bytes,
                                                   Schema schema)

      Deprecated. As of Avro 1.6.0 this method has been moved to `GenericData.createFixed(Object, byte[], Schema)`
      Called to create an fixed value. May be overridden for alternate fixed representations. By default, returns `GenericFixed`.

    - #### newRecord

          @Deprecated
          protected Object newRecord(Object old,
                                                 Schema schema)

      Deprecated. As of Avro 1.6.0 this method has been moved to `GenericData.newRecord(Object, Schema)`
      Called to create new record instances. Subclasses may override to use a different record implementation. The returned instance must conform to the schema provided. If the old object contains fields not present in the schema, they should either be removed from the old object, or it should create a new instance that conforms to the schema. By default, this returns a `GenericData.Record`.

    - #### newArray

          protected Object newArray(Object old,
                                    int size,
                                    Schema schema)

      Called to create new array instances. Subclasses may override to use a different array implementation. By default, this returns a `GenericData.Array`.

    - #### newMap

          protected Object newMap(Object old,
                                  int size)

      Called to create new array instances. Subclasses may override to use a different map implementation. By default, this returns a `HashMap`.

    - #### readString

          protected Object readString(Object old,
                                      Schema expected,
                                      Decoder in)
                               throws IOException

      Called to read strings. Subclasses may override to use a different string representation. By default, this calls `readString(Object,Decoder)`.
      Throws:
        `IOException`

    - #### readString

          protected Object readString(Object old,
                                      Decoder in)
                               throws IOException

      Called to read strings. Subclasses may override to use a different string representation. By default, this calls `Decoder.readString(Utf8)`.
      Throws:
        `IOException`

    - #### createString

          protected Object createString(String value)

      Called to create a string from a default value. Subclasses may override to use a different string representation. By default, this calls `Utf8(String)`.

    - #### findStringClass

          protected Class findStringClass(Schema schema)

      Determines the class to used to represent a string Schema. By default uses `GenericData.STRING_PROP` to determine whether `Utf8` or `String` is used. Subclasses may override for alternate representations.

    - #### newInstanceFromString

          protected Object newInstanceFromString(Class c,
                                                 String s)

    - #### readBytes

          protected Object readBytes(Object old,
                                     Schema s,
                                     Decoder in)
                              throws IOException

      Called to read byte arrays. Subclasses may override to use a different byte array representation. By default, this calls `Decoder.readBytes(ByteBuffer)`.
      Throws:
        `IOException`

    - #### readBytes

          protected Object readBytes(Object old,
                                     Decoder in)
                              throws IOException

      Called to read byte arrays. Subclasses may override to use a different byte array representation. By default, this calls `Decoder.readBytes(ByteBuffer)`.
      Throws:
        `IOException`

    - #### readInt

          protected Object readInt(Object old,
                                   Schema expected,
                                   Decoder in)
                            throws IOException

      Called to read integers. Subclasses may override to use a different integer representation. By default, this calls `Decoder.readInt()`.
      Throws:
        `IOException`

    - #### createBytes

          protected Object createBytes(byte[] value)

      Called to create byte arrays from default values. Subclasses may override to use a different byte array representation. By default, this calls `ByteBuffer.wrap(byte[])`.

    - #### skip

          public static void skip(Schema schema,
                                  Decoder in)
                           throws IOException

      Skip an instance of a schema.
      Throws:
        `IOException`

Copyright © 2009–2024 The Apache Software Foundation. All rights reserved.