io.datakernel.datastream.StreamConsumerToList Maven / Gradle / Ivy
package io.datakernel.datastream;
import io.datakernel.promise.Promise;
import io.datakernel.promise.SettablePromise;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
import java.util.function.Consumer;
import static io.datakernel.datastream.StreamCapability.LATE_BINDING;
public final class StreamConsumerToList extends AbstractStreamConsumer implements StreamDataAcceptor {
private final List list;
private final SettablePromise> resultPromise = new SettablePromise<>();
private StreamConsumerToList() {
this(new ArrayList<>());
}
private StreamConsumerToList(List list) {
this.list = list;
}
public static StreamConsumerToList create() {
return new StreamConsumerToList<>();
}
public StreamConsumerToList withResultAcceptor(Consumer>> resultAcceptor) {
resultAcceptor.accept(resultPromise);
return this;
}
public static StreamConsumerToList create(List list) {
return new StreamConsumerToList<>(list);
}
@Override
public void accept(T item) {
list.add(item);
}
@Override
protected void onStarted() {
getSupplier().resume(this);
}
@Override
protected Promise onEndOfStream() {
resultPromise.set(list);
return Promise.complete();
}
@Override
protected void onError(Throwable e) {
resultPromise.setException(e);
}
public Promise> getResult() {
return resultPromise;
}
public final List getList() {
return list;
}
@Override
public Set getCapabilities() {
return EnumSet.of(LATE_BINDING);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy