
org.aksw.commons.collection.observable.ObservableValue Maven / Gradle / Ivy
package org.aksw.commons.collection.observable;
import java.beans.PropertyChangeListener;
import java.beans.VetoableChangeListener;
import org.aksw.commons.accessors.SingleValuedAccessor;
import com.google.common.base.Converter;
public interface ObservableValue
extends SingleValuedAccessor
{
Registration addPropertyChangeListener(PropertyChangeListener listener);
Runnable addVetoableChangeListener(VetoableChangeListener listener);
/** Gets notified before {@link #get()} changes to the new value */
default Runnable addVetoableChangeListener(ValueChangeListener listener) {
VetoableChangeListener fn = ev -> listener.propertyChange(ValueChangeEvent.adapt(ev));
return addVetoableChangeListener(fn);
}
/** Type-safe variant. Uses {@link #addPropertyChangeListener(PropertyChangeListener)} and casts. */
default Registration addValueChangeListener(ValueChangeListener listener) {
return addPropertyChangeListener(ev -> listener.propertyChange(ValueChangeEvent.adapt(ev)));
}
default ObservableValue convert(Converter converter) {
return new ObservableConvertingValue<>(this, converter);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy