Class OptionsMapper
- java.lang.Object
-
- ru.vyarus.dropwizard.guice.module.context.option.mapper.OptionsMapper
-
public class OptionsMapper extends java.lang.ObjectHelper utility class for mapping options from system properties, environment variables or direct string. Used withGuiceBundle.Builder.options(Map). May recognize multiple prefixed options from properties (seeprops(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:
This will map system properties prefixed with "option." and with full enum class and value. For example,.options(new OptionsMapper().props().map())-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:
And option will be ignored during mass processing (because it's processed manually)..options(new OptionsMapper() .prop("option.ru.vyarus.dropwizard.guice.GuiceyOptions.InjectorStage", GuiceyOptions.InjectorStage, val -> someConversion(val)) .props() .map())To see actual assignments (for debug) use
printMappings().- Since:
- 26.04.2018
-
-
Constructor Summary
Constructors Constructor Description OptionsMapper()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description <T extends java.lang.Enum<? extends Option> & Option>
OptionsMapperenv(java.lang.String name, T option)Shortcut version ofenv(String, Enum, Function).<V,T extends java.lang.Enum<? extends Option> & Option>
OptionsMapperenv(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<? extends Option>,java.lang.Object>map()OptionsMapperprintMappings()Enable assignment logging (to system out, as loggers are not yet initialized).<T extends java.lang.Enum<? extends Option> & Option>
OptionsMapperprop(java.lang.String name, T option)Shortcut version ofprop(String, Enum, Function).<V,T extends java.lang.Enum<? extends Option> & Option>
OptionsMapperprop(java.lang.String name, T option, java.util.function.Function<java.lang.String,V> converter)Directly map system property value to option.OptionsMapperprops()Shortcut forprops(String)with "option." prefix.<T extends java.lang.Enum<? extends Option> & Option>
OptionsMapperprops(java.lang.String prefix)Search for system properties, prefixed with provided string.<V,T extends java.lang.Enum<? extends Option> & Option>
OptionsMapperstring(T option, java.lang.String value)Shortcut version ofstring(Enum, String, Function).<V,T extends java.lang.Enum<? extends Option> & Option>
OptionsMapperstring(T option, java.lang.String value, java.util.function.Function<java.lang.String,V> converter)Map string to option.
-
-
-
Method Detail
-
printMappings
public OptionsMapper printMappings()
Enable assignment logging (to system out, as loggers are not yet initialized).- Returns:
- mapper instance for chained calls
-
props
public OptionsMapper props()
Shortcut forprops(String)with "option." prefix.- Returns:
- mapper instance for chained calls
-
props
public <T extends java.lang.Enum<? extends Option> & Option> OptionsMapper props(java.lang.String prefix)
Search for system properties, prefixed with provided string. Property format must be: "(prefix)enumClassName.enumValue". For example: option.ru.vyarus.dropwizard.guice.GuiceyOptions.UseHkBridge where "option." is 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.- Type Parameters:
T- helper option type- Parameters:
prefix- options prefix- Returns:
- mapper instance for chained calls
-
prop
public <T extends java.lang.Enum<? extends Option> & Option> OptionsMapper prop(java.lang.String name, T option)
Shortcut version ofprop(String, Enum, Function). Used when default converters could be used.- Type Parameters:
T- helper option type- Parameters:
name- property nameoption- option- Returns:
- mapper instance for chained calls
-
prop
public <V,T extends java.lang.Enum<? extends Option> & Option> OptionsMapper prop(java.lang.String name, T option, java.util.function.Function<java.lang.String,V> converter)
Directly map system property value to option.Directly mapped properties excluded from mass processing in
props(String), but direct mapping must appear before mass-processing.- Type Parameters:
T- helper option typeV- value type- Parameters:
name- property nameoption- optionconverter- value converter (may be null to use default converters)- Returns:
- mapper instance for chained calls
-
env
public <T extends java.lang.Enum<? extends Option> & Option> OptionsMapper env(java.lang.String name, T option)
Shortcut version ofenv(String, Enum, Function). Used when default converters could be used.- Type Parameters:
T- helper option type- Parameters:
name- environment variable nameoption- option- Returns:
- mapper instance for chained calls
-
env
public <V,T extends java.lang.Enum<? extends Option> & Option> OptionsMapper env(java.lang.String name, T option, java.util.function.Function<java.lang.String,V> converter)
Map environment variable value to option.- Type Parameters:
V- helper value typeT- helper option type- Parameters:
name- environment variable nameoption- optionconverter- value converter (may be null to use default converters)- Returns:
- mapper instance for chained calls
-
string
public <V,T extends java.lang.Enum<? extends Option> & Option> OptionsMapper string(T option, java.lang.String value)
Shortcut version ofstring(Enum, String, Function). Used when default converters could be used.- Type Parameters:
V- helper value typeT- helper option type- Parameters:
option- optionvalue- value string (could be null)- Returns:
- mapper instance for chained calls
-
string
public <V,T extends java.lang.Enum<? extends Option> & Option> OptionsMapper string(T option, java.lang.String value, java.util.function.Function<java.lang.String,V> converter)
Map string to option. When value is null or empty - nothing happens.- Type Parameters:
V- helper value typeT- helper option type- Parameters:
option- optionvalue- value string (could be null)converter- value converter (may be null to use default converters)- Returns:
- mapper instance for chained calls
-
map
public java.util.Map<java.lang.Enum<? extends Option>,java.lang.Object> map()
- Returns:
- map of resolved options
-
-