Class ExpressionFilter

  extended by cascading.operation.BaseOperation<ExpressionOperation.Context>
      extended by cascading.operation.expression.ExpressionOperation
          extended by cascading.operation.expression.ExpressionFilter
All Implemented Interfaces:
Filter<ExpressionOperation.Context>, Operation<ExpressionOperation.Context>, Serializable

public class ExpressionFilter
extends ExpressionOperation
implements Filter<ExpressionOperation.Context>

Class ExpressionFilter dynamically resolves a given expression using argument 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

Further, the types of the tuple elements will be coerced into the given parameterTypes. Regardless of the actual tuple element values, they will be converted to the types expected by the expression.

Field names used in the expression should be valid Java variable names; for example, '+' or '-' are not allowed. Also the use of a field name that begins with an upper-case character is likely to fail and should be avoided.

See Also:
Serialized Form

Nested Class Summary
Nested classes/interfaces inherited from class cascading.operation.expression.ExpressionOperation
Field Summary
Fields inherited from class cascading.operation.expression.ExpressionOperation
Fields inherited from class cascading.operation.BaseOperation
fieldDeclaration, numArgs, trace
Fields inherited from interface cascading.operation.Operation
Constructor Summary
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.
Method Summary
 boolean isRemove(FlowProcess flowProcess, FilterCall<ExpressionOperation.Context> filterCall)
          Method isRemove returns true if input should be removed from the tuple stream.
Methods inherited from class cascading.operation.expression.ExpressionOperation
equals, evaluate, hashCode, prepare
Methods inherited from class cascading.operation.BaseOperation
cleanup, flush, getFieldDeclaration, getNumArgs, getTrace, isSafe, printOperationInternal, toString, toStringInternal
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface cascading.operation.Operation
cleanup, flush, getFieldDeclaration, getNumArgs, isSafe, prepare

Constructor Detail


public ExpressionFilter(String expression,
                                                   Class parameterType)
Constructor ExpressionFilter creates a new ExpressionFilter instance.

expression - of type String
parameterType - of type Class


public ExpressionFilter(String expression,
                                                   String[] parameterNames,
                                                   Class[] parameterTypes)
Constructor ExpressionFilter creates a new ExpressionFilter instance.

expression - of type String
parameterNames - of type String[]
parameterTypes - of type Class[]
Method Detail


public boolean isRemove(FlowProcess flowProcess,
                        FilterCall<ExpressionOperation.Context> filterCall)
Description copied from interface: Filter
Method isRemove returns true if input should be removed from the tuple stream.

Specified by:
isRemove in interface Filter<ExpressionOperation.Context>
flowProcess - of type FlowProcess
filterCall - of type FilterCall

Copyright © 2007-2012 Concurrent, Inc. All Rights Reserved.