Examples
int port = Config.getInt("app.port", 8090);
String topicName = Config.get("app.topic.name");
List<Integer> codes = Config.list().ofInt("my.codes", 42, 54);
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interface
Build Configuration manually explicitly loading all the configuration as key value pairs.static interface
Expression evaluation.static interface
Return a List of values for a configuration key.static interface
Return a Set of values configured. -
Method Summary
Modifier and TypeMethodDescriptionReturn the loaded properties as standard Properties map.static Configuration.Builder
builder()
Return a Builder for Configuration that is loaded manually (not via the normal resource loading).void
clearProperty
(String key) Clear the value for the given key.default boolean
Return boolean configuration value with the given default value.default boolean
Return boolean configuration value with the given default value.eval
(Properties properties) Return a copy of the properties with 'eval' run on all the values.void
evalModify
(Properties properties) Run eval of the given properties modifying the values if changed.eventBuilder
(String name) Create an event builder to make changes to the configuration.Return the configuration for a path.Return a required configuration value as String.Return a configuration string value with a given default.<T> T
Apply a mapping function to the value returned.<T> Optional
<T> getAsOptional
(String key, Function<String, T> mappingFunction) Apply a mapping function to the value returned.boolean
Return a required boolean configuration value.boolean
Return a configuration value as boolean given a default value.getDecimal
(String key) Return a decimal configuration value.getDecimal
(String key, String defaultValue) Return a decimal configuration value with a default value.getDuration
(String key) Return a Duration configuration value.getDuration
(String key, String defaultValue) Return a Duration configuration value with a default value.<T extends Enum<T>>
TReturn the enum configuration value.<T extends Enum<T>>
TReturn the enum configuration value with a default value.int
Return a required int configuration value.int
Return a configuration value as int given a default value.long
Return a required long configuration value.long
Return a configuration value as long given a default value.getNullable
(String key) Return a configuration value as String or null if it is not defined.getNullable
(String key, String defaultValue) Return a configuration value as String or null if it is not defined.getOptional
(String key) Return a configuration value that might not exist.getOptional
(String key, String defaultValue) Return a configuration value that might not exist.Return a URI configuration value.Return a URI configuration value with a default value.list()
Return a List of values configured.void
Put the loaded properties into System properties.void
Register a callback for a change to the given configuration key.void
onChange
(Consumer<ModificationEvent> bulkChangeEventListener, String... keys) Register an event listener that will be notified of configuration changes.void
onChangeBool
(String key, Consumer<Boolean> singlePropertyChangeListener) Register a callback for a change to the given configuration key as a Boolean value.void
onChangeInt
(String key, IntConsumer singlePropertyChangeListener) Register a callback for a change to the given configuration key as an Int value.void
onChangeLong
(String key, LongConsumer singlePropertyChangeListener) Register a callback for a change to the given configuration key as a Long value.void
Add configuration values via a map.void
Schedule a task to run periodically with a given delay and period.set()
Return a Set of values configured.void
setProperty
(String key, String value) Set a single configuration value.int
size()
Return the number of configuration properties.
-
Method Details
-
asProperties
Properties asProperties()Return the loaded properties as standard Properties map. -
forPath
Return the configuration for a path.Examples
Say you have a set of properties like this
example.path.prefix1=1
example.path.prefix2=2
Configuration config = Config.forPath("example.path"); Configuration config2 = Config.forPath("example").forPath("path"); // will output "1" int number = config.getInt("prefix1"); // will output "2" number = config2.getInt("prefix2");
-
get
Return a required configuration value as String.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
get
Return a configuration string value with a given default.- Parameters:
key
- The configuration keydefaultValue
- The default value used- Returns:
- The configured or default value
-
getOptional
Return a configuration value that might not exist.- Parameters:
key
- The configuration key- Returns:
- The configured value wrapped as optional
-
getOptional
Return a configuration value that might not exist.- Parameters:
key
- The configuration keydefaultValue
- The default value that can be null- Returns:
- The configured value wrapped as optional
-
getNullable
Return a configuration value as String or null if it is not defined.This is an alternative to
getOptional(String)
for cases where we prefer to work with null values rather than Optional.- Parameters:
key
- The configuration key- Returns:
- The configured value or null if not set
-
getNullable
Return a configuration value as String or null if it is not defined.This is an alternative to
getOptional(String)
for cases where we prefer to work with null values rather than Optional.- Parameters:
key
- The configuration keydefaultValue
- The default value that can be null- Returns:
- The configured value or null if not set
-
enabled
Return boolean configuration value with the given default value.This is the same as
getBool(String)
.IllegalStateException is thrown if the value is not defined in configuration.
if (configuration.enabled("feature.cleanup")) { ... }
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
enabled
Return boolean configuration value with the given default value.This is the same as
getBool(String, boolean)
.if (configuration.enabled("feature.cleanup", true)) { ... }
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
getBool
Return a required boolean configuration value.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
getBool
Return a configuration value as boolean given a default value.- Parameters:
key
- The configuration keydefaultValue
- The default value used- Returns:
- The configured or default value
-
getInt
Return a required int configuration value.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
getInt
Return a configuration value as int given a default value.- Parameters:
key
- The configuration keydefaultValue
- The default value used- Returns:
- The configured or default value
-
getLong
Return a required long configuration value.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
getLong
Return a configuration value as long given a default value.- Parameters:
key
- The configuration keydefaultValue
- The default value used- Returns:
- The configured or default value
-
getDecimal
Return a decimal configuration value.- Parameters:
key
- The configuration key- Returns:
- The configured value
-
getDecimal
Return a decimal configuration value with a default value.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
key
- The configuration keydefaultValue
- The default value- Returns:
- The configured value
-
getURI
Return a URI configuration value.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
getURI
Return a URI configuration value with a default value.- Parameters:
key
- The configuration keydefaultValue
- The default value- Returns:
- The configured value
-
getDuration
Return a Duration configuration value.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
key
- The configuration key- Returns:
- The configured value
-
getDuration
Return a Duration configuration value with a default value.- Parameters:
key
- The configuration keydefaultValue
- The default value- Returns:
- The configured value
-
getEnum
Return the enum configuration value.IllegalStateException is thrown if the value is not defined in configuration.
- Parameters:
type
- The enum typekey
- The configuration key- Returns:
- The configured value
-
getAs
Apply a mapping function to the value returned.- Parameters:
key
- The configuration keymappingFunction
- the mapping function to execute- Returns:
- The mapped value
-
getAsOptional
Apply a mapping function to the value returned.- Parameters:
key
- The configuration keymappingFunction
- the mapping function to execute- Returns:
- The mapped value
-
getEnum
Return the enum configuration value with a default value.- Parameters:
type
- The enum typekey
- The configuration keydefaultValue
- The default value- Returns:
- The configured value
-
list
Configuration.ListValue list()Return a List of values configured.List<Integer> codes = Config.list().ofInt("my.codes", 97, 45);
-
set
Configuration.SetValue set()Return a Set of values configured.Set<String> operations = Config.getSet().of("my.operations", "put","delete");
-
eventBuilder
Create an event builder to make changes to the configuration.configuration.eventBuilder("MyChanges") .put("someKey", "val0") .put("someOther.key", "42") .remove("foo") .publish();
- Parameters:
name
- The name of the event which defines the source of the configuration value.- See Also:
-
setProperty
Set a single configuration value. Note thateventBuilder(String)
should be used when setting multiple configuration values.This will fire configuration callback listeners that are registered.
-
putAll
Add configuration values via a map.This will fire configuration callback listeners that are registered.
-
clearProperty
Clear the value for the given key. Note thateventBuilder(String)
should be used when setting multiple configuration values.This will fire configuration callback listeners that are registered.
-
onChange
Register an event listener that will be notified of configuration changes.If we are only interested in changes to a single property it is easier to use
onChange(String, Consumer)
or the variants for int, long, boolean onChangeInt(), onChangeLong(), onChangeBool().Typically, we use this when we are interested in changes to multiple properties and want to get and act on the values of multiple properties.
configuration.onChange((modificationEvent) -> { String newValue = modificationEvent.configuration().get("myFirstKey"); int newInt = modificationEvent.configuration().getInt("myOtherKey"); // do something ... });
When we are only interested if some specific properties have changed then we can define those. The event listener will be invoked if there is a change to any of those keys.
configuration.onChange((event) -> { String newValue = event.configuration().get("myFirstInterestingKey"); int newInt = event.configuration().getInt("myOtherInterestingKey"); // do something ... }, "myFirstInterestingKey", "myOtherInterestingKey");
- Parameters:
bulkChangeEventListener
- The listener that is called when changes have occurredkeys
- Optionally specify keys when the listener is only interested if changes are made for these specific properties
-
onChange
Register a callback for a change to the given configuration key.Use this when we are only interested in changes to a single configuration property. If we are interested in multiple properties we should use
onChange(Consumer, String...)
configuration.onChange("myKey", (newValue) -> { // do something with the newValue ... )};
- Parameters:
key
- The configuration key we want to detect changes tosinglePropertyChangeListener
- The callback handling to fire when the configuration changes.
-
onChangeInt
Register a callback for a change to the given configuration key as an Int value.Use this when we are only interested in changes to a single configuration property. If we are interested in multiple properties we should use
onChange(Consumer, String...)
- Parameters:
key
- The configuration key we want to detect changes tosinglePropertyChangeListener
- The callback handling to fire when the configuration changes.
-
onChangeLong
Register a callback for a change to the given configuration key as a Long value.Use this when we are only interested in changes to a single configuration property. If we are interested in multiple properties we should use
onChange(Consumer, String...)
- Parameters:
key
- The configuration key we want to detect changes tosinglePropertyChangeListener
- The callback handling to fire when the configuration changes.
-
onChangeBool
Register a callback for a change to the given configuration key as a Boolean value.Use this when we are only interested in changes to a single configuration property. If we are interested in multiple properties we should use
onChange(Consumer, String...)
- Parameters:
key
- The configuration key we want to detect changes tosinglePropertyChangeListener
- The callback handling to fire when the configuration changes.
-
loadIntoSystemProperties
void loadIntoSystemProperties()Put the loaded properties into System properties. -
size
int size()Return the number of configuration properties. -
schedule
Schedule a task to run periodically with a given delay and period.- Parameters:
delay
- delay in milliseconds before task is to be executed.period
- time in milliseconds between successive task executions.task
- task to be scheduled.
-
eval
Return a copy of the properties with 'eval' run on all the values. -
evalModify
Run eval of the given properties modifying the values if changed. -
builder
Return a Builder for Configuration that is loaded manually (not via the normal resource loading).
-