CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-org-wso2-siddhi--siddhi-annotations

Annotation support for the Siddhi Complex Event Processing Engine, providing extension definitions and validation for stream processors, functions, aggregations, and other extension types.

Overview
Eval results
Files

index.mddocs/

Siddhi Annotations

Siddhi Annotations provides comprehensive annotation support for the Siddhi Complex Event Processing Engine, enabling developers to define and validate custom extensions through a standardized annotation framework. It includes core annotations for marking Siddhi extensions, compile-time validation processors, and runtime discovery mechanisms through ClassIndex integration.

Package Information

  • Package Name: siddhi-annotations
  • Package Type: maven
  • Language: Java
  • Installation:
    <dependency>
      <groupId>org.wso2.siddhi</groupId>
      <artifactId>siddhi-annotations</artifactId>
      <version>4.5.11</version>
    </dependency>

Core Imports

import org.wso2.siddhi.annotation.Extension;
import org.wso2.siddhi.annotation.Parameter;
import org.wso2.siddhi.annotation.ReturnAttribute;
import org.wso2.siddhi.annotation.SystemParameter;
import org.wso2.siddhi.annotation.Example;
import org.wso2.siddhi.annotation.util.DataType;

Basic Usage

import org.wso2.siddhi.annotation.*;
import org.wso2.siddhi.annotation.util.DataType;

@Extension(
    name = "sum",
    namespace = "math",
    description = "Calculates the sum of numeric values.",
    parameters = {
        @Parameter(name = "value", 
                  type = {DataType.INT, DataType.LONG, DataType.DOUBLE}, 
                  description = "Numeric value to be summed")
    },
    returnAttributes = @ReturnAttribute(
        name = "sum", 
        type = {DataType.LONG, DataType.DOUBLE}, 
        description = "Sum of the numeric values"
    ),
    examples = @Example(
        syntax = "from inputStream#math:sum(value) select sum insert into outputStream;",
        description = "This calculates the sum of 'value' from inputStream."
    )
)
public class SumFunction extends FunctionExecutor {
    // Implementation details
}

Architecture

The Siddhi Annotations framework is built around several key components:

  • Core Annotations: Five primary annotations (@Extension, @Parameter, @ReturnAttribute, @SystemParameter, @Example) that define extension metadata
  • Validation Framework: Compile-time annotation processors that validate extension definitions against Siddhi's requirements
  • Type System: DataType enum providing standardized type definitions for parameters and return values
  • Runtime Discovery: ClassIndex integration enabling automatic discovery of annotated extensions
  • Extension Types: Support for 11+ different Siddhi extension types with specific validation rules

Capabilities

Core Annotations

Primary annotations for marking and describing Siddhi extensions, including the main @Extension annotation and supporting annotations for parameters, return attributes, system parameters, and usage examples.

@interface Extension {
    String name() default "";
    String namespace() default "";
    String description() default "";
    Parameter[] parameters() default {};
    SystemParameter[] systemParameter() default {};
    ReturnAttribute[] returnAttributes() default {};
    Example[] examples() default {};
}

Core Annotations

Annotation Processors

Compile-time validation framework that ensures extension annotations comply with Siddhi's requirements, with specialized processors for different extension types and comprehensive validation rules.

public class SiddhiAnnotationProcessor extends AbstractProcessor {
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv);
}

public abstract class AbstractAnnotationProcessor {
    protected void basicParameterValidation(String name, String description, String namespace) throws AnnotationValidationException;
    protected void parameterValidation(Parameter[] parameters) throws AnnotationValidationException;
    protected void returnAttributesValidation(ReturnAttribute[] returnAttributes) throws AnnotationValidationException;
}

Annotation Processors

Utility Classes

Supporting classes including data type definitions, validation exceptions, and constants for extension superclasses and namespaces.

public enum DataType {
    STRING, INT, LONG, FLOAT, DOUBLE, BOOL, OBJECT, TIME
}

public class AnnotationValidationException extends Exception {
    public AnnotationValidationException(String message);
    public AnnotationValidationException(String message, Throwable throwable);
    public AnnotationValidationException(Throwable throwable);
}

Utility Classes

Types

Core Annotation Types

@interface Parameter {
    String name() default "";
    DataType[] type() default {};
    String description() default "";
    boolean optional() default false;
    boolean dynamic() default false;
    String defaultValue() default "";
}

@interface ReturnAttribute {
    String name() default "";
    DataType[] type() default {};
    String description() default "";
}

@interface SystemParameter {
    String name() default "";
    String description() default "";
    String defaultValue() default "";
    String[] possibleParameters() default {};
}

@interface Example {
    String syntax() default "";
    String description() default "";
}

Install with Tessl CLI

npx tessl i tessl/maven-org-wso2-siddhi--siddhi-annotations

docs

annotation-processors.md

core-annotations.md

index.md

utility-classes.md

tile.json