-
Notifications
You must be signed in to change notification settings - Fork 6
Producer Stage
The following code shows a simple ProducerStage. It takes a list of elements are sends them to the ongoing stage.
package teetime.stage;
import java.util.Arrays;
import teetime.framework.AbstractProducerStage;
public final class InitialElementProducer<T> extends AbstractProducerStage<T> {
private Iterable<T> elements;
public InitialElementProducer(final Iterable<T> elements) {
this.elements = elements;
}
@Override
public void onStarting() throws Exception {
if (elements == null) {
throw new IllegalArgumentException("The given iterable must not be null");
}
super.onStarting();
}
@Override
protected void execute() {
for (final T element : this.elements) {
this.outputPort.send(element);
}
this.terminate();
}
}First, we implement execute.
It simply iterates over the given list and sends all elements by calling this.outputPort.send(element).
Furthermore, we want to check if the given iterable is not null.
This can be achieved by running a check while starting the stage.
For this, we override the method onStarting and add a null check to it.
This method will be called once by the framework before it executes the stage for the first time.
Note: You also need to make sure that the super method is also called.
Finally, we want to terminate the stage.
Calling the method terminate will do so and additionally send a signal to all ongoing stages to terminate.