All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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