@Override public Object visitDefinition_window(@NotNull SiddhiQLParser.Definition_windowContext ctx) { Source source = (Source) visit(ctx.source()); if (source.isInnerStream) { throw newSiddhiParserException(ctx, "'#' cannot be used, because Windows can't be defined as InnerStream!"); } WindowDefinition windowDefinition = WindowDefinition.id(source.streamId); List<SiddhiQLParser.Attribute_nameContext> attribute_names = ctx.attribute_name(); List<SiddhiQLParser.Attribute_typeContext> attribute_types = ctx.attribute_type(); for (int i = 0; i < attribute_names.size(); i++) { SiddhiQLParser.Attribute_nameContext attributeNameContext = attribute_names.get(i); SiddhiQLParser.Attribute_typeContext attributeTypeContext = attribute_types.get(i); windowDefinition.attribute((String) visit(attributeNameContext), (Attribute.Type) visit (attributeTypeContext)); } for (SiddhiQLParser.AnnotationContext annotationContext : ctx.annotation()) { windowDefinition.annotation((Annotation) visit(annotationContext)); } AttributeFunction attributeFunction = (AttributeFunction) visit(ctx.function_operation()); Window window = new Window(attributeFunction.getNamespace(), attributeFunction.getName(), attributeFunction .getParameters()); windowDefinition.window(window); // Optional output event type if (ctx.output_event_type() != null) { windowDefinition.setOutputEventType((OutputStream.OutputEventType) visit(ctx.output_event_type())); } populateQueryContext(windowDefinition, ctx); return windowDefinition; }