# Class JSR223TestElement

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.util.ScriptingTestElement
org.apache.jmeter.util.JSR223TestElement

All Implemented Interfaces:
  `Serializable, Cloneable, Searchable, TestElement, TestStateListener`

Direct Known Subclasses:
  `JSR223Assertion, JSR223Listener, JSR223PostProcessor, JSR223PreProcessor, JSR223Sampler, JSR223Timer`

public abstract class JSR223TestElement extends ScriptingTestElement implements Serializable, TestStateListener

See Also:
  - Serialized Form

## Field Summary

### Fields inherited from class ScriptingTestElement

`scriptLanguage`

### Fields inherited from interface TestElement

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

## Constructor Summary

Constructors
Constructor
Description
`JSR223TestElement()`

## Method Summary

Modifier and Type
Method
Description
`String`
`getCacheKey()`
`static ScriptEngineManager`
`getInstance()`
`protected ScriptEngine`
`getScriptEngine()`
`String`
`getScriptLanguage()`
`protected void`
`populateBindings(Bindings bindings)`
Populate variables to be passed to scripts
`protected Object`
`processFileOrScript(ScriptEngine scriptEngine, Bindings bindings)`
This method will run inline script or file script with special behaviour for file script: - If ScriptEngine implements Compilable script will be compiled and cached - If not if will be run
`void`
`setCacheKey(String cacheKey)`
`void`
`setScriptLanguage(String s)`
`void`
`testEnded()`
Called once for all threads after the end of a test.
`void`
`testEnded(String host)`
Called once for all threads after the end of a test.
`void`
`testStarted()`
Called just before the start of the test from the main engine thread.
`void`
`testStarted(String host)`
Called just before the start of the test from the main engine thread.

### Methods inherited from class ScriptingTestElement

`getFilename, getParameters, getScript, setFilename, setParameters, setScript`

### Methods inherited from class AbstractTestElement

`addPropertiesValues, addProperty, addProperty, addTestElement, canRemove, clear, clearTemporary, clearTestElementChildren, clone, emptyTemporary, equals, getComment, getName, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getSearchableTokens, getThreadContext, getThreadName, hashCode, isEnabled, isRunningVersion, isTemporary, logProperties, mergeIn, propertyIterator, recoverRunningVersion, removeProperty, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse, traverseCollection, traverseMap, traverseProperty`

### Methods inherited from class Object

`finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### JSR223TestElement

public JSR223TestElement()

## Method Details

### getInstance

public static ScriptEngineManager getInstance()

Returns:
  ScriptEngineManager singleton

### getScriptEngine

protected ScriptEngine getScriptEngine() throws ScriptException

Throws:
  `ScriptException`

### populateBindings

protected void populateBindings(Bindings bindings)
Populate variables to be passed to scripts

Parameters:
  `bindings` - Bindings

### processFileOrScript

protected Object processFileOrScript(ScriptEngine scriptEngine, Bindings bindings) throws IOException, ScriptException
This method will run inline script or file script with special behaviour for file script: - If ScriptEngine implements Compilable script will be compiled and cached - If not if will be run

Parameters:
  `scriptEngine` - ScriptEngine
  `bindings` - `Bindings` might be null
Returns:
  Object returned by script
Throws:
  `IOException` - when reading the script fails
  `ScriptException` - when compiling or evaluation of the script fails

### getCacheKey

public String getCacheKey()

Returns:
  the cacheKey

### setCacheKey

public void setCacheKey(String cacheKey)

Parameters:
  `cacheKey` - the cacheKey to set

### testStarted

public void testStarted()
Description copied from interface: `TestStateListener`

Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testStarted` in interface `TestStateListener`
See Also:
  - `TestStateListener.testStarted()`

### testStarted

public void testStarted(String host)
Description copied from interface: `TestStateListener`

Called just before the start of the test from the main engine thread. This is before the test elements are cloned. Note that not all the test variables will have been set up at this point.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testStarted` in interface `TestStateListener`
Parameters:
  `host` - name of host
See Also:
  - `TestStateListener.testStarted(java.lang.String)`

### testEnded

public void testEnded()
Description copied from interface: `TestStateListener`

Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testEnded` in interface `TestStateListener`
See Also:
  - `TestStateListener.testEnded()`

### testEnded

public void testEnded(String host)
Description copied from interface: `TestStateListener`

Called once for all threads after the end of a test. This will use the same element instances as at the start of the test.

N.B. testStarted() and testEnded() are called from different threads.

Specified by:
  `testEnded` in interface `TestStateListener`
Parameters:
  `host` - name of host
See Also:
  - `TestStateListener.testEnded(java.lang.String)`

### getScriptLanguage

public String getScriptLanguage()

### setScriptLanguage

public void setScriptLanguage(String s)