Configuration Injection
Users want to be able to polulate configured items by injecting configured values. Hereby
-
the lifecycle of the instances is not managed by Tamaya
-
all references to items configured are managed as weak references, to prevent memoryleaks.
-
Injection should if possible evaluate the properties by defaults. Even properties without any annotations are possible.
-
Users expect to exclude certain properties from calculation
-
Beside injection of properties it is also possible to call setter methods with one parameter similarly.
-
Basically injection is performed, when the instance is passed to the Tamaya configuration system. It should also be possible to inject/provide final values, especially Strings. Changes on configured values should be reflected in the current value. Setters methods similarly can be called again, with the new values, on changes.
-
Users expect to control dynamic values and recall of setter methods, basically the following strategies should be supported:
-
inject only once and ignore further changes.
-
reinject/reinitialize on each change
-
-
Dynamic Values can easily be modeled as ConfiguredValue instances, which should have the following functionality:
-
access the current value
-
access the new value
-
access the latest value access time in ms
-
access the latest value update time in ms
-
evaluate easily if the value has changed since the last access
-
accept the change
-
as a shortcut it should be possible to accept the change on access of the value implicitly, hereby always accessing the latest valid value.
-
-
ignore the change
-
register Consumer<DynamicValue> liasteners to listen on the changes (ans also removing them later again).
-
All observing functionality can be done completely asynchronously and in parallel.