Interface KeyValueConfigurerFactory
-
- All Implemented Interfaces:
public interface KeyValueConfigurerFactoryDefines contract for building KeyValueConfigurer instances. The main idea is that it receives
Map<String, Any>which holds configuration rules and builds KeyValueConfigurer based on that.DSL: For simplicity all examples below show YAML config, however, there is no restriction on where it comes from.
Unconditional static configuration
rules: key1: value1 key2: value2This is the simplest possible configuration - target values are defined for the target keys.
Conditional static configuration with leaf static rules
rules: key1: - When: key2: some-value Then: value1 - When: key3: some-other-value Then: value2 - Then: value3Else if key3 = some-other-value then key1 is set to value1
Note: if there is no final unconditional
'Then'clause, thenkey1value is not setComposite AND filter
rules: key1: - When: key2: some-value Then: value1 - When: And: - key3: some-other-value - key4: one-more-value Then: value2Composite OR filter
rules: key1: - When: Or: - key2: some-value - And: key3: some-other-value key4: one-more-value Then: valueIf
key2 = some-valueor (key3 = some-other-valueandkey4 = one-more-value) thenkey1is set tovalueElse
key1value is not set/changed
Note: any other filter might be used in AND/OR filters
Dynamic value with static key
rules: key1: - When: key2: 3 Then: <original-key3>If key2 dynamic value = 3 then
keyis set to key3 dynamic valueElse
key1value is not set/changed
Note: here and below all elements in angle brackets (<>) mean something dynamic. Here we use a dedicated
original-prefix as an indication that dynamic value should be retrieved via target static keyDynamic value with static key shorthand
rules: key1: - When: key2: 3 Then: 4 - Then: <original>If
key2 = 3thenkey1is set to4Else
key1is set tokey1 dynamic value
Note:
key1: <original>is the same askey1: <original-key1>Dynamic value with dynamic key
rules: key1: - When: key2: <flavor1> Then: <flavor2>If
key2 =dynamic value for dynamic key 'flavor1' thenkey1is set to dynamic value for dynamic key 'flavor2'Else
key1value is not set/changed
Dynamic key
rules: key1: - When: <flow>: flow1 Then: value1 - When: key2: value2 Then: value3If dynamic value for dynamic key 'flow' is equal to
flowthenkey1is set tovalue1Else if
key2 = value2thenkey1is set tovalue3Else
key1value is not set/changed
Rich string value with dynamic value by static key
rules: key1: - When: key2: 1 Then: "prefix <original-key3> suffix"If key1 type is string and
key2 = 1then setkey1value as stringprefix 'dynamic key3 value' suffixElse
key1value is not set/changed
Rich string value with dynamic value by dynamic key
rules: key1: - When: key2: 1 Then: "prefix <flow> suffix"If key1 type is string and
key2 = 1then setkey1value as stringprefix 'dynamic flow value' suffixElse
key1value is not set/changed
-
-
Method Summary
Modifier and Type Method Description abstract <K extends Any> KeyValueConfigurer<K>build(Map<String, Object> rawRules, TypedKeyManager<K> keyManager, Set<TypeManagerContext> contexts)-
-
Method Detail
-
build
abstract <K extends Any> KeyValueConfigurer<K> build(Map<String, Object> rawRules, TypedKeyManager<K> keyManager, Set<TypeManagerContext> contexts)
- Parameters:
rawRules- raw configuration ruleskeyManager- key manager to usecontexts- contexts to use for selecting target TypeManager, see TypeManagerContext for more details
-
-
-
-