public class ExpressionFilter extends ExpressionOperation implements Filter<ScriptOperation.Context>
Tuple
values. Any Tuple that
returns true for the given expression will be removed from the stream. This Filter
is based on the Janino compiler.
Specifically this filter uses the ExpressionEvaluator
, thus the syntax from that class is inherited here.
An expression may use field names directly as parameters in the expression, or field positions with the syntax
"$n", where n is an integer.
Given an argument tuple with the fields "a" and "b", the following expression returns true: a + b == $0 + $1
ScriptOperation.Context
block, parameterNames, parameterTypes, returnType
fieldDeclaration, numArgs, trace
Constructor and Description |
---|
ExpressionFilter(String expression)
Constructor ExpressionFilter creates a new ExpressionFilter instance.
|
ExpressionFilter(String expression,
Class parameterType)
Constructor ExpressionFilter creates a new ExpressionFilter instance.
|
ExpressionFilter(String expression,
String[] parameterNames,
Class[] parameterTypes)
Constructor ExpressionFilter creates a new ExpressionFilter instance.
|
Modifier and Type | Method and Description |
---|---|
boolean |
isRemove(FlowProcess flowProcess,
FilterCall<ScriptOperation.Context> filterCall)
Method isRemove returns true if input should be removed from the tuple stream.
|
getEvaluator, getExpression, guessParameterNames
equals, evaluate, getBlock, getParameterNames, getParameterTypes, getReturnType, hashCode, prepare
cleanup, flush, getFieldDeclaration, getNumArgs, getTrace, isSafe, printOperationInternal, toString, toStringInternal
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
cleanup, flush, getFieldDeclaration, getNumArgs, isSafe, prepare
@ConstructorProperties(value="expression") public ExpressionFilter(String expression)
a + b
. The type of a
and b
will be inherited from the incoming argument fields.
Or, if the incoming argument selector is Fields.NONE
, an expression using only static method calls
or constants can be used, for example Math.random() < SomeClass.someValue()
.expression
- of type String@ConstructorProperties(value={"expression","parameterType"}) public ExpressionFilter(String expression, Class parameterType)
expression
- of type StringparameterType
- of type Class@ConstructorProperties(value={"expression","parameterNames","parameterTypes"}) public ExpressionFilter(String expression, String[] parameterNames, Class[] parameterTypes)
expression
- of type StringparameterNames
- of type String[]parameterTypes
- of type Class[]public boolean isRemove(FlowProcess flowProcess, FilterCall<ScriptOperation.Context> filterCall)
Filter
isRemove
in interface Filter<ScriptOperation.Context>
flowProcess
- of type FlowProcessfilterCall
- of type FilterCallCopyright © 2007-2015 Concurrent, Inc. All Rights Reserved.