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)