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

org.reactfx.MappedStream Maven / Gradle / Ivy

There is a newer version: 1.11
Show newest version
package org.reactfx;

import java.util.concurrent.CompletionStage;
import java.util.function.Function;

import javafx.concurrent.Task;

/**
 * See {@link EventStream#map(Function)}
 */
class MappedStream extends EventStreamBase {
    private final EventStream input;
    private final Function f;

    public MappedStream(
            EventStream input,
            Function f) {
        this.input = input;
        this.f = f;
    }

    @Override
    protected Subscription observeInputs() {
        return input.subscribe(value -> {
            emit(f.apply(value));
        });
    }
}

class MappedToCompletionStageStream
extends MappedStream>
implements CompletionStageStream {

    public MappedToCompletionStageStream(
            EventStream input,
            Function> f) {
        super(input, f);
    }
}

class MappedToTaskStream
extends MappedStream>
implements TaskStream {

    public MappedToTaskStream(
            EventStream input,
            Function> f) {
        super(input, f);
    }
}