public class ConfigDef
extends java.lang.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");
Map<String, Object> configs = defs.parse(props);
// will return "some value"
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 = defs.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.CaseInsensitiveValidString |
static class |
ConfigDef.CompositeValidator |
static class |
ConfigDef.ConfigKey |
static class |
ConfigDef.Importance
The importance level for a configuration
|
static class |
ConfigDef.LambdaValidator |
static class |
ConfigDef.NonEmptyString |
static class |
ConfigDef.NonEmptyStringWithoutControlChars |
static class |
ConfigDef.NonNullValidator |
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.ValidList |
static class |
ConfigDef.ValidString |
static class |
ConfigDef.Width
The width of a configuration value
|
Modifier and Type | Field and Description |
---|---|
static java.lang.Object |
NO_DEFAULT_VALUE
A unique Java object which represents the lack of a default value.
|
Modifier and Type | Method and Description |
---|---|
java.util.Map<java.lang.String,ConfigDef.ConfigKey> |
configKeys()
Get the configuration keys
|
static java.lang.String |
convertToString(java.lang.Object parsedValue,
ConfigDef.Type type) |
static java.util.Map<java.lang.String,java.lang.String> |
convertToStringMapWithPasswordValues(java.util.Map<java.lang.String,?> configs)
Converts a map of config (key, value) pairs to a map of strings where each value
is converted to a string.
|
java.util.Map<java.lang.String,java.lang.Object> |
defaultValues() |
ConfigDef |
define(ConfigDef.ConfigKey key) |
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
java.lang.String documentation)
Define a new configuration with no default value and no special validation logic
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName)
Define a new configuration with no default value, no special validation logic, no dependents and no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
ConfigDef.Recommender recommender)
Define a new configuration with no default value, no special validation logic and no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
java.util.List<java.lang.String> dependents)
Define a new configuration with no default value, no special validation logic and no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
java.util.List<java.lang.String> dependents,
ConfigDef.Recommender recommender)
Define a new configuration with no default value and no special validation logic
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Importance importance,
java.lang.String documentation)
Define a new configuration with no special validation logic
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName)
Define a new configuration with no special validation logic, not dependents and no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
ConfigDef.Recommender recommender)
Define a new configuration with no special validation logic and no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
java.util.List<java.lang.String> dependents)
Define a new configuration with no special validation logic and no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
java.util.List<java.lang.String> dependents,
ConfigDef.Recommender recommender)
Define a new configuration with no special validation logic
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
java.lang.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(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName)
Define a new configuration with no dependents and no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
ConfigDef.Recommender recommender)
Define a new configuration with no dependents
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
java.util.List<java.lang.String> dependents)
Define a new configuration with no custom recommender
|
ConfigDef |
define(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
java.lang.String documentation,
java.lang.String group,
int orderInGroup,
ConfigDef.Width width,
java.lang.String displayName,
java.util.List<java.lang.String> dependents,
ConfigDef.Recommender recommender)
Define a new configuration
|
ConfigDef |
defineInternal(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Importance importance)
Define a new internal configuration.
|
ConfigDef |
defineInternal(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Importance importance,
java.lang.String documentation)
Define a new internal configuration.
|
ConfigDef |
defineInternal(java.lang.String name,
ConfigDef.Type type,
java.lang.Object defaultValue,
ConfigDef.Validator validator,
ConfigDef.Importance importance,
java.lang.String documentation)
Define a new internal configuration.
|
void |
embed(java.lang.String keyPrefix,
java.lang.String groupPrefix,
int startingOrd,
ConfigDef child) |
protected java.lang.String |
getConfigValue(ConfigDef.ConfigKey key,
java.lang.String headerName) |
java.util.List<java.lang.String> |
groups()
Get the groups for the configuration
|
protected java.util.List<java.lang.String> |
headers() |
java.util.Set<java.lang.String> |
names()
Returns unmodifiable set of properties names defined in this ConfigDef
|
java.util.Map<java.lang.String,java.lang.Object> |
parse(java.util.Map<?,?> props)
Parse and validate configs against this configuration definition.
|
static java.lang.Object |
parseType(java.lang.String name,
java.lang.Object value,
ConfigDef.Type type)
Parse a value according to its expected type.
|
java.lang.String |
toEnrichedRst()
Configs with new metadata (group, orderInGroup, dependents) formatted with reStructuredText, suitable for embedding in Sphinx
documentation.
|
java.lang.String |
toHtml() |
java.lang.String |
toHtml(int headerDepth,
java.util.function.Function<java.lang.String,java.lang.String> idGenerator)
Converts this config into an HTML list that can be embedded into docs.
|
java.lang.String |
toHtml(int headerDepth,
java.util.function.Function<java.lang.String,java.lang.String> idGenerator,
java.util.Map<java.lang.String,java.lang.String> dynamicUpdateModes)
Converts this config into an HTML list that can be embedded into docs.
|
java.lang.String |
toHtml(java.util.Map<java.lang.String,java.lang.String> dynamicUpdateModes)
Converts this config into an HTML list that can be embedded into docs.
|
java.lang.String |
toHtmlTable() |
java.lang.String |
toHtmlTable(java.util.Map<java.lang.String,java.lang.String> dynamicUpdateModes)
Converts this config into an HTML table that can be embedded into docs.
|
java.lang.String |
toRst()
Get the configs formatted with reStructuredText, suitable for embedding in Sphinx
documentation.
|
java.util.List<ConfigValue> |
validate(java.util.Map<java.lang.String,java.lang.String> props)
Validate the current configuration values with the configuration definition.
|
java.util.Map<java.lang.String,ConfigValue> |
validateAll(java.util.Map<java.lang.String,java.lang.String> props) |
ConfigDef |
withClientSaslSupport()
Add standard SASL client configuration options.
|
ConfigDef |
withClientSslSupport()
Add standard SSL client configuration options.
|
public static final java.lang.Object NO_DEFAULT_VALUE
public ConfigDef()
public ConfigDef(ConfigDef base)
public java.util.Set<java.lang.String> names()
Set
instance containing the keyspublic java.util.Map<java.lang.String,java.lang.Object> defaultValues()
public ConfigDef define(ConfigDef.ConfigKey key)
public ConfigDef define(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.String displayName, java.util.List<java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.String displayName, java.util.List<java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.String displayName, java.util.List<java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.String displayName, java.util.List<java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.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(java.lang.String name, ConfigDef.Type type, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.String displayName, java.util.List<java.lang.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(java.lang.String name, ConfigDef.Type type, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.String displayName, java.util.List<java.lang.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(java.lang.String name, ConfigDef.Type type, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.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(java.lang.String name, ConfigDef.Type type, ConfigDef.Importance importance, java.lang.String documentation, java.lang.String group, int orderInGroup, ConfigDef.Width width, java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, java.lang.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(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Importance importance, java.lang.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(java.lang.String name, ConfigDef.Type type, ConfigDef.Importance importance, java.lang.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 ConfigDef defineInternal(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Importance importance)
name
- The name of the config parametertype
- The type of the configdefaultValue
- The default value to use if this config isn't presentimportance
- public ConfigDef defineInternal(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Importance importance, java.lang.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
- public ConfigDef defineInternal(java.lang.String name, ConfigDef.Type type, java.lang.Object defaultValue, ConfigDef.Validator validator, ConfigDef.Importance importance, java.lang.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
- documentation
- The documentation string for the configpublic java.util.Map<java.lang.String,ConfigDef.ConfigKey> configKeys()
public java.util.List<java.lang.String> groups()
public ConfigDef withClientSslSupport()
public ConfigDef withClientSaslSupport()
public java.util.Map<java.lang.String,java.lang.Object> parse(java.util.Map<?,?> props)
props
- The configs to parse and validate.public java.util.List<ConfigValue> validate(java.util.Map<java.lang.String,java.lang.String> props)
props
- the current configuration valuespublic java.util.Map<java.lang.String,ConfigValue> validateAll(java.util.Map<java.lang.String,java.lang.String> props)
public static java.lang.Object parseType(java.lang.String name, java.lang.Object value, ConfigDef.Type type)
name
- The config namevalue
- The config valuetype
- The expected typepublic static java.lang.String convertToString(java.lang.Object parsedValue, ConfigDef.Type type)
public static java.util.Map<java.lang.String,java.lang.String> convertToStringMapWithPasswordValues(java.util.Map<java.lang.String,?> configs)
protected java.util.List<java.lang.String> headers()
protected java.lang.String getConfigValue(ConfigDef.ConfigKey key, java.lang.String headerName)
public java.lang.String toHtmlTable()
public java.lang.String toHtmlTable(java.util.Map<java.lang.String,java.lang.String> dynamicUpdateModes)
dynamicUpdateModes
is non-empty, a "Dynamic Update Mode" column
will be included n the table with the value of the update mode. Default
mode is "read-only".dynamicUpdateModes
- Config name -> update mode mappingpublic java.lang.String toRst()
public java.lang.String toEnrichedRst()
public void embed(java.lang.String keyPrefix, java.lang.String groupPrefix, int startingOrd, ConfigDef child)
public java.lang.String toHtml()
public java.lang.String toHtml(int headerDepth, java.util.function.Function<java.lang.String,java.lang.String> idGenerator)
headerDepth
- The top level header depth in the generated HTML.idGenerator
- A function for computing the HTML id attribute in the generated HTML from a given config name.public java.lang.String toHtml(java.util.Map<java.lang.String,java.lang.String> dynamicUpdateModes)
dynamicUpdateModes
is non-empty, a "Dynamic Update Mode" label
will be included in the config details with the value of the update mode. Default
mode is "read-only".dynamicUpdateModes
- Config name -> update mode mapping.public java.lang.String toHtml(int headerDepth, java.util.function.Function<java.lang.String,java.lang.String> idGenerator, java.util.Map<java.lang.String,java.lang.String> dynamicUpdateModes)
dynamicUpdateModes
is non-empty, a "Dynamic Update Mode" label
will be included in the config details with the value of the update mode. Default
mode is "read-only".headerDepth
- The top level header depth in the generated HTML.idGenerator
- A function for computing the HTML id attribute in the generated HTML from a given config name.dynamicUpdateModes
- Config name -> update mode mapping.