All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fun.mike.flapjack.pipeline.lab.ForEachOutputContext Maven / Gradle / Ivy

The newest version!
package fun.mike.flapjack.pipeline.lab;

import java.util.Optional;
import java.util.function.Consumer;

import fun.mike.record.alpha.Record;

public class ForEachOutputContext implements OutputContext {
    private final Consumer consumer;

    public ForEachOutputContext(Consumer consumer) {
        this.consumer = consumer;
    }

    @Override
    public OutputChannel buildChannel() {
        return new ForEachOutputChannel(consumer);
    }

    @Override
    public void accept(OutputContextVisitor visitor) {
        visitor.accept(this);
    }

    private final class ForEachOutputChannel implements OutputChannel {
        private final Consumer consumer;

        public ForEachOutputChannel(Consumer consumer) {
            this.consumer = consumer;
        }

        @Override
        public Optional put(int number, String line, Record value) {
            consumer.accept(value);
            return Optional.empty();
        }

        @Override
        public Nothing getValue() {
            return Nothing.value();
        }

        @Override
        public void close() {
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy