Annotation Interface ConfiguredOption
Configured.
Usually this should target a builder method that configures appropriate option.
If defined on a static method, it must be a {code static T create(X)} method, where
X is either io.helidon.config.Config or a single option.
There may be multiple create(X) methods defined on a single interface/class, each
of them annotated with a different list of options. In such a case the grouping
should be used as defined on these methods. If a method create(Config) exists,
it should use the same groups (e.g. if one method defines URI and Proxy, and another
method defines a Path, the create(Config) method can accept either (URI, proxy host, proxy port)
or (path)).
By default, the name of the method is considered to be the configuration option used. If method contains camel case, it will be changed to lower case hyphenated (this describes the implementation of Helidon specific annotation processor and expectations).
Example - method public Builder listenAddress(String) would be configured
by key listen-address.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final booleanThe default value forrequired()isfalse.static final StringA string meaning that a value is not specified (to allow empty String as a meaningful value). -
Optional Element Summary
Optional ElementsModifier and TypeOptional ElementDescriptionFor options that have a predefined set of allowed values.booleanConfigure totrueif this option is deprecated.Description of the configuration option.booleanSet totruefor experimental configuration.The key of the configuration option as used in config.Kind of this option.booleanWhen set totrue, this property will be part of the parent structure (e.g.booleanSet to true if the configuration may be provided by another module not know to us.booleanWhether this option is truly required (e.g.Class<?> The type of the configuration option.Default value of this option if not configured explicitly.
-
Field Details
-
UNCONFIGURED
A string meaning that a value is not specified (to allow empty String as a meaningful value).- See Also:
-
DEFAULT_REQUIRED
-
-
Element Details
-
key
-
type
Class<?> typeThe type of the configuration option.If the type is not explicitly configured, it is derived from the annotated method. If the method has parameters, the type of the first parameter is used. Otherwise, the method must return a type is used.
- Returns:
- type of the configuration option
- Default:
io.helidon.config.metadata.ConfiguredOption.class
-
description
String descriptionDescription of the configuration option. Defaults to the Javadoc first sentence of the annotated element.- Returns:
- description of the configuration option
- Default:
""
-
required
boolean requiredWhether this option is truly required (e.g. the option must be present in configuration, otherwise the component would fail). This MUST NOT be configured together with default value, as that would make this option optional (as a default value exists).- Returns:
truefor required option,falsefor options that are optional.- See Also:
- Default:
false
-
value
String valueDefault value of this option if not configured explicitly.- Returns:
- default value
- Default:
"io.helidon.config.metadata.ConfiguredOption.UNCONFIGURED"
-
experimental
boolean experimentalSet totruefor experimental configuration.- Returns:
- whether this option is experimental
- Default:
false
-
kind
Kind of this option. Defaults toConfiguredOption.Kind.VALUE, autodetectsConfiguredOption.Kind.LISTif the parameter is an actualList,SetorIterable.ConfiguredOption.Kind.MAPis detected as well, though the type must be a String to a primitive or string- Returns:
- kind of configuration option
- Default:
VALUE
-
provider
boolean providerSet to true if the configuration may be provided by another module not know to us. The provider must then be configured toConfigured.provides()this type so code can be correctly generated.If the method returns a list, the provider configuration must be under config key
providersunder the configured option. On the same level asproviders, there can bediscover-servicesboolean defining whether to look for services from service loader even if not configured in the configuration.Option called
myProviderthat returns a single provider, or anOptionalprovider example in configuration:my-type: my-provider: provider-id: provider-key1: "providerValue" provider-key2: "providerValue"Option called
myProvidersthat returns a list of providers in configuration:my-type: my-providers: discover-services: true providers: provider-id: provider-key1: "providerValue" provider-key2: "providerValue" provider2-id: provider2-key1: "provider2Value"- Returns:
- whether this requires a provider with configuration, defaults to
false
- Default:
false
-
allowedValues
ConfiguredValue[] allowedValuesFor options that have a predefined set of allowed values.- Returns:
- allowed values
- Default:
{}
-
deprecated
boolean deprecatedConfigure totrueif this option is deprecated.- Returns:
- whether this configured option is deprecated
- Default:
false
-
mergeWithParent
boolean mergeWithParentWhen set totrue, this property will be part of the parent structure (e.g. thekey()must be empty, and this must be a complex node).- Returns:
- whether to merge the child nodes directly with parent node without a key
- Default:
false
-