# Class IfController

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

All Implemented Interfaces:
  `Serializable, Cloneable, Controller, Searchable, TestElement, TestCompilerHelper`

public class IfController extends GenericController implements Serializable
This is a Conditional Controller; it will execute the set of statements (samplers/controllers, etc) while the 'condition' is true.

In a programming world - this is equivalent of :

    if (condition) {
             statements ....
             }

In JMeter you may have :

    Thread-Group (set to loop a number of times or indefinitely,
       ... Samplers ... (e.g. Counter )
       ... Other Controllers ....
       ... IfController ( condition set to something like - ${counter} < 10)
          ... statements to perform if condition is true
          ...
       ... Other Controllers /Samplers }

See Also:
  - Serialized Form

## Field Summary

### Fields inherited from class GenericController

`current, subControllersAndSamplers`

### Fields inherited from interface TestElement

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

## Constructor Summary

Constructors
Constructor
Description
`IfController()`
constructor
`IfController(String condition)`
constructor

## Method Summary

Modifier and Type
Method
Description
`String`
`getCondition()`
Condition Accessor - this is gonna be like `${count} < 10`
`boolean`
`isDone()`
This is overriding the parent method.
`boolean`
`isEvaluateAll()`
`boolean`
`isUseExpression()`
`Sampler`
`next()`
Determines the next sampler to be processed.
`void`
`setCondition(String condition)`
Condition Accessor - this is gonna be like `${count} < 10`
`void`
`setEvaluateAll(boolean b)`
`void`
`setUseExpression(boolean selected)`
`void`
`triggerEndOfLoop()`
Trigger end of loop condition on controller (used by Start Next Loop feature)

### Methods inherited from class GenericController

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

### Methods inherited from class AbstractTestElement

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

### Methods inherited from interface TestElement

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

## Constructor Details

### IfController

public IfController()
constructor

### IfController

public IfController(String condition)
constructor

Parameters:
  `condition` - The condition for this controller

## Method Details

### setCondition

public void setCondition(String condition)
Condition Accessor - this is gonna be like `${count} < 10`

Parameters:
  `condition` - The condition for this controller

### getCondition

public String getCondition()
Condition Accessor - this is gonna be like `${count} < 10`

Returns:
  the condition associated with this controller

### isDone

public boolean isDone()
This is overriding the parent method. IsDone indicates whether the termination condition is reached. I.e. if the condition evaluates to False - then isDone() returns TRUE

Specified by:
  `isDone` in interface `Controller`
Overrides:
  `isDone` in class `GenericController`
Returns:
  boolean
See Also:
  - `Controller.isDone()`

### next

public Sampler next()
Description copied from class: `GenericController`

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`
See Also:
  - `Controller.next()`

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

### isEvaluateAll

public boolean isEvaluateAll()

### setEvaluateAll

public void setEvaluateAll(boolean b)

### isUseExpression

public boolean isUseExpression()

### setUseExpression

public void setUseExpression(boolean selected)