private void registerOutputDataStream(final RowProcessingPublisher parentPublisher, final RowProcessingConsumer publishingConsumer, final OutputDataStreamJob outputDataStreamJob) { final RowProcessingStream dataStream = RowProcessingStream.ofOutputDataStream(outputDataStreamJob); // first initialize the nested job like any other set of components registerJob(outputDataStreamJob.getJob(), dataStream, publishingConsumer); // then we wire the publisher for this output data stream to a // OutputRowCollector which will get injected via the // HasOutputDataStreams interface. final RowProcessingPublisher publisherForOutputDataStream = getRowProcessingPublisher(dataStream); publishingConsumer.registerOutputDataStream(outputDataStreamJob, publisherForOutputDataStream); }