Package org.apache.jmeter.functions

# Class Jexl2Function

java.lang.Object
org.apache.jmeter.functions.AbstractFunction
org.apache.jmeter.functions.Jexl2Function

All Implemented Interfaces:
  `Function`, `ThreadListener`

@AutoService(Function.class) public class Jexl2Function extends AbstractFunction implements ThreadListener
A function which understands Commons JEXL2

Since:
  2.6

## Constructor Summary

Constructors
Constructor
Description
`Jexl2Function()`

## Method Summary

Modifier and Type
Method
Description
`String`
`execute(SampleResult previousResult, Sampler currentSampler)`
N.B.
`List<String>`
`getArgumentDesc()`
Return a list of strings briefly describing each parameter your function takes.
`String`
`getReferenceKey()`
Return the name of your function.
`void`
`setParameters(Collection<CompoundVariable> parameters)`
Note: This is always called even if no parameters are provided (versions of JMeter after 2.3.1)
`void`
`threadFinished()`
Called for each thread after all samples have been processed.
`void`
`threadStarted()`
Called for each thread before starting sampling.

### Methods inherited from class org.apache.jmeter.functions.AbstractFunction

`addVariableValue, checkMinParameterCount, checkParameterCount, checkParameterCount, execute, getVariables`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Jexl2Function

public Jexl2Function()

## Method Details

### execute

public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException

N.B. execute() should be synchronized if function is operating with non-thread-safe objects (e.g. operates with files).

JMeter ensures setParameters() happens-before execute(): setParameters is executed in main thread, and worker threads are started after that.

Specified by:
  `execute` in interface `Function`
Specified by:
  `execute` in class `AbstractFunction`
Parameters:
  `previousResult` - The previous `SampleResult`
  `currentSampler` - The current `Sampler`
Returns:
  The replacement value, which was generated by the function
Throws:
  `InvalidVariableException` - - when the variables for the function call can't be evaluated
See Also:
  - `Function.execute(SampleResult, Sampler)`

### getArgumentDesc

public List<String> getArgumentDesc()
Return a list of strings briefly describing each parameter your function takes. Please use JMeterUtils.getResString(resource_name) to grab a resource string. Otherwise, your help text will be difficult to internationalize. This list is not optional. If you don't wish to write help, you must at least return a List containing the correct number of blank strings, one for each argument.

Specified by:
  `getArgumentDesc` in interface `Function`
Returns:
  List with brief descriptions for each parameter the function takes

### getReferenceKey

public String getReferenceKey()
Return the name of your function. Convention is to prepend "__" to the name (ie "__regexFunction")

Specified by:
  `getReferenceKey` in interface `Function`
Specified by:
  `getReferenceKey` in class `AbstractFunction`
Returns:
  The name of the function
See Also:
  - `Function.getReferenceKey()`

### setParameters

public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException
Note: This is always called even if no parameters are provided (versions of JMeter after 2.3.1)

Specified by:
  `setParameters` in interface `Function`
Specified by:
  `setParameters` in class `AbstractFunction`
Parameters:
  `parameters` - The parameters for the function call
Throws:
  `InvalidVariableException` - - when the variables for the function call can't be evaluated
See Also:
  - `Function.setParameters(Collection)`

### threadStarted

public void threadStarted()
Description copied from interface: `ThreadListener`
Called for each thread before starting sampling. WARNING: this is called before any Config test elements are processed, so any properties they define will not have been merged in yet. See org.apache.jmeter.threads.JMeterThread#threadStarted()

Specified by:
  `threadStarted` in interface `ThreadListener`

### threadFinished

public void threadFinished()
Description copied from interface: `ThreadListener`
Called for each thread after all samples have been processed. See org.apache.jmeter.threads.JMeterThread#threadFinished(org.apache.jmeter.engine.event.LoopIterationListener)

Specified by:
  `threadFinished` in interface `ThreadListener`