public class ConfigDef extends Object
ConfigDef.Validator
.
Moreover, you can specify the dependents of a configuration. The valid values and visibility of a configuration
may change according to the values of other configurations. You can override ConfigDef.Recommender
to get valid
values and set visibility of a configuration given the current configuration values.
To use the class:
ConfigDef defs = new ConfigDef();
defs.define("config_with_default", Type.STRING, "default string value", "Configuration with default value.");
defs.define("config_with_validator", Type.INT, 42, Range.atLeast(0), "Configuration with user provided validator.");
defs.define("config_with_dependents", Type.INT, "Configuration with dependents.", "group", 1, "Config With Dependents", Arrays.asList("config_with_default;","config_with_validator"));
Map<String, String> props = new HashMap<>();
props.put("config_with_default", "some value");
props.put("config_with_dependents", "some other value");
// will return "some value"
Map<String, Object> configs = defs.parse(props);
String someConfig = (String) configs.get("config_with_default");
// will return default value of 42
int anotherConfig = (Integer) configs.get("config_with_validator");
To validate the full configuration, use:
List<Config> configs = def.validate(props);
The Config
contains updated configuration information given the current configuration values.
This class can be used standalone or in combination with AbstractConfig
which provides some additional
functionality for accessing configs.Modifier and Type | Class and Description |
---|---|
static class |
ConfigDef.ConfigKey |
static class |
ConfigDef.Importance
The importance level for a configuration
|
static class |
ConfigDef.Range
Validation logic for numeric ranges
|
static interface |
ConfigDef.Recommender
This is used by the
validate(Map) to get valid values for a configuration given the current
configuration values in order to perform full configuration validation and visibility modification. |
static class |
ConfigDef.Type
The config types
|
static interface |
ConfigDef.Validator
Validation logic the user may provide to perform single configuration validation.
|
static class |
ConfigDef.ValidString |
static class |
ConfigDef.Width
The width of a configuration value
|
Modifier and Type | Field and Description |
---|---|
static Object |
NO_DEFAULT_VALUE |
Constructor and Description |
---|
ConfigDef() |
Modifier and Type | Method and Description |
---|---|
Map<String,ConfigDef.ConfigKey> |
configKeys()
Get the configuration keys
|
static String |
convertToString(Object parsedValue,
ConfigDef.Type type) |
ConfigDef |
define(String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
String documentation)
Define a new configuration with no default value and no special validation logic
|
ConfigDef |
define(String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName)
Define a new configuration with no default value, no special validation logic, no dependents and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
ConfigDef.Recommender recommender)
Define a new configuration with no default value, no special validation logic and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
List<String> dependents)
Define a new configuration with no default value, no special validation logic and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
List<String> dependents,
ConfigDef.Recommender recommender)
Define a new configuration with no default value and no special validation logic
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Importance importance,
String documentation)
Define a new configuration with no special validation logic
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName)
Define a new configuration with no special validation logic, not dependents and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
ConfigDef.Recommender recommender)
Define a new configuration with no special validation logic and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
List<String> dependents)
Define a new configuration with no special validation logic and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
List<String> dependents,
ConfigDef.Recommender recommender)
Define a new configuration with no special validation logic
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
String documentation)
Define a new configuration with no group, no order in group, no width, no display name, no dependents and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName)
Define a new configuration with no dependents and no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
ConfigDef.Recommender recommender)
Define a new configuration with no dependents
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
List<String> dependents)
Define a new configuration with no custom recommender
|
ConfigDef |
define(String name,
ConfigDef.Type type,
Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
String documentation,
String group,
int orderInGroup,
ConfigDef.Width width,
String displayName,
List<String> dependents,
ConfigDef.Recommender recommender)
Define a new configuration
|
List<String> |
groups()
Get the groups for the configuration
|
Set<String> |
names()
Returns unmodifiable set of properties names defined in this ConfigDef
|
Map<String,Object> |
parse(Map<?,?> props)
Parse and validate configs against this configuration definition.
|
String |
toHtmlTable() |
String |
toRst()
Get the configs formatted with reStructuredText, suitable for embedding in Sphinx
documentation.
|
List<ConfigValue> |
validate(Map<String,String> props)
Validate the current configuration values with the configuration definition.
|
ConfigDef |
withClientSaslSupport()
Add standard SASL client configuration options.
|
ConfigDef |
withClientSslSupport()
Add standard SSL client configuration options.
|
public static final Object NO_DEFAULT_VALUE
public Set<String> names()
Set
instance containing the keyspublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, List<String> dependents, ConfigDef.Recommender recommender)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentvalidator
- the validator to use in checking the correctness of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaydependents
- the configurations that are dependents of this configurationrecommender
- the recommender provides valid values given the parent configuration valuespublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, List<String> dependents)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentvalidator
- the validator to use in checking the correctness of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaydependents
- the configurations that are dependents of this configurationpublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, ConfigDef.Recommender recommender)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentvalidator
- the validator to use in checking the correctness of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displayrecommender
- the recommender provides valid values given the parent configuration valuespublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentvalidator
- the validator to use in checking the correctness of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaypublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, List<String> dependents, ConfigDef.Recommender recommender)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaydependents
- the configurations that are dependents of this configurationrecommender
- the recommender provides valid values given the parent configuration valuespublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, List<String> dependents)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaydependents
- the configurations that are dependents of this configurationpublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, ConfigDef.Recommender recommender)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displayrecommender
- the recommender provides valid values given the parent configuration valuespublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaypublic ConfigDef define(String name, ConfigDef.Type type, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, List<String> dependents, ConfigDef.Recommender recommender)
name
- the name of the config parametertype
- the type of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaydependents
- the configurations that are dependents of this configurationrecommender
- the recommender provides valid values given the parent configuration valuepublic ConfigDef define(String name, ConfigDef.Type type, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, List<String> dependents)
name
- the name of the config parametertype
- the type of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaydependents
- the configurations that are dependents of this configurationpublic ConfigDef define(String name, ConfigDef.Type type, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName, ConfigDef.Recommender recommender)
name
- the name of the config parametertype
- the type of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displayrecommender
- the recommender provides valid values given the parent configuration valuepublic ConfigDef define(String name, ConfigDef.Type type, ConfigDef.Importance importance, String documentation, String group, int orderInGroup, ConfigDef.Width width, String displayName)
name
- the name of the config parametertype
- the type of the configimportance
- the importance of this configdocumentation
- the documentation string for the configgroup
- the group this config belongs toorderInGroup
- the order of this config in the groupwidth
- the width of the configdisplayName
- the name suitable for displaypublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, String documentation)
name
- the name of the config parametertype
- the type of the configdefaultValue
- the default value to use if this config isn't presentvalidator
- the validator to use in checking the correctness of the configimportance
- the importance of this configdocumentation
- the documentation string for the configpublic ConfigDef define(String name, ConfigDef.Type type, Object defaultValue, ConfigDef.Importance importance, String documentation)
name
- The name of the config parametertype
- The type of the configdefaultValue
- The default value to use if this config isn't presentimportance
- The importance of this config: is this something you will likely need to change.documentation
- The documentation string for the configpublic ConfigDef define(String name, ConfigDef.Type type, ConfigDef.Importance importance, String documentation)
name
- The name of the config parametertype
- The type of the configimportance
- The importance of this config: is this something you will likely need to change.documentation
- The documentation string for the configpublic Map<String,ConfigDef.ConfigKey> configKeys()
public List<String> groups()
public ConfigDef withClientSslSupport()
public ConfigDef withClientSaslSupport()
public Map<String,Object> parse(Map<?,?> props)
props
- The configs to parse and validate.public List<ConfigValue> validate(Map<String,String> props)
props
- the current configuration valuespublic static String convertToString(Object parsedValue, ConfigDef.Type type)
public String toHtmlTable()
public String toRst()