org.apache.commons.collections.functors

## Class WhileClosure

- java.lang.Object
- - org.apache.commons.collections.functors.WhileClosure

- All Implemented Interfaces:
    Serializable, Closure

      public class WhileClosure
      extends Object
      implements Closure, Serializable

  Closure implementation that executes a closure repeatedly until a condition is met, like a do-while or while loop.

  WARNING: from v3.2.2 onwards this class will throw an `UnsupportedOperationException` when trying to serialize or de-serialize an instance to prevent potential remote code execution exploits.

  In order to re-enable serialization support for `WhileClosure` the following system property can be used (via -Dproperty=true):

       org.apache.commons.collections.enableUnsafeSerialization

  Since:
    Commons Collections 3.0
  Version:
    $Revision: 1713845 $ $Date: 2015-11-11 15:02:16 +0100 (Wed, 11 Nov 2015) $
  Author:
    Stephen Colebourne
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `WhileClosure(Predicate predicate, Closure closure, boolean doLoop)` Constructor that performs no validation.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `execute(Object input)` Executes the closure until the predicate is false.
    `Closure` | `getClosure()` Gets the closure.
    `static Closure` | `getInstance(Predicate predicate, Closure closure, boolean doLoop)` Factory method that performs validation.
    `Predicate` | `getPredicate()` Gets the predicate in use.
    `boolean` | `isDoLoop()` Is the loop a do-while loop.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### WhileClosure

          public WhileClosure(Predicate predicate,
                      Closure closure,
                      boolean doLoop)

      Constructor that performs no validation. Use `getInstance` if you want that.
      Parameters:
        `predicate` - the predicate used to evaluate when the loop terminates, not null
        `closure` - the closure the execute, not null
        `doLoop` - true to act as a do-while loop, always executing the closure once

  - ### Method Detail

    - #### getInstance

          public static Closure getInstance(Predicate predicate,
                            Closure closure,
                            boolean doLoop)

      Factory method that performs validation.
      Parameters:
        `predicate` - the predicate used to evaluate when the loop terminates, not null
        `closure` - the closure the execute, not null
        `doLoop` - true to act as a do-while loop, always executing the closure once
      Returns:
        the `while` closure
      Throws:
        `IllegalArgumentException` - if the predicate or closure is null

    - #### execute

          public void execute(Object input)

      Executes the closure until the predicate is false.
      Specified by:
        `execute` in interface `Closure`
      Parameters:
        `input` - the input object

    - #### getPredicate

          public Predicate getPredicate()

      Gets the predicate in use.
      Returns:
        the predicate
      Since:
        Commons Collections 3.1

    - #### getClosure

          public Closure getClosure()

      Gets the closure.
      Returns:
        the closure
      Since:
        Commons Collections 3.1

    - #### isDoLoop

          public boolean isDoLoop()

      Is the loop a do-while loop.
      Returns:
        true is do-while, false if while
      Since:
        Commons Collections 3.1

Copyright © 2001–2015 The Apache Software Foundation. All rights reserved.