Class AbstractKafkaAvroDeserializer

java.lang.Object
io.confluent.kafka.serializers.AbstractKafkaSchemaSerDe
io.confluent.kafka.serializers.AbstractKafkaAvroDeserializer
All Implemented Interfaces:
Closeable, AutoCloseable, org.apache.kafka.common.ClusterResourceListener, org.apache.kafka.common.metrics.Monitorable
Direct Known Subclasses:
KafkaAvroDecoder, KafkaAvroDeserializer

public abstract class AbstractKafkaAvroDeserializer extends AbstractKafkaSchemaSerDe
  • Field Details

    • useSpecificAvroReader

      protected boolean useSpecificAvroReader
    • specificAvroReaderSchema

      protected org.apache.avro.Schema specificAvroReaderSchema
    • avroReflectionAllowNull

      protected boolean avroReflectionAllowNull
    • avroUseLogicalTypeConverters

      protected boolean avroUseLogicalTypeConverters
    • avroFailOnTrailingData

      protected boolean avroFailOnTrailingData
  • Constructor Details

    • AbstractKafkaAvroDeserializer

      public AbstractKafkaAvroDeserializer()
  • Method Details

    • configure

      protected void configure(KafkaAvroDeserializerConfig config)
    • configure

      protected void configure(KafkaAvroDeserializerConfig config, Class<?> type)
      Sets properties for this deserializer without overriding the schema registry client itself. Useful for testing, where a mock client is injected.
    • deserializerConfig

      protected KafkaAvroDeserializerConfig deserializerConfig(Map<String,?> props)
    • deserializerConfig

      protected KafkaAvroDeserializerConfig deserializerConfig(Properties props)
    • deserialize

      protected Object deserialize(byte[] payload) throws org.apache.kafka.common.errors.SerializationException
      Deserializes the payload without including schema information for primitive types, maps, and arrays. Just the resulting deserialized object is returned.

      This behavior is the norm for Decoders/Deserializers.

      Parameters:
      payload - serialized data
      Returns:
      the deserialized object
      Throws:
      org.apache.kafka.common.errors.SerializationException
    • deserialize

      protected Object deserialize(org.apache.kafka.common.header.Headers headers, byte[] payload) throws org.apache.kafka.common.errors.SerializationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
    • deserialize

      protected Object deserialize(byte[] payload, org.apache.avro.Schema readerSchema) throws org.apache.kafka.common.errors.SerializationException
      Just like single-parameter version but accepts an Avro schema to use for reading
      Parameters:
      payload - serialized data
      readerSchema - schema to use for Avro read (optional, enables Avro projection)
      Returns:
      the deserialized object
      Throws:
      org.apache.kafka.common.errors.SerializationException
    • deserialize

      protected Object deserialize(org.apache.kafka.common.header.Headers headers, byte[] payload, org.apache.avro.Schema readerSchema) throws org.apache.kafka.common.errors.SerializationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
    • deserialize

      protected Object deserialize(String topic, Boolean isKey, byte[] payload, org.apache.avro.Schema readerSchema) throws org.apache.kafka.common.errors.SerializationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
    • deserialize

      protected Object deserialize(String topic, Boolean isKey, org.apache.kafka.common.header.Headers headers, byte[] payload, org.apache.avro.Schema readerSchema) throws org.apache.kafka.common.errors.SerializationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
    • deserializeWithSchemaAndVersion

      protected GenericContainerWithVersion deserializeWithSchemaAndVersion(String topic, boolean isKey, byte[] payload) throws org.apache.kafka.common.errors.SerializationException, org.apache.kafka.common.errors.InvalidConfigurationException
      Deserializes the payload and includes schema information, with version information from the schema registry embedded in the schema.
      Parameters:
      payload - the serialized data
      Returns:
      a GenericContainer with the schema and data, either as a NonRecordContainer, GenericRecord, or SpecificRecord
      Throws:
      org.apache.kafka.common.errors.SerializationException
      org.apache.kafka.common.errors.InvalidConfigurationException
    • deserializeWithSchemaAndVersion

      protected GenericContainerWithVersion deserializeWithSchemaAndVersion(String topic, boolean isKey, org.apache.kafka.common.header.Headers headers, byte[] payload) throws org.apache.kafka.common.errors.SerializationException, org.apache.kafka.common.errors.InvalidConfigurationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
      org.apache.kafka.common.errors.InvalidConfigurationException
    • deserializeWithSchemaAndVersion

      protected GenericContainerWithVersion deserializeWithSchemaAndVersion(String topic, boolean isKey, org.apache.kafka.common.header.Headers headers, byte[] payload, org.apache.avro.Schema readerSchema) throws org.apache.kafka.common.errors.SerializationException, org.apache.kafka.common.errors.InvalidConfigurationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
      org.apache.kafka.common.errors.InvalidConfigurationException
    • deserializeWithSchemaAndVersion

      protected GenericContainerWithVersion deserializeWithSchemaAndVersion(String topic, boolean isKey, org.apache.kafka.common.header.Headers headers, byte[] payload, Function<ParsedSchema,ParsedSchema> writerToReaderSchemaFunc) throws org.apache.kafka.common.errors.SerializationException, org.apache.kafka.common.errors.InvalidConfigurationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
      org.apache.kafka.common.errors.InvalidConfigurationException
    • deserializeWithSchemaAndVersion

      protected GenericContainerWithVersion deserializeWithSchemaAndVersion(String topic, boolean isKey, org.apache.kafka.common.header.Headers headers, byte[] payload, Function<ParsedSchema,ParsedSchema> writerToReaderSchemaFunc, boolean includeRuleResults) throws org.apache.kafka.common.errors.SerializationException, org.apache.kafka.common.errors.InvalidConfigurationException
      Throws:
      org.apache.kafka.common.errors.SerializationException
      org.apache.kafka.common.errors.InvalidConfigurationException
    • getDatumReader

      protected org.apache.avro.io.DatumReader<?> getDatumReader(org.apache.avro.Schema writerSchema, org.apache.avro.Schema readerSchema) throws ExecutionException
      Throws:
      ExecutionException
    • getBinaryDecoder

      protected org.apache.avro.io.BinaryDecoder getBinaryDecoder(byte[] bytes, int start, int length, org.apache.avro.io.BinaryDecoder reuse)
      Returns a BinaryDecoder that uses the given bytes as its source of data.

      Subclasses may override this method to supply a reuse BinaryDecoder instance, for example, via a ThreadLocal, to eliminate per-record decoder allocation on high-throughput unmarshal paths.

      Parameters:
      bytes - serialized payload after AbstractKafkaAvroDeserializer.DeserializationContext processing.
      start - the offset into the bytes.
      length - the number of bytes to read.
      reuse - the BinaryDecoder to attempt to reuse. If null, a new instance is returned.
      Returns:
      a BinaryDecoder positioned at start