Package org.apache.jmeter.util

# 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`, `org.apache.jmeter.testelement.TestElement`, `TestStateListener`

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

public abstract class JSR223TestElement extends ScriptingTestElement implements Serializable, TestStateListener
Base class for JSR223 Test elements

See Also:
  - Serialized Form

## Nested Class Summary

## Nested classes/interfaces inherited from interface org.apache.jmeter.testelement.TestElement

`org.apache.jmeter.testelement.TestElement.Companion`

## Field Summary

### Fields inherited from class org.apache.jmeter.util.ScriptingTestElement

`DEFAULT_SCRIPT_LANGUAGE, scriptLanguage`

### Fields inherited from interface org.apache.jmeter.testelement.TestElement

`COMMENTS, Companion, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`JSR223TestElement()`

## Method Summary

Modifier and Type
Method
Description
`boolean`
`compile()`
`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 pBindings)`
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 org.apache.jmeter.util.ScriptingTestElement

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

### Methods inherited from class org.apache.jmeter.testelement.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, getPropertyOrNull, 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 java.lang.Object

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

### Methods inherited from interface org.apache.jmeter.testelement.TestElement

`get, get, get, get, get, get, get, get, get, getOrCreate, getOrCreate, getOrNull, getOrNull, getOrNull, getPropertyOrNull, getProps, getSchema, getString, removed, removeProperty, set, set, set, set, set, set, set, set, set`

## Constructor Details

### JSR223TestElement

protected JSR223TestElement()

## Method Details

### getInstance

public static ScriptEngineManager getInstance()

Returns:
  ScriptEngineManager singleton

### getScriptEngine

protected ScriptEngine getScriptEngine() throws ScriptException

Returns:
  `ScriptEngine` for language defaulting to groovy if language is not set
Throws:
  `ScriptException` - when no `ScriptEngine` could be found

### populateBindings

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

Parameters:
  `bindings` - Bindings

### processFileOrScript

protected Object processFileOrScript(ScriptEngine scriptEngine, Bindings pBindings) 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
  `pBindings` - `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

### compile

public boolean compile() throws ScriptException, IOException

Returns:
  boolean true if element is not compilable or if compilation succeeds
Throws:
  `IOException` - if script is missing
  `ScriptException` - if compilation 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)