Package org.apache.kafka.connect.data
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
Schemaobjects. 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 fromSchemaor 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();
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.kafka.connect.data.Schema
Schema.Type
-
-
Field Summary
-
Fields inherited from interface org.apache.kafka.connect.data.Schema
BOOLEAN_SCHEMA, BYTES_SCHEMA, FLOAT32_SCHEMA, FLOAT64_SCHEMA, INT16_SCHEMA, INT32_SCHEMA, INT64_SCHEMA, INT8_SCHEMA, OPTIONAL_BOOLEAN_SCHEMA, OPTIONAL_BYTES_SCHEMA, OPTIONAL_FLOAT32_SCHEMA, OPTIONAL_FLOAT64_SCHEMA, OPTIONAL_INT16_SCHEMA, OPTIONAL_INT32_SCHEMA, OPTIONAL_INT64_SCHEMA, OPTIONAL_INT8_SCHEMA, OPTIONAL_STRING_SCHEMA, STRING_SCHEMA
-
-
Constructor Summary
Constructors Constructor Description SchemaBuilder(Schema.Type type)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SchemaBuilderarray(Schema valueSchema)static SchemaBuilderbool()Schemabuild()Build the Schema using the current settingsstatic SchemaBuilderbytes()ObjectdefaultValue()SchemaBuilderdefaultValue(Object value)Set the default value for this schema.Stringdoc()SchemaBuilderdoc(String doc)Set the documentation for this schema.Fieldfield(String fieldName)Get a field for this Schema by name.SchemaBuilderfield(String fieldName, Schema fieldSchema)Add a field to this struct schema.List<Field>fields()Get the list of fields for this Schema.static SchemaBuilderfloat32()static SchemaBuilderfloat64()static SchemaBuilderint16()static SchemaBuilderint32()static SchemaBuilderint64()static SchemaBuilderint8()booleanisOptional()SchemakeySchema()Get the key schema for this map schema.static SchemaBuildermap(Schema keySchema, Schema valueSchema)Stringname()SchemaBuildername(String name)Set the name of this schema.SchemaBuilderoptional()Set this schema as optional.SchemaBuilderparameter(String propertyName, String propertyValue)Set a schema parameter.Map<String,String>parameters()Get a map of schema parameters.SchemaBuilderparameters(Map<String,String> props)Set schema parameters.SchemaBuilderrequired()Set this schema as required.Schemaschema()Return a concrete instance of theSchemaspecified by this builderstatic SchemaBuilderstring()static SchemaBuilderstruct()Schema.Typetype()static SchemaBuildertype(Schema.Type type)Create a SchemaBuilder for the specified type.SchemavalueSchema()Get the value schema for this map or array schema.Integerversion()Get the optional version of the schema.SchemaBuilderversion(Integer version)Set the version of this schema.
-
-
-
Constructor Detail
-
SchemaBuilder
public SchemaBuilder(Schema.Type type)
-
-
Method Detail
-
isOptional
public boolean isOptional()
- Specified by:
isOptionalin interfaceSchema- 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:
defaultValuein interfaceSchema- 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 aSchemaBuilderExceptionif it does not match.- Parameters:
value- the default value- Returns:
- the SchemaBuilder
-
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:SchemaGet the optional version of the schema. If a version is included, newer versions *must* be larger than older ones.
-
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()
-
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:SchemaGet a map of schema parameters.- Specified by:
parametersin interfaceSchema- 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 definepropertyValue- 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()
-
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 likestring()orstruct(), 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.INT8SchemaBuilder
-
int16
public static SchemaBuilder int16()
- Returns:
- a new
Schema.Type.INT16SchemaBuilder
-
int32
public static SchemaBuilder int32()
- Returns:
- a new
Schema.Type.INT32SchemaBuilder
-
int64
public static SchemaBuilder int64()
- Returns:
- a new
Schema.Type.INT64SchemaBuilder
-
float32
public static SchemaBuilder float32()
- Returns:
- a new
Schema.Type.FLOAT32SchemaBuilder
-
float64
public static SchemaBuilder float64()
- Returns:
- a new
Schema.Type.FLOAT64SchemaBuilder
-
bool
public static SchemaBuilder bool()
- Returns:
- a new
Schema.Type.BOOLEANSchemaBuilder
-
string
public static SchemaBuilder string()
- Returns:
- a new
Schema.Type.STRINGSchemaBuilder
-
bytes
public static SchemaBuilder bytes()
- Returns:
- a new
Schema.Type.BYTESSchemaBuilder
-
struct
public static SchemaBuilder struct()
- Returns:
- a new
Schema.Type.STRUCTSchemaBuilder
-
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 addfieldSchema- 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.
-
field
public Field field(String fieldName)
Description copied from interface:SchemaGet a field for this Schema by name. Throws a DataException if this schema is not a struct.
-
array
public static SchemaBuilder array(Schema valueSchema)
- Parameters:
valueSchema- the schema for elements of the array- Returns:
- a new
Schema.Type.ARRAYSchemaBuilder
-
map
public static SchemaBuilder map(Schema keySchema, Schema valueSchema)
- Parameters:
keySchema- the schema for keys in the mapvalueSchema- the schema for values in the map- Returns:
- a new
Schema.Type.MAPSchemaBuilder
-
keySchema
public Schema keySchema()
Description copied from interface:SchemaGet the key schema for this map schema. Throws a DataException if this schema is not a map.
-
valueSchema
public Schema valueSchema()
Description copied from interface:SchemaGet the value schema for this map or array schema. Throws a DataException if this schema is not a map or array.- Specified by:
valueSchemain interfaceSchema- Returns:
- the value schema
-
-