private static void executeInternal(final RowProcessingConsumer consumer, final RowProcessingPublisher publisher,
final LifeCycleHelper lifeCycleHelper) {
synchronized (consumer) {
final int publisherCount = consumer.onPublisherInitialized(publisher);
if (publisherCount == 1) {
final ComponentConfiguration configuration = consumer.getComponentJob().getConfiguration();
final ComponentDescriptor<?> descriptor = consumer.getComponentJob().getDescriptor();
final Object component = consumer.getComponent();
lifeCycleHelper.assignConfiguredProperties(descriptor, component, configuration);
lifeCycleHelper.assignProvidedProperties(descriptor, component);
lifeCycleHelper.validate(descriptor, component);
final Collection<ActiveOutputDataStream> activeOutputDataStreams =
consumer.getActiveOutputDataStreams();
for (final ActiveOutputDataStream activeOutputDataStream : activeOutputDataStreams) {
activeOutputDataStream.initialize();
final RowProcessingPublisher outputDataStreamPublisher = activeOutputDataStream.getPublisher();
for (final RowProcessingConsumer outputDataStreamConsumer : outputDataStreamPublisher
.getConsumers()) {
final LifeCycleHelper outputDataStreamLifeCycleHelper =
outputDataStreamPublisher.getPublishers().getConsumerSpecificLifeCycleHelper(consumer);
executeInternal(outputDataStreamConsumer, outputDataStreamPublisher,
outputDataStreamLifeCycleHelper);
}
}
lifeCycleHelper.initialize(descriptor, component);
}
}
}