@Override
public void emitRendezvous(Context context) {
ModelFactory f = context.getModelFactory();
FlowElementPortDescription input = context.getInputPort(Summarize.ID_INPUT);
FlowElementPortDescription output = context.getOutputPort(Summarize.ID_OUTPUT);
Expression init = context.createField(boolean.class, "initialized");
context.addBegin(new ExpressionBuilder(f, init)
.assignFrom(Models.toLiteral(f, false))
.toStatement());
DataObjectMirror cache = context.createModelCache(output.getDataType());
List<Statement> combine = Lists.create();
DataClass outputType = getEnvironment().getDataClasses().load(output.getDataType());
Summarized summarized = TypeUtil.erase(output.getDataType()).getAnnotation(Summarized.class);
for (Summarized.Folding folding : summarized.term().foldings()) {
if (folding.aggregator() == Aggregator.ANY) {
continue;
}
combine.add(createAddSummarizeFor(context, folding, outputType, cache.get()));