org.apache.jmeter.control

## 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, ThreadListener, TestCompilerHelper

    public class IfController
    extends GenericController
    implements Serializable, ThreadListener

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 org.apache.jmeter.control.GenericController

`current, subControllersAndSamplers`

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

`COMMENTS, ENABLED, GUI_CLASS, NAME, TEST_CLASS`

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`String` `getCondition()` Condition Accessor - this is gonna be like `${count} < 10`
`boolean` `isDone()` Indicates whether the Controller is done delivering Samplers for the rest of the test.
`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` `threadFinished()` Called for each thread after all samples have been processed.
`void` `threadStarted()` Called for each thread before starting sampling.
`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, isFirst, nextIsAController, nextIsASampler, nextIsNull, 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, 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

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

### Constructor Detail

#### IfController

    public IfController()

constructor

#### IfController

    public IfController(String condition)

constructor

Parameters:
  `condition` - The condition for this controller

### Method Detail

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

Description copied from interface: `Controller`
Indicates whether the Controller is done delivering Samplers for the rest of the test. When the top-level controller returns true to JMeterThread, the thread is complete.

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)

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