Class AbstractMultiVersionReader<T>

java.lang.Object
org.apache.pulsar.client.impl.schema.reader.AbstractMultiVersionReader<T>
All Implemented Interfaces:
SchemaReader<T>
Direct Known Subclasses:
AbstractMultiVersionAvroBaseReader, MultiVersionGenericProtobufNativeReader

public abstract class AbstractMultiVersionReader<T> extends Object implements SchemaReader<T>
The multi version reader abstract class, implement it will handle the multi version schema.
  • Field Details

    • providerSchemaReader

      protected final SchemaReader<T> providerSchemaReader
    • schemaInfoProvider

      protected SchemaInfoProvider schemaInfoProvider
    • LOG

      protected static final org.slf4j.Logger LOG
  • Constructor Details

    • AbstractMultiVersionReader

      public AbstractMultiVersionReader(SchemaReader<T> providerSchemaReader)
  • Method Details

    • read

      public T read(byte[] bytes, int offset, int length)
      Specified by:
      read in interface SchemaReader<T>
    • read

      public T read(InputStream inputStream)
      Specified by:
      read in interface SchemaReader<T>
    • read

      public T read(InputStream inputStream, byte[] schemaVersion)
      Specified by:
      read in interface SchemaReader<T>
    • getSchemaReader

      public SchemaReader<T> getSchemaReader(byte[] schemaVersion) throws ExecutionException
      Throws:
      ExecutionException
    • read

      public T read(byte[] bytes, byte[] schemaVersion)
      Specified by:
      read in interface SchemaReader<T>
    • setSchemaInfoProvider

      public void setSchemaInfoProvider(SchemaInfoProvider schemaInfoProvider)
      Specified by:
      setSchemaInfoProvider in interface SchemaReader<T>
    • loadReader

      protected abstract SchemaReader<T> loadReader(BytesSchemaVersion schemaVersion)
      Load the schema reader for reading messages encoded by the given schema version.
      Parameters:
      schemaVersion - the provided schema version
      Returns:
      the schema reader for decoding messages encoded by the provided schema version.
    • getSchemaInfoByVersion

      protected SchemaInfo getSchemaInfoByVersion(byte[] schemaVersion)
      TODO: think about how to make this async.