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:
  • Constructor Details

    • 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 Details

    • 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