Class AvroData


  • public class AvroData
    extends Object
    Utilities for converting between our runtime data format and Avro, and (de)serializing that data.
    • Constructor Detail

      • AvroData

        public AvroData​(int cacheSize)
    • Method Detail

      • fromConnectData

        public Object fromConnectData​(org.apache.kafka.connect.data.Schema schema,
                                      Object value)
        Convert this object, in Connect data format, into an Avro object.
      • fromConnectSchema

        public org.apache.avro.Schema fromConnectSchema​(org.apache.kafka.connect.data.Schema schema)
      • fromConnectSchema

        public org.apache.avro.Schema fromConnectSchema​(org.apache.kafka.connect.data.Schema schema,
                                                        Map<org.apache.kafka.connect.data.Schema,​org.apache.avro.Schema> schemaMap)
      • fromConnectSchema

        public org.apache.avro.Schema fromConnectSchema​(org.apache.kafka.connect.data.Schema schema,
                                                        io.apicurio.registry.utils.converter.avro.AvroData.FromConnectContext fromConnectContext,
                                                        boolean ignoreOptional)
        SchemaMap is a map of already resolved internal schemas, this avoids type re-declaration if a type is reused, this actually blows up if you don't do this and have a type used in multiple places.

        Also it only holds reference the non-optional schemas as technically an optional is actually a union of null and the non-opitonal, which if used in multiple places some optional some non-optional will cause error as you redefine type.

        This is different to the global schema cache which is used to hold/cache fully resolved schemas used to avoid re-resolving when presented with the same source schema.

      • fromConnectSchemaWithCycle

        public org.apache.avro.Schema fromConnectSchemaWithCycle​(org.apache.kafka.connect.data.Schema schema,
                                                                 io.apicurio.registry.utils.converter.avro.AvroData.FromConnectContext fromConnectContext,
                                                                 boolean ignoreOptional)
      • toConnectData

        public org.apache.kafka.connect.data.SchemaAndValue toConnectData​(org.apache.avro.Schema avroSchema,
                                                                          Object value)
        Convert the given object, in Avro format, into a Connect data object.
        Parameters:
        avroSchema - the Avro schema
        value - the value to convert into a Connect data object
        Returns:
        the Connect schema and value
      • toConnectData

        public org.apache.kafka.connect.data.SchemaAndValue toConnectData​(org.apache.avro.Schema avroSchema,
                                                                          Object value,
                                                                          Integer version)
        Convert the given object, in Avro format, into a Connect data object.
        Parameters:
        avroSchema - the Avro schema
        value - the value to convert into a Connect data object
        version - the version to set on the Connect schema if the avroSchema does not have a property named "connect.version", may be null
        Returns:
        the Connect schema and value
      • getForceOptionalDefault

        protected boolean getForceOptionalDefault()
      • toConnectSchema

        public org.apache.kafka.connect.data.Schema toConnectSchema​(org.apache.avro.Schema schema)
      • nonOptional

        public static org.apache.kafka.connect.data.Schema nonOptional​(org.apache.kafka.connect.data.Schema schema)
      • fields

        public static List<org.apache.kafka.connect.data.Field> fields​(org.apache.kafka.connect.data.Schema schema)
      • keySchema

        public static org.apache.kafka.connect.data.Schema keySchema​(org.apache.kafka.connect.data.Schema schema)
      • valueSchema

        public static org.apache.kafka.connect.data.Schema valueSchema​(org.apache.kafka.connect.data.Schema schema)