cascading.operation.expression
Class ExpressionFunction

java.lang.Object
  extended by cascading.operation.BaseOperation<ScriptOperation.Context>
      extended by cascading.operation.expression.ScriptOperation
          extended by cascading.operation.expression.ExpressionOperation
              extended by cascading.operation.expression.ExpressionFunction
All Implemented Interfaces:
DeclaresResults, Function<ScriptOperation.Context>, Operation<ScriptOperation.Context>, Traceable, 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

Nested Class Summary
 
Nested classes/interfaces inherited from class cascading.operation.expression.ScriptOperation
ScriptOperation.Context
 
Field Summary
 
Fields inherited from class cascading.operation.expression.ScriptOperation
block, parameterNames, parameterTypes, returnType
 
Fields inherited from class cascading.operation.BaseOperation
fieldDeclaration, numArgs, trace
 
Fields inherited from interface cascading.operation.Operation
ANY
 
Constructor Summary
ExpressionFunction(Fields fieldDeclaration, String expression)
          Constructor ExpressionFunction creates a new ExpressionFunction instance.
ExpressionFunction(Fields fieldDeclaration, String expression, Class parameterType)
          Constructor ExpressionFunction creates a new ExpressionFunction instance.
ExpressionFunction(Fields fieldDeclaration, String expression, String[] parameterNames, Class[] parameterTypes)
          Constructor ExpressionFunction creates a new ExpressionFunction instance.
 
Method Summary
 void operate(FlowProcess flowProcess, FunctionCall<ScriptOperation.Context> functionCall)
          Method operate provides the implementation of this Function.
 
Methods inherited from class cascading.operation.expression.ExpressionOperation
getEvaluator, getExpression, guessParameterNames
 
Methods inherited from class cascading.operation.expression.ScriptOperation
equals, evaluate, getBlock, getParameterNames, getParameterTypes, getReturnType, 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

ExpressionFunction

@ConstructorProperties(value={"fieldDeclaration","expression"})
public ExpressionFunction(Fields fieldDeclaration,
                                                     String expression)
Constructor ExpressionFunction creates a new ExpressionFunction instance.

This constructor, when used with incoming arguments that have type information, the argument field names can be used directly in the the expression, for example 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.

This is useful when inserting random numbers for example, (int) (Math.random() * Integer.MAX_VALUE) .

Parameters:
fieldDeclaration - of type Fields
expression - 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 Fields
expression - of type String
parameterType - 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 Fields
expression - of type String
parameterNames - of type String[]
parameterTypes - of type Class[]
Method Detail

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 FlowProcess
functionCall - of type FunctionCall


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