@SuppressWarnings("unchecked") public <T> Tag<T> add(StreamStageWithKey<T, K> stage) { ComputeStageImplBase computeStage = ((StageWithGroupingBase) stage).computeStage; ensureJetEvents(computeStage, "This pipeline stage"); upstreamStages.add(computeStage); keyFns.add(stage.keyFn()); return (Tag<T>) tag(upstreamStages.size() - 1); }
@SuppressWarnings("unchecked") private <T1, T2, A, R, OUT> StreamStage<OUT> attachAggregate3( @Nonnull StreamStageWithKey<T1, ? extends K> stage1, @Nonnull StreamStageWithKey<T2, ? extends K> stage2, @Nonnull AggregateOperation3<? super T, ? super T1, ? super T2, A, R> aggrOp, @Nonnull KeyedWindowResultFunction<? super K, ? super R, ? extends OUT> mapToOutputFn ) { Transform transform1 = ((StageWithGroupingBase) stage1).computeStage.transform; Transform transform2 = ((StageWithGroupingBase) stage2).computeStage.transform; JetEventFunctionAdapter fnAdapter = ADAPT_TO_JET_EVENT; return computeStage.attach(new WindowGroupTransform<K, R, JetEvent<OUT>>( asList(computeStage.transform, transform1, transform2), wDef, asList(fnAdapter.adaptKeyFn(keyFn()), fnAdapter.adaptKeyFn(stage1.keyFn()), fnAdapter.adaptKeyFn(stage2.keyFn())), adaptAggregateOperation3(aggrOp), fnAdapter.adaptKeyedWindowResultFn(mapToOutputFn) ), fnAdapter); } }
@SuppressWarnings("unchecked") private <T1, A, R, OUT> StreamStage<OUT> attachAggregate2( @Nonnull StreamStageWithKey<T1, ? extends K> stage1, @Nonnull AggregateOperation2<? super T, ? super T1, A, R> aggrOp, @Nonnull KeyedWindowResultFunction<? super K, ? super R, ? extends OUT> mapToOutputFn ) { Transform upstream1 = ((StageWithGroupingBase) stage1).computeStage.transform; JetEventFunctionAdapter fnAdapter = ADAPT_TO_JET_EVENT; return computeStage.attach(new WindowGroupTransform<K, R, JetEvent<OUT>>( asList(computeStage.transform, upstream1), wDef, asList(fnAdapter.adaptKeyFn(keyFn()), fnAdapter.adaptKeyFn(stage1.keyFn())), adaptAggregateOperation2(aggrOp), fnAdapter.adaptKeyedWindowResultFn(mapToOutputFn) ), fnAdapter); }