package org.infinispan.stream.impl; import java.util.Set; import java.util.stream.BaseStream; import org.infinispan.BaseCacheStream; import org.infinispan.commons.util.CloseableIterator; import org.infinispan.stream.impl.local.AbstractLocalCacheStream; /** * Stream supplier that is used when a local intermediate operation is invoked, requiring a combined remote and local * operation stream. */ class IntermediateCacheStreamSupplier<T, S extends BaseStream<T, S>> implements AbstractLocalCacheStream.StreamSupplier<T, S> { final IntermediateType type; final BaseCacheStream streamable; IntermediateCacheStreamSupplier(IntermediateType type, BaseCacheStream streamable) { this.type = type; this.streamable = streamable; } @Override public S buildStream(Set<Integer> segmentsToFilter, Set<?> keysToFilter) { return (S) type.handleStream(streamable); } @Override public CloseableIterator<T> removableIterator(CloseableIterator<T> realIterator) { // TODO: we could do this if no map/flatMap operations return realIterator; } }