# Class BeanShellTestElement

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

All Implemented Interfaces:
  `Serializable, Cloneable, Searchable, 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

## Field Summary

### Fields inherited from interface TestElement

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

## Constructor Summary

Constructors
Constructor
Description
`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`
`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 AbstractTestElement

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

### BeanShellTestElement

public 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 `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

### 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.

Specified by:
  `threadStarted` in interface `ThreadListener`
See Also:
  - `JMeterThread.threadStarted()`

### threadFinished

public void threadFinished()
Description copied from interface: `ThreadListener`
Called for each thread after all samples have been processed.

Specified by:
  `threadFinished` in interface `ThreadListener`
See Also:
  - `JMeterThread.threadFinished(org.apache.jmeter.engine.event.LoopIterationListener)`

### 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)