package eu.ehri.project.indexing.sink.impl; import com.google.common.collect.ImmutableList; import eu.ehri.project.indexing.sink.Sink; import java.util.List; /** * A sink that runs the given functions when it writes * and item and when it finishes. */ public class CallbackSink<T> implements Sink<T> { public interface Callback<T> { void call(T t); void finish(); } private final List<Callback<T>> callbacks; public CallbackSink(Callback<T> callback) { this(ImmutableList.of(callback)); } public CallbackSink(final List<Callback<T>> callbacks) { this.callbacks = callbacks; } public void write(T t) { for (Callback<T> cb : callbacks) { cb.call(t); } } public void close() { for (Callback<T> cb : callbacks) { cb.finish(); } } }