com.espertech.esper.plugin
Interface PlugInAggregationMultiFunctionFactory

All Superinterfaces:
java.io.Serializable

public interface PlugInAggregationMultiFunctionFactory
extends java.io.Serializable

Entry point for the extension API for aggregation multi-functions.

This API allows adding one or more related aggregation functions that can share state, share parameters or exhibit related behavior.

Please use ConfigurationPlugInAggregationMultiFunction to register this factory class in the engine together with one or more function names.

The engine instantiates a single instance of this class at the time it encounters the first aggregation multi-function in a given statement at the time of statement parsing or compilation from statement object model.

At the time of statement parsing, each aggregation multi-function encountered during parsing of EPL statement text results in an invocation to addAggregationFunction(PlugInAggregationMultiFunctionDeclarationContext). The same upon statement compilation for statement object model. For multiple aggregation functions, the order in which such calls occur is not well defined and should not be relied on by the implementation.

The engine invokes validateGetHandler(PlugInAggregationMultiFunctionValidationContext) at the time of expression node validation. Validation occurs after statement parsing and when type information is established. For multiple aggregation functions, the order in which such calls occur is not well defined and should not be relied on by the implementation.

Usually a single PlugInAggregationMultiFunctionHandler handler class can handle the needs of all related aggregation functions. Usually you have a single handler class and return one handler object for each aggregation function expression, where the handler object takes the validation context as a parameter. Use multiple different handler classes when your aggregation functions have sufficiently different execution contexts or behaviors. Your application may want to use the expression and type information available in PlugInAggregationMultiFunctionValidationContext to decide what behavior to provide.

The function class must be Serializable only when used with EsperHA.


Method Summary
 void addAggregationFunction(PlugInAggregationMultiFunctionDeclarationContext declarationContext)
          Called for each instance of use of any of the aggregation functions at declaration discovery time and before any expression validation takes place.
 PlugInAggregationMultiFunctionHandler validateGetHandler(PlugInAggregationMultiFunctionValidationContext validationContext)
          Called for each instance of use of any of the aggregation functions at validation time after all declared aggregation have been added.
 

Method Detail

addAggregationFunction

void addAggregationFunction(PlugInAggregationMultiFunctionDeclarationContext declarationContext)
Called for each instance of use of any of the aggregation functions at declaration discovery time and before any expression validation takes place.

Parameters:
declarationContext - context

validateGetHandler

PlugInAggregationMultiFunctionHandler validateGetHandler(PlugInAggregationMultiFunctionValidationContext validationContext)
Called for each instance of use of any of the aggregation functions at validation time after all declared aggregation have been added.

Parameters:
validationContext - validationContext
Returns:
handler for providing type information, accessor and provider factory

© 2006-2015 EsperTech Inc.
All rights reserved.
Visit us at espertech.com