# Class AbstractFunction

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

All Implemented Interfaces:
  `Function`

Direct Known Subclasses:
  `BeanShell, CharFunction, CSVRead, EscapeHtml, EscapeOroRegexpChars, EvalFunction, EvalVarFunction, FileToString, IntSum, IterationCounter, JavaScript, Jexl2Function, JexlFunction, LogFunction, LogFunction2, LongSum, MachineIP, MachineName, Property, Property2, Random, RandomString, RegexFunction, SamplerName, SetProperty, SplitFunction, StringFromFile, TestPlanName, ThreadNumber, TimeFunction, 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 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. execute() should be synchronized if function is operating with non-thread-safe objects (e.g. operates with files).
`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 Object

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

### Methods inherited from interface 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 funtion
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