Package org.apache.jmeter.control

# Class WhileController

java.lang.Object
org.apache.jmeter.testelement.AbstractTestElement
org.apache.jmeter.control.GenericController
org.apache.jmeter.control.WhileController

All Implemented Interfaces:
  `Serializable`, `Cloneable`, `Controller`, `IteratingController`, `LoopIterationListener`, `Searchable`, `org.apache.jmeter.testelement.TestElement`, `TestCompilerHelper`

public class WhileController extends GenericController implements Serializable, IteratingController

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.control.GenericController

`current, subControllersAndSamplers`

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

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

## Constructor Summary

Constructors
Constructor
Description
`WhileController()`

## Method Summary

Modifier and Type
Method
Description
`void`
`breakLoop()`
Break loop ("break" keyword equivalent)
`String`
`getCondition()`
`org.apache.jmeter.testelement.schema.PropertiesAccessor<? extends WhileController,? extends org.apache.jmeter.control.WhileControllerSchema>`
`getProps()`
`org.apache.jmeter.control.WhileControllerSchema`
`getSchema()`
`void`
`iterationStart(LoopIterationEvent iterEvent)`
Called when a loop iteration is about to start.
`Sampler`
`next()`
This skips controller entirely if the condition is false on first entry.
`protected Sampler`
`nextIsNull()`
Only called at End of Loop
`protected void`
`resetLoopCount()`
`void`
`setCondition(String string)`
`void`
`startNextLoop()`
Start next iteration ("continue" keyword equivalent in loops)
`void`
`triggerEndOfLoop()`
Trigger end of loop condition on controller (used by Start Next Loop feature)

### Methods inherited from class org.apache.jmeter.control.GenericController

`addIterationListener, addTestElement, addTestElementOnce, currentReturnedNull, fireIterationStart, fireIterEvents, getCurrentElement, getIterCount, getSubControllers, incrementCurrent, incrementIterCount, initialize, initializeSubControllers, isDone, isFirst, nextIsAController, nextIsASampler, readResolve, reInitialize, removeCurrentElement, removeIterationListener, resetCurrent, resetIterCount, setCurrentElement, setDone, setFirst`

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

`addPropertiesValues, addProperty, addProperty, 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.control.IteratingController

`updateIterationIndex`

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

`canRemove, clear, clearTestElementChildren, clone, get, get, get, get, get, get, get, get, get, getComment, getName, getOrCreate, getOrCreate, getOrNull, getOrNull, getOrNull, getProperty, getPropertyAsBoolean, getPropertyAsBoolean, getPropertyAsDouble, getPropertyAsFloat, getPropertyAsInt, getPropertyAsInt, getPropertyAsLong, getPropertyAsLong, getPropertyAsString, getPropertyAsString, getPropertyOrNull, getPropertyOrNull, getString, getThreadContext, getThreadName, isEnabled, isRunningVersion, isTemporary, propertyIterator, recoverRunningVersion, removed, removeProperty, removeProperty, set, set, set, set, set, set, set, set, set, setComment, setEnabled, setName, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setProperty, setRunningVersion, setTemporary, setThreadContext, setThreadName, traverse`

## Constructor Details

### WhileController

public WhileController()

## Method Details

### getSchema

public org.apache.jmeter.control.WhileControllerSchema getSchema()

Specified by:
  `getSchema` in interface `org.apache.jmeter.testelement.TestElement`
Overrides:
  `getSchema` in class `GenericController`

### getProps

public org.apache.jmeter.testelement.schema.PropertiesAccessor<? extends WhileController,? extends org.apache.jmeter.control.WhileControllerSchema> getProps()

Specified by:
  `getProps` in interface `org.apache.jmeter.testelement.TestElement`
Overrides:
  `getProps` in class `GenericController`

### nextIsNull

protected Sampler nextIsNull() throws NextIsNullException
Only called at End of Loop

Called by `GenericController.next()` when `GenericController.getCurrentElement()` returns `null`. Reinitialises the controller.

Overrides:
  `nextIsNull` in class `GenericController`
Returns:
  null (always, for this class)
Throws:
  `NextIsNullException` - when the end of the list has already been reached

### triggerEndOfLoop

public void triggerEndOfLoop()
Trigger end of loop condition on controller (used by Start Next Loop feature)

Specified by:
  `triggerEndOfLoop` in interface `Controller`
Overrides:
  `triggerEndOfLoop` in class `GenericController`

### next

public Sampler next()
This skips controller entirely if the condition is false on first entry.

Determines the next sampler to be processed.

If `GenericController.isDone()` is `true`, returns null.

Gets the list element using current pointer. If this is `null`, calls `GenericController.nextIsNull()`.

If the list element is a `Sampler`, calls `GenericController.nextIsASampler(Sampler)`, otherwise calls `GenericController.nextIsAController(Controller)`

If any of the called methods throws `NextIsNullException`, returns `null`, otherwise the value obtained above is returned.

Specified by:
  `next` in interface `Controller`
Overrides:
  `next` in class `GenericController`
Returns:
  the next sampler or `null`

### resetLoopCount

protected void resetLoopCount()

### setCondition

public void setCondition(String string)

Parameters:
  `string` - the condition to save

### getCondition

public String getCondition()

Returns:
  the condition

### startNextLoop

public void startNextLoop()
Description copied from interface: `IteratingController`
Start next iteration ("continue" keyword equivalent in loops)

Specified by:
  `startNextLoop` in interface `IteratingController`

### breakLoop

public void breakLoop()
Description copied from interface: `IteratingController`
Break loop ("break" keyword equivalent)

Specified by:
  `breakLoop` in interface `IteratingController`

### iterationStart

public void iterationStart(LoopIterationEvent iterEvent)
Description copied from interface: `LoopIterationListener`
Called when a loop iteration is about to start.

Specified by:
  `iterationStart` in interface `LoopIterationListener`
Parameters:
  `iterEvent` - the event