package org.infinispan.stream.impl.intops; import java.util.stream.BaseStream; import org.infinispan.factories.ComponentRegistry; /** * Intermediate operation that can be applied to a stream to change its processing. * @param <InputType> the type of the input stream * @param <InputStream> the input stream type * @param <OutputType> the type of the output stream * @param <OutputStream> the output stream type */ public interface IntermediateOperation<InputType, InputStream extends BaseStream<InputType, InputStream>, OutputType, OutputStream extends BaseStream<OutputType, OutputStream>> { /** * Performs the actualy intermediate operation returning the resulting stream * @param stream the stream to have the operation performed on * @return the resulting stream after the operation was applied */ OutputStream perform(InputStream stream); /** * Handles injection of components for various dependencies that the intermediate operation has * @param registry the registry to use */ default void handleInjection(ComponentRegistry registry) { // Default is nothing is done } }