private void doProcessCurGroup(TopologyBuilder topologyBuilder, List<ProcessorNode> group) {
String boltId = UniqueIdGen.getInstance().getUniqueBoltId();
for (ProcessorNode processorNode : group) {
processorNode.setComponentId(boltId);
processorNode.setWindowedParentStreams(getWindowedParentStreams(processorNode));
}
final Set<ProcessorNode> initialProcessors = initialProcessors(group);
Set<Window<?, ?>> windowParams = getWindowParams(initialProcessors);
if (windowParams.isEmpty()) {
if (hasStatefulProcessor(group)) {
addStatefulBolt(topologyBuilder, boltId, initialProcessors, group);
} else {
addBolt(topologyBuilder, boltId, initialProcessors, group);
}
} else if (windowParams.size() == 1) {
addWindowedBolt(topologyBuilder, boltId, initialProcessors, windowParams.iterator().next(), group);
} else {
throw new IllegalStateException("More than one window config for current group " + group);
}
}