Class ForClosure

  • All Implemented Interfaces:
    java.io.Serializable, Closure

    public class ForClosure
    extends java.lang.Object
    implements Closure, java.io.Serializable
    Closure implementation that calls another closure n times, like a for 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 ForClosure 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) $
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Closure iClosure
      The closure to call
      private int iCount
      The number of times to loop
      private static long serialVersionUID
      Serial version UID
    • Constructor Summary

      Constructors 
      Constructor Description
      ForClosure​(int count, Closure closure)
      Constructor that performs no validation.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void execute​(java.lang.Object input)
      Executes the closure count times.
      Closure getClosure()
      Gets the closure.
      int getCount()
      Gets the count.
      static Closure getInstance​(int count, Closure closure)
      Factory method that performs validation.
      private void readObject​(java.io.ObjectInputStream is)
      Overrides the default readObject implementation to prevent de-serialization (see COLLECTIONS-580).
      private void writeObject​(java.io.ObjectOutputStream os)
      Overrides the default writeObject implementation to prevent serialization (see COLLECTIONS-580).
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • serialVersionUID

        private static final long serialVersionUID
        Serial version UID
        See Also:
        Constant Field Values
      • iCount

        private final int iCount
        The number of times to loop
      • iClosure

        private final Closure iClosure
        The closure to call
    • Constructor Detail

      • ForClosure

        public ForClosure​(int count,
                          Closure closure)
        Constructor that performs no validation. Use getInstance if you want that.
        Parameters:
        count - the number of times to execute the closure
        closure - the closure to execute, not null
    • Method Detail

      • getInstance

        public static Closure getInstance​(int count,
                                          Closure closure)
        Factory method that performs validation.

        A null closure or zero count returns the NOPClosure. A count of one returns the specified closure.

        Parameters:
        count - the number of times to execute the closure
        closure - the closure to execute, not null
        Returns:
        the for closure
      • execute

        public void execute​(java.lang.Object input)
        Executes the closure count times.
        Specified by:
        execute in interface Closure
        Parameters:
        input - the input object
      • getClosure

        public Closure getClosure()
        Gets the closure.
        Returns:
        the closure
        Since:
        Commons Collections 3.1
      • getCount

        public int getCount()
        Gets the count.
        Returns:
        the count
        Since:
        Commons Collections 3.1
      • writeObject

        private void writeObject​(java.io.ObjectOutputStream os)
                          throws java.io.IOException
        Overrides the default writeObject implementation to prevent serialization (see COLLECTIONS-580).
        Throws:
        java.io.IOException
      • readObject

        private void readObject​(java.io.ObjectInputStream is)
                         throws java.lang.ClassNotFoundException,
                                java.io.IOException
        Overrides the default readObject implementation to prevent de-serialization (see COLLECTIONS-580).
        Throws:
        java.lang.ClassNotFoundException
        java.io.IOException