Package org.apache.jmeter.functions

# Class AbstractFunction

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

All Implemented Interfaces:
  `Function`

Direct Known Subclasses:
  `BeanShell`, `ChangeCase`, `CharFunction`, `CSVRead`, `DateTimeConvertFunction`, `DigestEncodeFunction`, `EscapeHtml`, `EscapeOroRegexpChars`, `EscapeXml`, `EvalFunction`, `EvalVarFunction`, `FileToString`, `Groovy`, `IntSum`, `IsPropDefined`, `IsVarDefined`, `IterationCounter`, `JavaScript`, `Jexl2Function`, `Jexl3Function`, `LogFunction`, `LogFunction2`, `LongSum`, `MachineIP`, `MachineName`, `Property`, `Property2`, `Random`, `RandomDate`, `RandomFromMultipleVars`, `RandomString`, `RegexFunction`, `SamplerName`, `SetProperty`, `SplitFunction`, `StringFromFile`, `StringToFile`, `TestPlanName`, `ThreadGroupName`, `ThreadNumber`, `TimeFunction`, `TimeShift`, `UnEscape`, `UnEscapeHtml`, `UrlDecode`, `UrlEncode`, `Uuid`, `Variable`, `XPath`

public abstract class AbstractFunction extends Object implements Function
Provides common methods for all functions

## Constructor Summary

Constructors
Constructor
Description
`AbstractFunction()`

## Method Summary

Modifier and Type
Method
Description
`protected final void`
`addVariableValue(String value, CompoundVariable[] values, int index)`
Utility method to store value in a variable
`protected void`
`checkMinParameterCount(Collection<CompoundVariable> parameters, int minimum)`
Utility method to check parameter counts.
`protected void`
`checkParameterCount(Collection<CompoundVariable> parameters, int count)`
Utility method to check parameter counts.
`protected void`
`checkParameterCount(Collection<CompoundVariable> parameters, int min, int max)`
Utility method to check parameter counts.
`String`
`execute()`
`abstract String`
`execute(SampleResult previousResult, Sampler currentSampler)`
N.B.
`abstract String`
`getReferenceKey()`
Return the name of your function.
`protected JMeterVariables`
`getVariables()`
Gives access to the JMeter variables for the current thread.
`abstract void`
`setParameters(Collection<CompoundVariable> parameters)`
Note: This is always called even if no parameters are provided (versions of JMeter after 2.3.1)

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

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

### Methods inherited from interface org.apache.jmeter.functions.Function

`getArgumentDesc`

## Constructor Details

### AbstractFunction

public AbstractFunction()

## Method Details

### execute

public abstract 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`
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)`

### execute

public String execute() throws InvalidVariableException

Throws:
  `InvalidVariableException`

### setParameters

public abstract 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`
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)`

### getReferenceKey

public abstract String getReferenceKey()
Description copied from interface: `Function`
Return the name of your function. Convention is to prepend "__" to the name (ie "__regexFunction")

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

### getVariables

protected JMeterVariables getVariables()
Gives access to the JMeter variables for the current thread.

Returns:
  a pointer to the JMeter variables.

### checkParameterCount

protected void checkParameterCount(Collection<CompoundVariable> parameters, int min, int max) throws InvalidVariableException
Utility method to check parameter counts.

Parameters:
  `parameters` - collection of parameters
  `min` - minimum number of parameters allowed
  `max` - maximum number of parameters allowed
Throws:
  `InvalidVariableException` - if the number of parameters is incorrect

### checkParameterCount

protected void checkParameterCount(Collection<CompoundVariable> parameters, int count) throws InvalidVariableException
Utility method to check parameter counts.

Parameters:
  `parameters` - collection of parameters
  `count` - number of parameters expected
Throws:
  `InvalidVariableException` - if the number of parameters is incorrect

### checkMinParameterCount

protected void checkMinParameterCount(Collection<CompoundVariable> parameters, int minimum) throws InvalidVariableException
Utility method to check parameter counts.

Parameters:
  `parameters` - collection of parameters
  `minimum` - number of parameters expected
Throws:
  `InvalidVariableException` - if the number of parameters is incorrect

### addVariableValue

protected final void addVariableValue(String value, CompoundVariable[] values, int index)
Utility method to store value in a variable

Parameters:
  `value` - value of variable to update
  `values` - array of `CompoundVariable` from which variable name will be extracted
  `index` - index of variable in values array