cascading.operation.expression
Class ExpressionFunction
java.lang.Object
cascading.operation.BaseOperation<ScriptOperation.Context>
cascading.operation.expression.ScriptOperation
cascading.operation.expression.ExpressionOperation
cascading.operation.expression.ExpressionFunction
- All Implemented Interfaces:
- DeclaresResults, Function<ScriptOperation.Context>, Operation<ScriptOperation.Context>, Serializable
public class ExpressionFunction
- extends ExpressionOperation
- implements Function<ScriptOperation.Context>
Class ExpressionFunction dynamically resolves a given expression using argument Tuple
values. This Function
is based on the Janino compiler.
Specifically this function 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
Fields inherited from interface cascading.operation.Operation |
ANY |
ExpressionFunction
@ConstructorProperties(value={"fieldDeclaration","expression"})
public ExpressionFunction(Fields fieldDeclaration,
String expression)
- Constructor ExpressionFunction creates a new ExpressionFunction instance.
This constructor assumes the given expression expects no input parameters. This is useful when
inserting random numbers for example,
(int) (Math.random() * Integer.MAX_VALUE)
.
- Parameters:
fieldDeclaration
- of type Fieldsexpression
- of type String
ExpressionFunction
@ConstructorProperties(value={"fieldDeclaration","expression","parameterType"})
public ExpressionFunction(Fields fieldDeclaration,
String expression,
Class parameterType)
- Constructor ExpressionFunction creates a new ExpressionFunction instance.
This constructor assumes all parameter are of the same type.
- Parameters:
fieldDeclaration
- of type Fieldsexpression
- of type StringparameterType
- of type Class
ExpressionFunction
@ConstructorProperties(value={"fieldDeclaration","expression","parameterNames","parameterTypes"})
public ExpressionFunction(Fields fieldDeclaration,
String expression,
String[] parameterNames,
Class[] parameterTypes)
- Constructor ExpressionFunction creates a new ExpressionFunction instance.
This constructor expects all parameter type names to be declared with their types. Positional parameters must
be named the same as in the given expression with the "$" sign prepended.
- Parameters:
fieldDeclaration
- of type Fieldsexpression
- of type StringparameterNames
- of type String[]parameterTypes
- of type Class[]
operate
public void operate(FlowProcess flowProcess,
FunctionCall<ScriptOperation.Context> functionCall)
- Description copied from interface:
Function
- Method operate provides the implementation of this Function.
- Specified by:
operate
in interface Function<ScriptOperation.Context>
- Parameters:
flowProcess
- of type FlowProcessfunctionCall
- of type FunctionCall
Copyright © 2007-2014 Concurrent, Inc. All Rights Reserved.