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 a Configuration instance.
Author:
Randall Hauch
  • Field Details

    • INTERNAL_PREFIX

      public static final String INTERNAL_PREFIX
      See Also:
    • name

      private final String name
    • displayName

      private final String displayName
    • desc

      private final String desc
    • defaultValueGenerator

      private final Supplier<Object> defaultValueGenerator
    • 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
    • dependents

      private final List<String> dependents
    • recommender

      private final Field.Recommender recommender
    • allowedValues

      private final Set<?> allowedValues
    • group

      private final Field.GroupEntry group
    • isRequired

      private final boolean isRequired
  • Constructor Details

    • 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)
    • 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, boolean isRequired, Field.GroupEntry group, Set<?> allowedValues)
  • Method Details

    • 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
    • createGroupEntry

      public static Field.GroupEntry createGroupEntry(Field.Group group)
    • createGroupEntry

      public static Field.GroupEntry createGroupEntry(Field.Group group, int positionInGroup)
    • create

      public static Field create(String name)
      Create an immutable Field instance 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 internal Field instance with the given property name. The name will be prefixed with internal. 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 immutable Field instance with the given property name.
      Parameters:
      name - the name of the field; may not be null
      displayName - 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 immutable Field instance with the given property name and description.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      Returns:
      the field; never null
    • create

      public static Field create(String name, String displayName, String description, String defaultValue)
      Create an immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValue - 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 immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValue - 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 immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValue - 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 immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValue - 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 immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValueGenerator - 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 immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValueGenerator - 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 immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValueGenerator - 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 immutable Field instance with the given property name, description, and default value.
      Parameters:
      name - the name of the field; may not be null
      displayName - the display name of the field; may not be null
      description - the description
      defaultValueGenerator - 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 added
      groupName - the name of the group; may be null
      fields - 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 null if 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 null if 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 the Field.Recommender for this field.
      Returns:
      the recommender; may be null if there is no recommender
    • isRequired

      public boolean isRequired()
      Get if the field is required/mandatory.
      Returns:
      if the field is required; true or false
    • group

      public Field.GroupEntry group()
      Get the group of this field.
      Returns:
      the group
    • allowedValues

      public Set<?> allowedValues()
      Get the allowed values for this field.
      Returns:
      the java.util.Set of allowed values; may be null if there's no set of specific values
    • 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 null
      problems - the consumer to be called with each problem; never null
      Returns:
      true if the value is considered valid, or false if 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 the ConfigValue for the field with the results.
      Parameters:
      config - the configuration to be validated; may not be null
      fieldSupplier - the supplier for dependent fields by name; may not be null
      results - 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 a type of Schema.Type.STRING, a recommender that returns a list of Enum names as 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 a type of Schema.Type.STRING, a recommender that returns a list of Enum names as valid values, and a validator that verifies values are valid enumeration names.
      Parameters:
      enumType - the enumeration type for the field
      defaultOption - the default enumeration value; may be null
      Returns:
      the new field; never null
    • required

      public Field required()
    • optional

      public Field optional()
    • withGroup

      public Field withGroup(Field.GroupEntry group)
    • withAllowedValues

      public Field withAllowedValues(Set<?> allowedValues)
    • 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 to existing validation the supplied validation function(s) are also used.
      Parameters:
      validators - the additional validation function(s); may be null
      Returns:
      the new field; never null
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getEnumLiterals

      private static <T extends Enum<T>> Set<String> getEnumLiterals(Class<T> enumType)
    • 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)
    • validationOutput

      public static String validationOutput(Field field, String problem)