- Type Parameters:
T
- the type of the wrapped value
- All Superinterfaces:
Consumer<T>
,Observer<T>
,ValueObserver<T>
- All Known Subinterfaces:
ComponentValue<T,
,C> EntityEditModel.EditableValue<T>
,PropertyValue<T>
,State
,ValueList<T>
,Values<T,
,C> ValueSet<T>
- All Known Implementing Classes:
AbstractComponentValue
,AbstractTextComponentValue
,AbstractValue
An observable wrapper for a value.
Nullable integer based Value:
Value<Integer> integer = Value.value();
integer.set(42);
integer.addConsumer(this::onValueChange);
integer.nullable(); // true
Non-null String based Value, using "none" as a null substitute:
Value<String> string = Value.builder()
.nonNull("none")
.value("hello")
.notify(Notify.WHEN_SET)
.validator(this::validateString)
.listener(this::onStringSet)
.build();
string.nullable();// false
string.set("hey");
string.set(null); // reverts to the null substitute: "none"
A factory for Value
instances.
- See Also:
-
Nested Class Summary
Modifier and TypeInterfaceDescriptionstatic interface
Value.Builder<T,
B extends Value.Builder<T, B>> Builds aValue
instance.static interface
ProvidesValue.Builder
instances for nullable or non-nullable values.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<? super T> validator) Adds a validator to thisValue
.static Value.BuilderFactory
builder()
void
clear()
Clears this value, by setting it to null or the null value in case this is a non-null value.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.observer()
Returns aValueObserver
notified each time this value changes.boolean
removeValidator
(Value.Validator<? super 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 new nullableValue
instance, wrapping a null initial value, usingValue.Notify.WHEN_CHANGED
.static <T> Value<T>
value
(T value) Creates a new nullableValue
instance, wrapping the given initial value, usingValue.Notify.WHEN_CHANGED
.Methods inherited from interface is.codion.common.observer.Observer
addConsumer, addListener, addWeakConsumer, addWeakListener, removeConsumer, removeListener, removeWeakConsumer, removeWeakListener
Methods inherited from interface is.codion.common.value.ValueObserver
get, 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:
-
clear
void clear()Clears this value, by setting it to null or the null value in case this is a non-null value. -
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
-
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 linked or if a cycle is detectedIllegalArgumentException
- 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 new nullableValue
instance, wrapping a null initial value, usingValue.Notify.WHEN_CHANGED
.- Type Parameters:
T
- the value type- Returns:
- a Value for the given type
-
value
Creates a new nullableValue
instance, wrapping the given initial value, usingValue.Notify.WHEN_CHANGED
.- Type Parameters:
T
- the value type- Parameters:
value
- the initial value- Returns:
- a Value for the given type
-
builder
- Returns:
- a new
Value.BuilderFactory
instance
-