T - type of wrapped valuepublic interface ChangingValue<T> extends Value<T>
ChangingValue is intended as wrapper of value that could change over time and whose changes should propagate
to other values automatically.
A good usage example would be a config from which other values could be derived and should be changed once config changes.
| Modifier and Type | Method and Description |
|---|---|
long |
changeVersion()
Indicator of how often has the wrapped value changed.
|
default <E extends java.lang.Throwable> |
forCurrentValue(ValueHandler<? super T,? extends E> valueHandler)
Executes
valueHandler function for currently wrapped value |
static <T1,T2> DerivedValue<Tuple<T1,T2>,?> |
join(ChangingValue<T1> value1,
ChangingValue<T2> value2)
Merges two
ChangingValues of type T1 and T2 into one DerivedValue of type Tuple<T1, T2> |
static <T1,T2,T3> DerivedValue<Triple<T1,T2,T3>,?> |
join(ChangingValue<T1> value1,
ChangingValue<T2> value2,
ChangingValue<T3> value3)
Merges three
ChangingValues of type T1, T2 and T3 into one DerivedValue of type Triple<T1, T2, T3> |
static <T> ChangingValue<java.util.List<T>> |
join(java.util.List<ChangingValue<T>> values)
Merges a
List of ChangingValues of type T into one ChangingValue of type List<T> |
default <T2> DerivedValue<T2,T> |
map(java.util.function.Function<T,? extends T2> derivedValueMapper)
Creates a new
DerivedValue from this ChangingValue. |
default <T2,E extends java.lang.Throwable> |
mapToValue(ValueMapper<? super T,? extends T2,E> valueMapper)
Generates a value using the current
ChangingValue's wrapped value |
java.util.Optional<java.lang.String> |
name() |
java.util.Optional<java.lang.String> name()
ChangingValuelong changeVersion()
changeVersion should
increase by one.default <T2> DerivedValue<T2,T> map(java.util.function.Function<T,? extends T2> derivedValueMapper)
DerivedValue from this ChangingValue.
Each time the generated DerivedValue will be used and this value will change, the DerivedValue
will regenerate it's value using the provided derivedValueMapperT2 - type of newly generated DerivedValuederivedValueMapper - function that is applied to this ChangingValue's wrapped value to generate new DerivedValue's valueDerivedValuedefault <T2,E extends java.lang.Throwable> T2 mapToValue(ValueMapper<? super T,? extends T2,E> valueMapper) throws E extends java.lang.Throwable
ChangingValue's wrapped valueT2 - type of generated valueE - Throwable type, in case the valueMapper function should throw an ThrowablevalueMapper - function that is applied to currently wrapped valueE - exception generated by valueMapper functionE extends java.lang.Throwabledefault <E extends java.lang.Throwable> void forCurrentValue(ValueHandler<? super T,? extends E> valueHandler) throws E extends java.lang.Throwable
valueHandler function for currently wrapped valueE - Throwable type, in case the valueHandler function should throw an ThrowablevalueHandler - function that is executed for currently wrapped valueE - exception generated by valueHandler functionE extends java.lang.Throwablestatic <T1,T2> DerivedValue<Tuple<T1,T2>,?> join(ChangingValue<T1> value1, ChangingValue<T2> value2)
ChangingValues of type T1 and T2 into one DerivedValue of type Tuple<T1, T2>T1 - type of value1T2 - type of value2value1 - first ChangingValue of type T1value2 - second ChangingValue of type T2DerivedValue of type Tuple<T1, T2>static <T1,T2,T3> DerivedValue<Triple<T1,T2,T3>,?> join(ChangingValue<T1> value1, ChangingValue<T2> value2, ChangingValue<T3> value3)
ChangingValues of type T1, T2 and T3 into one DerivedValue of type Triple<T1, T2, T3>T1 - type of value1T2 - type of value2T3 - type of value3value1 - first ChangingValue of type T1value2 - second ChangingValue of type T2value3 - third ChangingValue of type T3DerivedValue of type Triple<T1, T2, T3>static <T> ChangingValue<java.util.List<T>> join(java.util.List<ChangingValue<T>> values)
List of ChangingValues of type T into one ChangingValue of type List<T>T - type of values Listvalues - changing values to mergeChangingValue of type List<T>