- Type Parameters:
T
- the type of the wrapped value
- All Superinterfaces:
Consumer<T>
,EventObserver<T>
,Supplier<T>
,ValueObserver<T>
- All Known Subinterfaces:
ComponentValue<T,
,C> PropertyValue<T>
,State
,ValueSet<T>
- All Known Implementing Classes:
AbstractComponentValue
,AbstractTextComponentValue
,AbstractValue
An observable wrapper for a value.
A factory for
Value
instances.- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interface
Builds aValue
instance.static enum
Specifies when a Value instance notifies its listeners.static interface
AValue.Validator
forValue
s. -
Method Summary
Modifier and TypeMethodDescriptiondefault void
Sets the value.boolean
addValidator
(Value.Validator<T> validator) Adds a validator to thisValue
.void
Creates a bidirectional link between this and the given original value, so that changes in one are reflected in the other.void
link
(ValueObserver<T> originalValue) Creates a unidirectional link between this value and the given original value observer, so that changes in the original value are reflected in this one.default boolean
Sets a new value mapped from the current value.default boolean
Sets a new value in case the current value is null.static <T> Value.Builder<T>
nonNull
(T nullValue) static <T> Value.Builder<T>
nullable
(T initialValue) observer()
Returns aValueObserver
notified each time this value changes.boolean
removeValidator
(Value.Validator<T> validator) Removes the given validator from this valueboolean
Sets the value.void
Unlinks this value from the given original valuevoid
unlink
(ValueObserver<T> originalValue) Unlinks this value from the given original value observervoid
Validate the given value using all validatorsstatic <T> Value<T>
value()
Creates a newValue
instance, wrapping a null initial value, usingValue.Notify.WHEN_CHANGED
.Methods inherited from interface is.codion.common.event.EventObserver
addConsumer, addListener, addWeakConsumer, addWeakListener, removeConsumer, removeListener, removeWeakConsumer, removeWeakListener
Methods inherited from interface is.codion.common.value.ValueObserver
isEqualTo, isNotEqualTo, isNotNull, isNull, nullable, optional
-
Method Details
-
accept
Sets the value. Note that change listener notifications depend on theValue.Notify
policy associated with this value.- Specified by:
accept
in interfaceConsumer<T>
- Parameters:
value
- the value- Throws:
IllegalArgumentException
- in case the given value is invalid- See Also:
-
set
Sets the value. Note that change listener notifications depend on theValue.Notify
policy associated with this value.- Parameters:
value
- the value- Returns:
- true if the underlying value changed
- Throws:
IllegalArgumentException
- in case the given value is invalid- See Also:
-
map
Sets a new value mapped from the current value.Value<Integer> value = Value.value(0); // increment the value by one value.map(currentValue -> currentValue + 1);
- Parameters:
mapper
- maps from the current value to a new value- Returns:
- true if the underlying value changed
- Throws:
NullPointerException
- in casemapper
is null
-
mapNull
Sets a new value in case the current value is null.Value<Integer> value = Value.value(null); // replace null with 1 value.mapNull(() -> 1); // has no effect since the value is non-null value.mapNull(() -> 2);
- Parameters:
supplier
- supplies the value to use as replacement for null- Returns:
- true if the underlying value changed
- Throws:
NullPointerException
- in casesupplier
is null
-
observer
ValueObserver<T> observer()Returns aValueObserver
notified each time this value changes.- Returns:
- a
ValueObserver
for this value
-
link
Creates a bidirectional link between this and the given original value, so that changes in one are reflected in the other. Note that after a call to this method this value is the same asoriginalValue
.- Parameters:
originalValue
- the original value to link this value to- Throws:
IllegalStateException
- in case the values are already linkedIllegalArgumentException
- in case the original value is not valid according to this values validators
-
unlink
Unlinks this value from the given original value- Parameters:
originalValue
- the original value to unlink from this one- Throws:
IllegalStateException
- in case the values are not linked
-
link
Creates a unidirectional link between this value and the given original value observer, so that changes in the original value are reflected in this one. Note that after a call to this method the value of this value is the same as the original value.- Parameters:
originalValue
- the original value to link this value to- Throws:
IllegalArgumentException
- in case the original value is not valid according to this values validators
-
unlink
Unlinks this value from the given original value observer- Parameters:
originalValue
- the original value to unlink
-
addValidator
Adds a validator to thisValue
. Adding the same validator again has no effect.- Parameters:
validator
- the validator- Returns:
- true if this value did not already contain the specified validator
- Throws:
IllegalArgumentException
- in case the current value is invalid according to the validator
-
removeValidator
Removes the given validator from this value- Parameters:
validator
- the validator- Returns:
- true if this value contained the specified validator
-
validate
Validate the given value using all validators- Parameters:
value
- the value to validate- Throws:
IllegalArgumentException
- in case the given value is invalid according to a validator
-
value
Creates a newValue
instance, wrapping a null initial value, usingValue.Notify.WHEN_CHANGED
.- Type Parameters:
T
- the value type- Returns:
- a Value for the given type
-
nonNull
- Type Parameters:
T
- the value type- Parameters:
nullValue
- the actual value to use when the value is set to null- Returns:
- a builder for a non-null Value
-
nullable
- Type Parameters:
T
- the value type- Parameters:
initialValue
- the initial value- Returns:
- a builder for a nullable Value
-