Source:
private Collection<Integer> translateInternal( final AbstractMultipleInputTransformation<OUT> transformation, final Context context) { checkNotNull(transformation); checkNotNull(context); final List<Transformation<?>> inputTransformations = transformation.getInputs(); checkArgument(!inputTransformations.isEmpty(), "Empty inputs for MultipleInputTransformation. Did you forget to add inputs?"); MultipleInputSelectionHandler.checkSupportedInputCount(inputTransformations.size()); final StreamGraph streamGraph = context.getStreamGraph(); final String slotSharingGroup = context.getSlotSharingGroup(); final int transformationId = transformation.getId(); final ExecutionConfig executionConfig = streamGraph.getExecutionConfig(); streamGraph.addMultipleInputOperator( transformationId, slotSharingGroup, transformation.getCoLocationGroupKey(), transformation.getOperatorFactory(), transformation.getInputTypes(), transformation.getOutputType(), transformation.getName()); final int parallelism = transformation.getParallelism() != ExecutionConfig.PARALLELISM_DEFAULT ? transformation.getParallelism() : executionConfig.getParallelism(); streamGraph.setParallelism(transformationId, parallelism); streamGraph.setMaxParallelism(transformationId, transformation.getMaxParallelism()); if (transformation instanceof KeyedMultipleInputTransformation) { KeyedMultipleInputTransformation keyedTransform = (KeyedMultipleInputTransformation) transformation; TypeSerializer<?> keySerializer = keyedTransform.getStateKeyType().createSerializer(executionConfig); streamGraph.setMultipleInputStateKey(transformationId, keyedTransform.getStateKeySelectors(), keySerializer); } for (int i = 0; i < inputTransformations.size(); i++) { final Transformation<?> inputTransformation = inputTransformations.get(i); final Collection<Integer> inputIds = context.getStreamNodeIds(inputTransformation); for (Integer inputId: inputIds) { streamGraph.addEdge(inputId, transformationId, i + 1); } } return Collections.singleton(transformationId); }

Target:
private Collection<Integer> translateInternal( final AbstractMultipleInputTransformation<OUT> transformation, final Context context) { checkNotNull(transformation); checkNotNull(context); final List<Transformation<?>> inputTransformations = transformation.getInputs(); checkArgument(!inputTransformations.isEmpty(), "Empty inputs for MultipleInputTransformation. Did you forget to add inputs?"); MultipleInputSelectionHandler.checkSupportedInputCount(inputTransformations.size()); final StreamGraph streamGraph = context.getStreamGraph(); final String slotSharingGroup = context.getSlotSharingGroup(); final int transformationId = transformation.getId(); final ExecutionConfig executionConfig = streamGraph.getExecutionConfig(); streamGraph.addMultipleInputOperator( transformationId, slotSharingGroup, transformation.getCoLocationGroupKey(), transformation.getOperatorFactory(), transformation.getInputTypes(), transformation.getOutputType(), transformation.getName()); final int parallelism = transformation.getParallelism() != ExecutionConfig.PARALLELISM_DEFAULT ? transformation.getParallelism() : executionConfig.getParallelism(); streamGraph.setParallelism(transformationId, parallelism); streamGraph.setMaxParallelism(transformationId, transformation.getMaxParallelism()); if (transformation instanceof KeyedMultipleInputTransformation) { KeyedMultipleInputTransformation<OUT> keyedTransform = (KeyedMultipleInputTransformation<OUT>) transformation; TypeSerializer<?> keySerializer = keyedTransform.getStateKeyType().createSerializer(executionConfig); streamGraph.setMultipleInputStateKey(transformationId, keyedTransform.getStateKeySelectors(), keySerializer); } for (int i = 0; i < inputTransformations.size(); i++) { final Transformation<?> inputTransformation = inputTransformations.get(i); final Collection<Integer> inputIds = context.getStreamNodeIds(inputTransformation); for (Integer inputId: inputIds) { streamGraph.addEdge(inputId, transformationId, i + 1); } } return Collections.singleton(transformationId); }