Class 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 Detail

      • name

        private final String name
      • displayName

        private final String displayName
      • desc

        private final String desc
      • defaultValueGenerator

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

        private final Set<?> allowedValues
      • isRequired

        private final boolean isRequired
    • 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 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
      • 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()
      • 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
      • 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)