Package org.apache.jmeter.util

# Class BeanShellTestElement

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.util.BeanShellTestElement

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Searchable`, `org.apache.jmeter.testelement.TestElement`, `TestStateListener`, `ThreadListener`

Direct Known Subclasses:
  `BeanShellAssertion`, `BeanShellListener`, `BeanShellPostProcessor`, `BeanShellPreProcessor`, `BeanShellSampler`, `BeanShellTimer`

public abstract class BeanShellTestElement extends AbstractTestElement implements Serializable, Cloneable, ThreadListener, TestStateListener

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 interface org.apache.jmeter.testelement.TestElement

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

## Constructor Summary

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

## Method Summary

Modifier and Type
Method
Description
`Object`
`clone()`
`protected BeanShellInterpreter`
`getBeanShellInterpreter()`
Get the interpreter and set up standard script variables.
`String`
`getFilename()`
`protected abstract String`
`getInitFileProperty()`
`String`
`getParameters()`
`String`
`getScript()`
Return the script (TestBean version).
`boolean`
`isResetInterpreter()`
`protected Object`
`processFileOrScript(BeanShellInterpreter bsh)`
Process the file or script from the test element.
`protected Object`
`processFileOrScript(BeanShellInterpreter bsh, SampleResult sampleResult)`
Process the file or script from the test element.
`protected Object`
`readResolve()`
`void`
`setFilename(String s)`
`void`
`setParameters(String s)`
`void`
`setResetInterpreter(boolean b)`
`void`
`setScript(String s)`
Set the script (TestBean version).
`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.
`void`
`threadFinished()`
Called for each thread after all samples have been processed.
`void`
`threadStarted()`
Called for each thread before starting sampling.

### Methods inherited from class org.apache.jmeter.testelement.AbstractTestElement

`addPropertiesValues, addProperty, addProperty, addTestElement, canRemove, clear, clearTemporary, clearTestElementChildren, 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

### BeanShellTestElement

protected BeanShellTestElement()

## Method Details

### getInitFileProperty

protected abstract String getInitFileProperty()

### getBeanShellInterpreter

protected BeanShellInterpreter getBeanShellInterpreter()
Get the interpreter and set up standard script variables.

Sets the following script variables:

- ctx
- Label
- prev
- props
- vars

Returns:
  the interpreter

### readResolve

protected Object readResolve()

### clone

public Object clone()

Specified by:
  `clone` in interface `org.apache.jmeter.testelement.TestElement`
Overrides:
  `clone` in class `AbstractTestElement`

### processFileOrScript

protected Object processFileOrScript(BeanShellInterpreter bsh) throws JMeterException
Process the file or script from the test element.

Sets the following script variables:

- FileName
- Parameters
- bsh.args

Parameters:
  `bsh` - the interpreter, not `null`
Returns:
  the result of the script, may be `null`
Throws:
  `JMeterException` - when working with the bsh fails

### processFileOrScript

protected Object processFileOrScript(BeanShellInterpreter bsh, SampleResult sampleResult) throws JMeterException
Process the file or script from the test element.

Sets the following script variables:

- FileName
- Parameters
- bsh.args

Parameters:
  `bsh` - the interpreter, not `null`
  `sampleResult` - sampler result to set `setSamplerData` or `null`
Returns:
  the result of the script, may be `null`
Throws:
  `JMeterException` - when working with the bsh fails

### getScript

public String getScript()
Return the script (TestBean version). Must be overridden for subclasses that don't implement TestBean otherwise the clone() method won't work.

Returns:
  the script to execute

### setScript

public void setScript(String s)
Set the script (TestBean version). Must be overridden for subclasses that don't implement TestBean otherwise the clone() method won't work.

Parameters:
  `s` - the script to execute (may be blank)

### threadStarted

public void threadStarted()
Description copied from interface: `ThreadListener`
Called for each thread before starting sampling. WARNING: this is called before any Config test elements are processed, so any properties they define will not have been merged in yet. See org.apache.jmeter.threads.JMeterThread#threadStarted()

Specified by:
  `threadStarted` in interface `ThreadListener`

### threadFinished

public void threadFinished()
Description copied from interface: `ThreadListener`
Called for each thread after all samples have been processed. See org.apache.jmeter.threads.JMeterThread#threadFinished(org.apache.jmeter.engine.event.LoopIterationListener)

Specified by:
  `threadFinished` in interface `ThreadListener`

### 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:
  - `StandardJMeterEngine.stopTest()`

### 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:
  - `StandardJMeterEngine.stopTest()`

### 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:
  - `StandardJMeterEngine.run()`

### 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:
  - `StandardJMeterEngine.run()`

### getParameters

public String getParameters()

### setParameters

public void setParameters(String s)

### getFilename

public String getFilename()

### setFilename

public void setFilename(String s)

### isResetInterpreter

public boolean isResetInterpreter()

### setResetInterpreter

public void setResetInterpreter(boolean b)