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); } }