public static StateStreamRuntime parseInputStream( StateInputStream stateInputStream, ExecutionPlanContext executionPlanContext, MetaStateEvent metaStateEvent, Map<String, AbstractDefinition> streamDefinitionMap, Map<String, AbstractDefinition> tableDefinitionMap, Map<String, EventTable> eventTableMap, List<VariableExpressionExecutor> variableExpressionExecutors, LatencyTracker latencyTracker) { Map<String, ProcessStreamReceiver> processStreamReceiverMap = new HashMap<String, ProcessStreamReceiver>(); StateStreamRuntime stateStreamRuntime = new StateStreamRuntime(executionPlanContext, metaStateEvent); String defaultLockKey = ""; for (String streamId : stateInputStream.getAllStreamIds()) { int streamCount = stateInputStream.getStreamCount(streamId); if (streamCount == 1) { if (stateInputStream.getStateType() == StateInputStream.Type.SEQUENCE) { processStreamReceiverMap.put( streamId, new SequenceSingleProcessStreamReceiver( streamId, stateStreamRuntime, defaultLockKey, latencyTracker)); } else { processStreamReceiverMap.put( streamId, new PatternSingleProcessStreamReceiver(streamId, defaultLockKey, latencyTracker)); } } else { if (stateInputStream.getStateType() == StateInputStream.Type.SEQUENCE) { processStreamReceiverMap.put( streamId, new SequenceMultiProcessStreamReceiver( streamId, streamCount, stateStreamRuntime, defaultLockKey, latencyTracker)); } else { processStreamReceiverMap.put( streamId, new PatternMultiProcessStreamReceiver( streamId, streamCount, defaultLockKey, latencyTracker)); } } } StateElement stateElement = stateInputStream.getStateElement(); InnerStateRuntime innerStateRuntime = parse( stateElement, streamDefinitionMap, tableDefinitionMap, eventTableMap, metaStateEvent, executionPlanContext, variableExpressionExecutors, processStreamReceiverMap, null, null, stateInputStream.getStateType(), new ArrayList<Map.Entry<Long, Set<Integer>>>(), latencyTracker); stateStreamRuntime.setInnerStateRuntime(innerStateRuntime); return stateStreamRuntime; }