public class OptionsMapper
extends java.lang.Object
GuiceBundle.Builder.options(Map)
. May recognize multiple prefixed options from
properties (see props(String)
).
Only existing properties are mapped. If value is null or property is not defined - it's ignored.
Example usage:
builder.options(new OptionsMapper()
.env("ENV_PROP", MyOptions.Opt1)
.env("ENV_PROP_CUST", MyOptions.Opt2, val -> convertVal(val))
.prop("sys.prop", MyOptions.Opt3)
.string(MyOptions.Opt4, "value")
.map())
Only string, boolean, integer, double, short. byte enum by value, enum by class, array and EnumSet option types are
directly supported (see StringConverter
). For other types explicit converters must be used.
To enable generic options definition from properties use:
.options(new OptionsMapper().props().map())
This will map system properties prefixed with "option." and with full enum class and value. For example,
-Doption.ru.vyarus.dropwizard.guice.GuiceyOptions.InjectorStage=DEVELOPMENT
.
In order to apply special conversion for some property (when default converters can't properly convert value) declare manual property binding before mass processing:
.options(new OptionsMapper()
.prop("option.ru.vyarus.dropwizard.guice.GuiceyOptions.InjectorStage", GuiceyOptions.InjectorStage,
val -> someConversion(val))
.props()
.map())
And option will be ignored during mass processing (because it's processed manually).
To see actual assignments (for debug) use printMappings()
.
Constructor and Description |
---|
OptionsMapper() |
Modifier and Type | Method and Description |
---|---|
<T extends java.lang.Enum & Option> |
env(java.lang.String name,
T option)
Shortcut version of
env(String, Enum, Function) . |
<V,T extends java.lang.Enum & Option> |
env(java.lang.String name,
T option,
java.util.function.Function<java.lang.String,V> converter)
Map environment variable value to option.
|
java.util.Map<java.lang.Enum,java.lang.Object> |
map() |
OptionsMapper |
printMappings()
Enable assignment logging (to system out, as loggers are not yet initialized).
|
<T extends java.lang.Enum & Option> |
prop(java.lang.String name,
T option)
Shortcut version of
prop(String, Enum, Function) . |
<V,T extends java.lang.Enum & Option> |
prop(java.lang.String name,
T option,
java.util.function.Function<java.lang.String,V> converter)
Directly map system property value to option.
|
OptionsMapper |
props()
Shortcut for
props(String) with "option." prefix. |
<T extends java.lang.Enum & Option> |
props(java.lang.String prefix)
Search for system properties, prefixed with provided string.
|
<V,T extends java.lang.Enum & Option> |
string(T option,
java.lang.String value)
Shortcut version of
string(Enum, String, Function) . |
<V,T extends java.lang.Enum & Option> |
string(T option,
java.lang.String value,
java.util.function.Function<java.lang.String,V> converter)
Map string to option.
|
public OptionsMapper printMappings()
public OptionsMapper props()
props(String)
with "option." prefix.public <T extends java.lang.Enum & Option> OptionsMapper props(java.lang.String prefix)
Could be used only for string, boolean, integer, double, short and byte option types.
If some options require special handling then map them directly using prop(String, Enum, Function)
and only AFTER that call mass processing.
T
- helper option typeprefix
- options prefixpublic <T extends java.lang.Enum & Option> OptionsMapper prop(java.lang.String name, T option)
prop(String, Enum, Function)
. Used when default converters could be used.T
- helper option typename
- property nameoption
- optionpublic <V,T extends java.lang.Enum & Option> OptionsMapper prop(java.lang.String name, T option, java.util.function.Function<java.lang.String,V> converter)
Directly mapped properties excluded from mass processing in props(String)
, but direct mapping
must appear before mass-processing.
T
- helper option typeV
- value typename
- property nameoption
- optionconverter
- value converter (may be null to use default converters)public <T extends java.lang.Enum & Option> OptionsMapper env(java.lang.String name, T option)
env(String, Enum, Function)
. Used when default converters could be used.T
- helper option typename
- environment variable nameoption
- optionpublic <V,T extends java.lang.Enum & Option> OptionsMapper env(java.lang.String name, T option, java.util.function.Function<java.lang.String,V> converter)
V
- helper value typeT
- helper option typename
- environment variable nameoption
- optionconverter
- value converter (may be null to use default converters)public <V,T extends java.lang.Enum & Option> OptionsMapper string(T option, java.lang.String value)
string(Enum, String, Function)
. Used when default converters could be used.V
- helper value typeT
- helper option typeoption
- optionvalue
- value string (could be null)public <V,T extends java.lang.Enum & Option> OptionsMapper string(T option, java.lang.String value, java.util.function.Function<java.lang.String,V> converter)
V
- helper value typeT
- helper option typeoption
- optionvalue
- value string (could be null)converter
- value converter (may be null to use default converters)public java.util.Map<java.lang.Enum,java.lang.Object> map()