public class ScriptTupleFunction extends ScriptOperation implements Function<ScriptOperation.Context>
Tuple
values.
This Function
is based on the Janino compiler.
This class is different from ScriptFunction
in that it requires a new Tuple
instance to be returned
by the script. ScriptFunction allows only a single value to be returned, which is passed into a result Tuple instance
internally.
Specifically this function uses the ScriptEvaluator
,
thus the syntax from that class is inherited here.
A script 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 script returns true: boolean result = (a + b == $0 + $1);
return cascading.tuple.Tuples.tuple( boolean );
ExpressionFunction
, a "script" requires each line to end in an semi-colon
(@{code ;}) and the final line to be a return
statement that returns a new Tuple
instance.
Since Janino does not support "varargs", see the Tuples
class for helper methods.
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 script if possible.ScriptOperation.Context
block, parameterNames, parameterTypes, returnType
fieldDeclaration, numArgs, trace
Constructor and Description |
---|
ScriptTupleFunction(Fields fieldDeclaration,
String script)
Constructor ScriptFunction creates a new ScriptFunction instance.
|
ScriptTupleFunction(Fields fieldDeclaration,
String script,
Class[] expectedTypes)
Constructor ScriptFunction creates a new ScriptFunction instance.
|
ScriptTupleFunction(Fields fieldDeclaration,
String script,
String[] parameterNames,
Class[] parameterTypes)
Constructor ScriptFunction creates a new ScriptFunction instance.
|
Modifier and Type | Method and Description |
---|---|
String |
getScript() |
void |
operate(FlowProcess flowProcess,
FunctionCall<ScriptOperation.Context> functionCall)
Method operate provides the implementation of this Function.
|
equals, evaluate, getBlock, getEvaluator, getParameterNames, getParameterTypes, getReturnType, guessParameterNames, 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={"fieldDeclaration","script"}) public ScriptTupleFunction(Fields fieldDeclaration, String script)
OperationCall.getArgumentFields()
to source the parameterNames
and parameterTypes
required by the other constructors.
The returnType
will be retrieved from the given fieldDeclaration.getTypeClass(0)
.fieldDeclaration
- of type Fieldsscript
- of type String@ConstructorProperties(value={"fieldDeclaration","script","expectedTypes"}) public ScriptTupleFunction(Fields fieldDeclaration, String script, Class[] expectedTypes)
OperationCall.getArgumentFields()
to source the parameterNames
and parameterTypes
required by the other constructors, but
use expectedTypes
to coerce the incoming types to before passing as parameters to the expression.fieldDeclaration
- of type Fieldsscript
- of type StringexpectedTypes
- of type Class[]@ConstructorProperties(value={"fieldDeclaration","script","parameterNames","parameterTypes"}) public ScriptTupleFunction(Fields fieldDeclaration, String script, String[] parameterNames, Class[] parameterTypes)
fieldDeclaration
- of type Fieldsscript
- of type StringparameterNames
- of type String[]parameterTypes
- of type Class[]public void operate(FlowProcess flowProcess, FunctionCall<ScriptOperation.Context> functionCall)
Function
operate
in interface Function<ScriptOperation.Context>
flowProcess
- of type FlowProcessfunctionCall
- of type FunctionCallCopyright © 2007-2015 Concurrent, Inc. All Rights Reserved.