Package io.debezium.config
Class Field
- java.lang.Object
-
- io.debezium.config.Field
-
@Immutable public final class Field extends Object
An immutable definition of a field that make appear within aConfigurationinstance.- Author:
- Randall Hauch
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classField.EnumRecommender<T extends Enum<T>>static classField.InvisibleRecommenderAField.Recommenderthat will look at several fields that are deemed to be exclusive, such that when the first of them has a value the others are made invisible.static classField.OneOfRecommenderAField.Recommenderthat will look at several fields that are deemed to be exclusive, such that when the first of them has a value the others are made invisible.static classField.RangeValidatorValidation logic for numeric rangesstatic interfaceField.RecommenderA component that is able to provide recommended values for a field given a configuration.static classField.SetA set of fields.static interfaceField.ValidationOutputA functional interface that accepts validation results.static interfaceField.ValidatorA functional interface that can be used to validate field values.
-
Field Summary
Fields Modifier and Type Field Description private Supplier<Object>defaultValueGeneratorprivate List<String>dependentsprivate Stringdescprivate StringdisplayNameprivate org.apache.kafka.common.config.ConfigDef.Importanceimportancestatic StringINTERNAL_PREFIXprivate Stringnameprivate Field.Recommenderrecommenderprivate org.apache.kafka.common.config.ConfigDef.Typetypeprivate Field.Validatorvalidatorprivate org.apache.kafka.common.config.ConfigDef.Widthwidth
-
Constructor Summary
Constructors Modifier Constructor Description protectedField(String name, String displayName, org.apache.kafka.common.config.ConfigDef.Type type, org.apache.kafka.common.config.ConfigDef.Width width, String description, org.apache.kafka.common.config.ConfigDef.Importance importance, Supplier<Object> defaultValueGenerator, Field.Validator validator)protectedField(String name, String displayName, org.apache.kafka.common.config.ConfigDef.Type type, org.apache.kafka.common.config.ConfigDef.Width width, String description, org.apache.kafka.common.config.ConfigDef.Importance importance, List<String> dependents, Supplier<Object> defaultValueGenerator, Field.Validator validator, Field.Recommender recommender)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static Fieldcreate(String name)Create an immutableFieldinstance with the given property name.static Fieldcreate(String name, String displayName)Create an immutableFieldinstance with the given property name.static Fieldcreate(String name, String displayName, String description)Create an immutableFieldinstance with the given property name and description.static Fieldcreate(String name, String displayName, String description, boolean defaultValue)Create an immutableFieldinstance with the given property name, description, and default value.static Fieldcreate(String name, String displayName, String description, int defaultValue)Create an immutableFieldinstance with the given property name, description, and default value.static Fieldcreate(String name, String displayName, String description, long defaultValue)Create an immutableFieldinstance with the given property name, description, and default value.static Fieldcreate(String name, String displayName, String description, String defaultValue)Create an immutableFieldinstance with the given property name, description, and default value.static Fieldcreate(String name, String displayName, String description, BooleanSupplier defaultValueGenerator)Create an immutableFieldinstance with the given property name, description, and default value.static Fieldcreate(String name, String displayName, String description, IntSupplier defaultValueGenerator)Create an immutableFieldinstance with the given property name, description, and default value.static Fieldcreate(String name, String displayName, String description, LongSupplier defaultValueGenerator)Create an immutableFieldinstance with the given property name, description, and default value.static Fieldcreate(String name, String displayName, String description, Supplier<Object> defaultValueGenerator)Create an immutableFieldinstance with the given property name, description, and default value.static FieldcreateInternal(String name)Create an immutable internalFieldinstance with the given property name.ObjectdefaultValue()Get the default value of the field.StringdefaultValueAsString()Get the string representation of the default value of the field.List<String>dependents()Get the names of the fields that are or may be dependent upon this field.Stringdescription()Get the description of the field.StringdisplayName()Get the display name of the field.booleanequals(Object obj)static org.apache.kafka.common.config.ConfigDefgroup(org.apache.kafka.common.config.ConfigDef configDef, String groupName, Field... fields)Add this field to the given configuration definition.inthashCode()org.apache.kafka.common.config.ConfigDef.Importanceimportance()Get the importance of this field.static intisBoolean(Configuration config, Field field, Field.ValidationOutput problems)static intisClassName(Configuration config, Field field, Field.ValidationOutput problems)static intisDouble(Configuration config, Field field, Field.ValidationOutput problems)static intisInteger(Configuration config, Field field, Field.ValidationOutput problems)static intisListOfRegex(Configuration config, Field field, Field.ValidationOutput problems)static intisLong(Configuration config, Field field, Field.ValidationOutput problems)static intisNonNegativeInteger(Configuration config, Field field, Field.ValidationOutput problems)static intisNonNegativeLong(Configuration config, Field field, Field.ValidationOutput problems)static intisOptional(Configuration config, Field field, Field.ValidationOutput problems)static intisPositiveInteger(Configuration config, Field field, Field.ValidationOutput problems)static intisPositiveLong(Configuration config, Field field, Field.ValidationOutput problems)static intisRegex(Configuration config, Field field, Field.ValidationOutput problems)static intisRequired(Configuration config, Field field, Field.ValidationOutput problems)static intisShort(Configuration config, Field field, Field.ValidationOutput problems)static intisZoneOffset(Configuration config, Field field, Field.ValidationOutput problems)Stringname()Get the name of the field.Field.Recommenderrecommender()Get theField.Recommenderfor this field.static Field.SetsetOf(Field... fields)Create a set of fields.static Field.SetsetOf(Iterable<Field> fields)Create a set of fields.StringtoString()org.apache.kafka.common.config.ConfigDef.Typetype()Get the type of this field.booleanvalidate(Configuration config, Field.ValidationOutput problems)Validate the supplied value for this field, and report any problems to the designated consumer.protected voidvalidate(Configuration config, Function<String,Field> fieldSupplier, Map<String,org.apache.kafka.common.config.ConfigValue> results)Validate this field in the supplied configuration, updating theConfigValuefor the field with the results.Field.Validatorvalidator()Get the validator for this field.static Field.ValidatorvalidatorForType(org.apache.kafka.common.config.ConfigDef.Type type)org.apache.kafka.common.config.ConfigDef.Widthwidth()Get the width of this field.FieldwithDefault(boolean defaultValue)Create and return a new Field instance that is a copy of this field but with the given default value.FieldwithDefault(int defaultValue)Create and return a new Field instance that is a copy of this field but with the given default value.FieldwithDefault(long defaultValue)Create and return a new Field instance that is a copy of this field but with the given default value.FieldwithDefault(String defaultValue)Create and return a new Field instance that is a copy of this field but with the given default value.FieldwithDefault(BooleanSupplier defaultValueGenerator)Create and return a new Field instance that is a copy of this field but with the given default value.FieldwithDefault(IntSupplier defaultValueGenerator)Create and return a new Field instance that is a copy of this field but with the given default value.FieldwithDefault(LongSupplier defaultValueGenerator)Create and return a new Field instance that is a copy of this field but with the given default value.FieldwithDependents(String... dependents)Create and return a new Field instance that is a copy of this field but with the given display name.FieldwithDescription(String description)Create and return a new Field instance that is a copy of this field but with the given description.FieldwithDisplayName(String displayName)Create and return a new Field instance that is a copy of this field but with the given display name.<T extends Enum<T>>
FieldwithEnum(Class<T> enumType)Create and return a new Field instance that is a copy of this field but has atypeofSchema.Type.STRING, arecommenderthat returns a list ofEnum namesas valid values, and a validator that verifies values are valid enumeration names.<T extends Enum<T>>
FieldwithEnum(Class<T> enumType, T defaultOption)Create and return a new Field instance that is a copy of this field but has atypeofSchema.Type.STRING, arecommenderthat returns a list ofEnum namesas valid values, and a validator that verifies values are valid enumeration names.FieldwithImportance(org.apache.kafka.common.config.ConfigDef.Importance importance)Create and return a new Field instance that is a copy of this field but with the given importance.FieldwithInvisibleRecommender()FieldwithNoValidation()Create and return a new Field instance that is a copy of this field but that uses no validation.FieldwithRecommender(Field.Recommender recommender)Create and return a new Field instance that is a copy of this field but with the given recommender.FieldwithType(org.apache.kafka.common.config.ConfigDef.Type type)Create and return a new Field instance that is a copy of this field but with the given type.FieldwithValidation(Field.Validator... validators)Create and return a new Field instance that is a copy of this field but that in addition toexisting validationthe supplied validation function(s) are also used.FieldwithWidth(org.apache.kafka.common.config.ConfigDef.Width width)Create and return a new Field instance that is a copy of this field but with the given width.
-
-
-
Field Detail
-
INTERNAL_PREFIX
public static final String INTERNAL_PREFIX
- See Also:
- Constant Field Values
-
name
private final String name
-
displayName
private final String displayName
-
desc
private final String desc
-
validator
private final Field.Validator validator
-
width
private final org.apache.kafka.common.config.ConfigDef.Width width
-
type
private final org.apache.kafka.common.config.ConfigDef.Type type
-
importance
private final org.apache.kafka.common.config.ConfigDef.Importance importance
-
recommender
private final Field.Recommender recommender
-
-
Constructor Detail
-
Field
protected Field(String name, String displayName, org.apache.kafka.common.config.ConfigDef.Type type, org.apache.kafka.common.config.ConfigDef.Width width, String description, org.apache.kafka.common.config.ConfigDef.Importance importance, Supplier<Object> defaultValueGenerator, Field.Validator validator)
-
Field
protected Field(String name, String displayName, org.apache.kafka.common.config.ConfigDef.Type type, org.apache.kafka.common.config.ConfigDef.Width width, String description, org.apache.kafka.common.config.ConfigDef.Importance importance, List<String> dependents, Supplier<Object> defaultValueGenerator, Field.Validator validator, Field.Recommender recommender)
-
-
Method Detail
-
setOf
public static Field.Set setOf(Field... fields)
Create a set of fields.- Parameters:
fields- the fields to include- Returns:
- the field set; never null
-
setOf
public static Field.Set setOf(Iterable<Field> fields)
Create a set of fields.- Parameters:
fields- the fields to include- Returns:
- the field set; never null
-
create
public static Field create(String name)
Create an immutableFieldinstance with the given property name.- Parameters:
name- the name of the field; may not be null- Returns:
- the field; never null
-
createInternal
public static Field createInternal(String name)
Create an immutable internalFieldinstance with the given property name. The name will be prefixed withinternal.prefix.- Parameters:
name- the name of the field; may not be null- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName)
Create an immutableFieldinstance with the given property name.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be null- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description)
Create an immutableFieldinstance with the given property name and description.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the description- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, String defaultValue)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValue- the default value for the field- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, int defaultValue)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValue- the default value for the field- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, long defaultValue)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValue- the default value for the field- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, boolean defaultValue)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValue- the default value for the field- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, Supplier<Object> defaultValueGenerator)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValueGenerator- the generator for the default value for the field- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, BooleanSupplier defaultValueGenerator)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValueGenerator- the generator for the default value for the field- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, IntSupplier defaultValueGenerator)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValueGenerator- the generator for the default value for the field- Returns:
- the field; never null
-
create
public static Field create(String name, String displayName, String description, LongSupplier defaultValueGenerator)
Create an immutableFieldinstance with the given property name, description, and default value.- Parameters:
name- the name of the field; may not be nulldisplayName- the display name of the field; may not be nulldescription- the descriptiondefaultValueGenerator- the generator for the default value for the field- Returns:
- the field; never null
-
group
public static org.apache.kafka.common.config.ConfigDef group(org.apache.kafka.common.config.ConfigDef configDef, String groupName, Field... fields)Add this field to the given configuration definition.- Parameters:
configDef- the definition of the configuration; may be null if none of the fields are to be addedgroupName- the name of the group; may be nullfields- the fields to be added as a group to the definition of the configuration- Returns:
- the updated configuration; never null
-
name
public String name()
Get the name of the field.- Returns:
- the name; never null
-
defaultValue
public Object defaultValue()
Get the default value of the field.- Returns:
- the default value, or
nullif there is no default value
-
defaultValueAsString
public String defaultValueAsString()
Get the string representation of the default value of the field.- Returns:
- the default value, or
nullif there is no default value
-
description
public String description()
Get the description of the field.- Returns:
- the description; never null
-
displayName
public String displayName()
Get the display name of the field.- Returns:
- the display name; never null
-
width
public org.apache.kafka.common.config.ConfigDef.Width width()
Get the width of this field.- Returns:
- the width; never null
-
type
public org.apache.kafka.common.config.ConfigDef.Type type()
Get the type of this field.- Returns:
- the type; never null
-
importance
public org.apache.kafka.common.config.ConfigDef.Importance importance()
Get the importance of this field.- Returns:
- the importance; never null
-
dependents
public List<String> dependents()
Get the names of the fields that are or may be dependent upon this field.- Returns:
- the list of dependents; never null but possibly empty
-
validator
public Field.Validator validator()
Get the validator for this field.- Returns:
- the validator; may be null if there is no validator
-
recommender
public Field.Recommender recommender()
Get theField.Recommenderfor this field.- Returns:
- the recommender; may be null if there is no recommender
-
validate
public boolean validate(Configuration config, Field.ValidationOutput problems)
Validate the supplied value for this field, and report any problems to the designated consumer.- Parameters:
config- the field values keyed by their name; may not be nullproblems- the consumer to be called with each problem; never null- Returns:
trueif the value is considered valid, orfalseif it is not valid
-
validate
protected void validate(Configuration config, Function<String,Field> fieldSupplier, Map<String,org.apache.kafka.common.config.ConfigValue> results)
Validate this field in the supplied configuration, updating theConfigValuefor the field with the results.- Parameters:
config- the configuration to be validated; may not be nullfieldSupplier- the supplier for dependent fields by name; may not be nullresults- the set of configuration results keyed by field name; may not be null
-
withDescription
public Field withDescription(String description)
Create and return a new Field instance that is a copy of this field but with the given description.- Parameters:
description- the new description for the new field- Returns:
- the new field; never null
-
withDisplayName
public Field withDisplayName(String displayName)
Create and return a new Field instance that is a copy of this field but with the given display name.- Parameters:
displayName- the new display name for the field- Returns:
- the new field; never null
-
withWidth
public Field withWidth(org.apache.kafka.common.config.ConfigDef.Width width)
Create and return a new Field instance that is a copy of this field but with the given width.- Parameters:
width- the new width for the field- Returns:
- the new field; never null
-
withType
public Field withType(org.apache.kafka.common.config.ConfigDef.Type type)
Create and return a new Field instance that is a copy of this field but with the given type.- Parameters:
type- the new type for the field- Returns:
- the new field; never null
-
withEnum
public <T extends Enum<T>> Field withEnum(Class<T> enumType)
Create and return a new Field instance that is a copy of this field but has atypeofSchema.Type.STRING, arecommenderthat returns a list ofEnum namesas valid values, and a validator that verifies values are valid enumeration names.- Parameters:
enumType- the enumeration type for the field- Returns:
- the new field; never null
-
withEnum
public <T extends Enum<T>> Field withEnum(Class<T> enumType, T defaultOption)
Create and return a new Field instance that is a copy of this field but has atypeofSchema.Type.STRING, arecommenderthat returns a list ofEnum namesas valid values, and a validator that verifies values are valid enumeration names.- Parameters:
enumType- the enumeration type for the fielddefaultOption- the default enumeration value; may be null- Returns:
- the new field; never null
-
withImportance
public Field withImportance(org.apache.kafka.common.config.ConfigDef.Importance importance)
Create and return a new Field instance that is a copy of this field but with the given importance.- Parameters:
importance- the new importance for the field- Returns:
- the new field; never null
-
withDependents
public Field withDependents(String... dependents)
Create and return a new Field instance that is a copy of this field but with the given display name.- Parameters:
dependents- the names of the fields that depend on this field- Returns:
- the new field; never null
-
withDefault
public Field withDefault(String defaultValue)
Create and return a new Field instance that is a copy of this field but with the given default value.- Parameters:
defaultValue- the new default value for the new field- Returns:
- the new field; never null
-
withDefault
public Field withDefault(boolean defaultValue)
Create and return a new Field instance that is a copy of this field but with the given default value.- Parameters:
defaultValue- the new default value for the new field- Returns:
- the new field; never null
-
withDefault
public Field withDefault(int defaultValue)
Create and return a new Field instance that is a copy of this field but with the given default value.- Parameters:
defaultValue- the new default value for the new field- Returns:
- the new field; never null
-
withDefault
public Field withDefault(long defaultValue)
Create and return a new Field instance that is a copy of this field but with the given default value.- Parameters:
defaultValue- the new default value for the new field- Returns:
- the new field; never null
-
withDefault
public Field withDefault(BooleanSupplier defaultValueGenerator)
Create and return a new Field instance that is a copy of this field but with the given default value.- Parameters:
defaultValueGenerator- the supplier for the new default value for the new field, called whenever a default value is needed- Returns:
- the new field; never null
-
withDefault
public Field withDefault(IntSupplier defaultValueGenerator)
Create and return a new Field instance that is a copy of this field but with the given default value.- Parameters:
defaultValueGenerator- the supplier for the new default value for the new field, called whenever a default value is needed- Returns:
- the new field; never null
-
withDefault
public Field withDefault(LongSupplier defaultValueGenerator)
Create and return a new Field instance that is a copy of this field but with the given default value.- Parameters:
defaultValueGenerator- the supplier for the new default value for the new field, called whenever a default value is needed- Returns:
- the new field; never null
-
withRecommender
public Field withRecommender(Field.Recommender recommender)
Create and return a new Field instance that is a copy of this field but with the given recommender.- Parameters:
recommender- the recommender; may be null- Returns:
- the new field; never null
-
withInvisibleRecommender
public Field withInvisibleRecommender()
-
withNoValidation
public Field withNoValidation()
Create and return a new Field instance that is a copy of this field but that uses no validation.- Returns:
- the new field; never null
-
withValidation
public Field withValidation(Field.Validator... validators)
Create and return a new Field instance that is a copy of this field but that in addition toexisting validationthe supplied validation function(s) are also used.- Parameters:
validators- the additional validation function(s); may be null- Returns:
- the new field; never null
-
validatorForType
public static Field.Validator validatorForType(org.apache.kafka.common.config.ConfigDef.Type type)
-
isListOfRegex
public static int isListOfRegex(Configuration config, Field field, Field.ValidationOutput problems)
-
isRegex
public static int isRegex(Configuration config, Field field, Field.ValidationOutput problems)
-
isClassName
public static int isClassName(Configuration config, Field field, Field.ValidationOutput problems)
-
isRequired
public static int isRequired(Configuration config, Field field, Field.ValidationOutput problems)
-
isOptional
public static int isOptional(Configuration config, Field field, Field.ValidationOutput problems)
-
isBoolean
public static int isBoolean(Configuration config, Field field, Field.ValidationOutput problems)
-
isInteger
public static int isInteger(Configuration config, Field field, Field.ValidationOutput problems)
-
isPositiveInteger
public static int isPositiveInteger(Configuration config, Field field, Field.ValidationOutput problems)
-
isNonNegativeInteger
public static int isNonNegativeInteger(Configuration config, Field field, Field.ValidationOutput problems)
-
isLong
public static int isLong(Configuration config, Field field, Field.ValidationOutput problems)
-
isPositiveLong
public static int isPositiveLong(Configuration config, Field field, Field.ValidationOutput problems)
-
isNonNegativeLong
public static int isNonNegativeLong(Configuration config, Field field, Field.ValidationOutput problems)
-
isShort
public static int isShort(Configuration config, Field field, Field.ValidationOutput problems)
-
isDouble
public static int isDouble(Configuration config, Field field, Field.ValidationOutput problems)
-
isZoneOffset
public static int isZoneOffset(Configuration config, Field field, Field.ValidationOutput problems)
-
-