java.lang.Object
io.aiven.commons.kafka.config.validator.EnumValidator

public class EnumValidator extends Object
Validates that a configuration value string is a case-insensitive match to an Enum constant. Given an enum:

 enum X {
 	ONE, TWO, THREE, one
 };
 
You can create a case-insensitive validator from the Enum class (recommended for usability: enum constants do not usually differ only by case):

 var validator = EnumValidator.caseInsensitive(X.class);
 validator.ensureValid("config.name", "One"); // passes
 validator.ensureValid("config.name", "ONE"); // passes
 validator.ensureValid("config.name", "Three"); // passes
 validator.ensureValid("config.name", "four"); // throws ConfigException
 
or a case-sensitive validator, if necessary:

 var validator = EnumValidator.caseInsensitive(X.class);
 validator.ensureValid("config.name", "one"); // passes
 validator.ensureValid("config.name", "One"); // throws ConfigException
 validator.ensureValid("config.name", "ONE"); // passes
 validator.ensureValid("config.name", "Three"); // throws ConfigException
 validator.ensureValid("config.name", "four"); // throws ConfigException
 
  • Method Details

    • caseInsensitive

      public static org.apache.kafka.common.config.ConfigDef.Validator caseInsensitive(Class<? extends Enum<?>> enumClass)
      Creates a case insensitive EnumValidator.
      Parameters:
      enumClass - the class of the Enum that defines the valid values.
      Returns:
      a validator that allows any string value that is a case-insensitive match for the enum constants in the given Enum class
    • caseSensitive

      public static org.apache.kafka.common.config.ConfigDef.Validator caseSensitive(Class<? extends Enum<?>> enumClass)
      Creates a case sensitive EnumValidator.
      Parameters:
      enumClass - the class of the Enum that defines the valid values.
      Returns:
      a validator that allows any string value that is a case-sensitive match for the enum constants in the given Enum class