DelegatingConsumer.java

package org.itsallcode.process;

import java.io.IOException;
import java.util.Collections;
import java.util.List;

class DelegatingConsumer implements ProcessStreamConsumer {

    private final List<ProcessStreamConsumer> delegates;

    DelegatingConsumer(final List<ProcessStreamConsumer> delegates) {
        this.delegates = Collections.unmodifiableList(delegates);
    }

    @Override
    public void accept(final String line) {
        delegates.forEach(delegate -> delegate.accept(line));
    }

    @Override
    public void streamFinished() {
        delegates.forEach(ProcessStreamConsumer::streamFinished);
    }

    @Override
    public void streamReadingFailed(final IOException exception) {
        delegates.forEach(delegate -> delegate.streamReadingFailed(exception));
    }
}