Class SchemaBuilder

java.lang.Object
org.apache.kafka.connect.data.SchemaBuilder
All Implemented Interfaces:
Schema

public class SchemaBuilder
extends Object
implements Schema

SchemaBuilder provides a fluent API for constructing Schema objects. It allows you to set each of the properties for the schema and each call returns the SchemaBuilder so the calls can be chained. When nested types are required, use one of the predefined schemas from Schema or use a second SchemaBuilder inline.

Here is an example of building a struct schema:

     Schema dateSchema = SchemaBuilder.struct()
         .name("com.example.CalendarDate").version(2).doc("A calendar date including month, day, and year.")
         .field("month", Schema.STRING_SCHEMA)
         .field("day", Schema.INT8_SCHEMA)
         .field("year", Schema.INT16_SCHEMA)
         .build();
     

Here is an example of using a second SchemaBuilder to construct complex, nested types:

     Schema userListSchema = SchemaBuilder.array(
         SchemaBuilder.struct().name("com.example.User").field("username", Schema.STRING_SCHEMA).field("id", Schema.INT64_SCHEMA).build()
     ).build();
     

  • Constructor Details

    • SchemaBuilder

      public SchemaBuilder​(Schema.Type type)
  • Method Details

    • isOptional

      public boolean isOptional()
      Specified by:
      isOptional in interface Schema
      Returns:
      true if this field is optional, false otherwise
    • optional

      public SchemaBuilder optional()
      Set this schema as optional.
      Returns:
      the SchemaBuilder
    • required

      public SchemaBuilder required()
      Set this schema as required. This is the default, but this method can be used to make this choice explicit.
      Returns:
      the SchemaBuilder
    • defaultValue

      public Object defaultValue()
      Specified by:
      defaultValue in interface Schema
      Returns:
      the default value for this schema
    • defaultValue

      public SchemaBuilder defaultValue​(Object value)
      Set the default value for this schema. The value is validated against the schema type, throwing a SchemaBuilderException if it does not match.
      Parameters:
      value - the default value
      Returns:
      the SchemaBuilder
    • name

      public String name()
      Specified by:
      name in interface Schema
      Returns:
      the name of this schema
    • name

      public SchemaBuilder name​(String name)
      Set the name of this schema.
      Parameters:
      name - the schema name
      Returns:
      the SchemaBuilder
    • version

      public Integer version()
      Description copied from interface: Schema
      Get the optional version of the schema. If a version is included, newer versions *must* be larger than older ones.
      Specified by:
      version in interface Schema
      Returns:
      the version of this schema
    • version

      public SchemaBuilder version​(Integer version)
      Set the version of this schema. Schema versions are integers which, if provided, must indicate which schema is newer and which is older by their ordering.
      Parameters:
      version - the schema version
      Returns:
      the SchemaBuilder
    • doc

      public String doc()
      Specified by:
      doc in interface Schema
      Returns:
      the documentation for this schema
    • doc

      public SchemaBuilder doc​(String doc)
      Set the documentation for this schema.
      Parameters:
      doc - the documentation
      Returns:
      the SchemaBuilder
    • parameters

      public Map<String,​String> parameters()
      Description copied from interface: Schema
      Get a map of schema parameters.
      Specified by:
      parameters in interface Schema
      Returns:
      Map containing parameters for this schema, or null if there are no parameters
    • parameter

      public SchemaBuilder parameter​(String propertyName, String propertyValue)
      Set a schema parameter.
      Parameters:
      propertyName - name of the schema property to define
      propertyValue - value of the schema property to define, as a String
      Returns:
      the SchemaBuilder
    • parameters

      public SchemaBuilder parameters​(Map<String,​String> props)
      Set schema parameters. This operation is additive; it does not remove existing parameters that do not appear in the set of properties pass to this method.
      Parameters:
      props - Map of properties to set
      Returns:
      the SchemaBuilder
    • type

      public Schema.Type type()
      Specified by:
      type in interface Schema
      Returns:
      the type of this schema
    • type

      public static SchemaBuilder type​(Schema.Type type)
      Create a SchemaBuilder for the specified type. Usually it will be simpler to use one of the variants like string() or struct(), but this form can be useful when generating schemas dynamically.
      Parameters:
      type - the schema type
      Returns:
      a new SchemaBuilder
    • int8

      public static SchemaBuilder int8()
      Returns:
      a new Schema.Type.INT8 SchemaBuilder
    • int16

      public static SchemaBuilder int16()
      Returns:
      a new Schema.Type.INT16 SchemaBuilder
    • int32

      public static SchemaBuilder int32()
      Returns:
      a new Schema.Type.INT32 SchemaBuilder
    • int64

      public static SchemaBuilder int64()
      Returns:
      a new Schema.Type.INT64 SchemaBuilder
    • float32

      public static SchemaBuilder float32()
      Returns:
      a new Schema.Type.FLOAT32 SchemaBuilder
    • float64

      public static SchemaBuilder float64()
      Returns:
      a new Schema.Type.FLOAT64 SchemaBuilder
    • bool

      public static SchemaBuilder bool()
      Returns:
      a new Schema.Type.BOOLEAN SchemaBuilder
    • string

      public static SchemaBuilder string()
      Returns:
      a new Schema.Type.STRING SchemaBuilder
    • bytes

      public static SchemaBuilder bytes()
      Returns:
      a new Schema.Type.BYTES SchemaBuilder
    • struct

      public static SchemaBuilder struct()
      Returns:
      a new Schema.Type.STRUCT SchemaBuilder
    • field

      public SchemaBuilder field​(String fieldName, Schema fieldSchema)
      Add a field to this struct schema. Throws a SchemaBuilderException if this is not a struct schema.
      Parameters:
      fieldName - the name of the field to add
      fieldSchema - the Schema for the field's value
      Returns:
      the SchemaBuilder
    • fields

      public List<Field> fields()
      Get the list of fields for this Schema. Throws a DataException if this schema is not a struct.
      Specified by:
      fields in interface Schema
      Returns:
      the list of fields for this Schema
    • field

      public Field field​(String fieldName)
      Description copied from interface: Schema
      Get a field for this Schema by name. Throws a DataException if this schema is not a struct.
      Specified by:
      field in interface Schema
      Parameters:
      fieldName - the name of the field to look up
      Returns:
      the Field object for the specified field, or null if there is no field with the given name
    • array

      public static SchemaBuilder array​(Schema valueSchema)
      Parameters:
      valueSchema - the schema for elements of the array
      Returns:
      a new Schema.Type.ARRAY SchemaBuilder
    • map

      public static SchemaBuilder map​(Schema keySchema, Schema valueSchema)
      Parameters:
      keySchema - the schema for keys in the map
      valueSchema - the schema for values in the map
      Returns:
      a new Schema.Type.MAP SchemaBuilder
    • keySchema

      public Schema keySchema()
      Description copied from interface: Schema
      Get the key schema for this map schema. Throws a DataException if this schema is not a map.
      Specified by:
      keySchema in interface Schema
      Returns:
      the key schema
    • valueSchema

      public Schema valueSchema()
      Description copied from interface: Schema
      Get the value schema for this map or array schema. Throws a DataException if this schema is not a map or array.
      Specified by:
      valueSchema in interface Schema
      Returns:
      the value schema
    • build

      public Schema build()
      Build the Schema using the current settings
      Returns:
      the Schema
    • schema

      public Schema schema()
      Return a concrete instance of the Schema specified by this builder
      Specified by:
      schema in interface Schema
      Returns:
      the Schema