public class ClosureUtils extends Object
ClosureUtils provides reference implementations and utilities
for the Closure functor interface. The supplied closures are:
Since v4.1 only closures which are considered to be unsafe are Serializable. Closures considered to be unsafe for serialization are:
| Modifier and Type | Method and Description |
|---|---|
static <E> Closure<E> |
asClosure(Transformer<? super E,?> transformer)
Creates a Closure that calls a Transformer each time it is called.
|
static <E> Closure<E> |
chainedClosure(Closure<? super E>... closures)
Create a new Closure that calls each closure in turn, passing the
result into the next closure.
|
static <E> Closure<E> |
chainedClosure(Collection<? extends Closure<? super E>> closures)
Create a new Closure that calls each closure in turn, passing the
result into the next closure.
|
static <E> Closure<E> |
doWhileClosure(Closure<? super E> closure,
Predicate<? super E> predicate)
Creates a Closure that will call the closure once and then repeatedly
until the predicate returns false.
|
static <E> Closure<E> |
exceptionClosure()
Gets a Closure that always throws an exception.
|
static <E> Closure<E> |
forClosure(int count,
Closure<? super E> closure)
Creates a Closure that will call the closure
count times. |
static <E> Closure<E> |
ifClosure(Predicate<? super E> predicate,
Closure<? super E> trueClosure)
Create a new Closure that calls another closure based on the
result of the specified predicate.
|
static <E> Closure<E> |
ifClosure(Predicate<? super E> predicate,
Closure<? super E> trueClosure,
Closure<? super E> falseClosure)
Create a new Closure that calls one of two closures depending
on the specified predicate.
|
static <E> Closure<E> |
invokerClosure(String methodName)
Creates a Closure that will invoke a specific method on the closure's
input object by reflection.
|
static <E> Closure<E> |
invokerClosure(String methodName,
Class<?>[] paramTypes,
Object[] args)
Creates a Closure that will invoke a specific method on the closure's
input object by reflection.
|
static <E> Closure<E> |
nopClosure()
Gets a Closure that will do nothing.
|
static <E> Closure<E> |
switchClosure(Map<Predicate<E>,Closure<E>> predicatesAndClosures)
Create a new Closure that calls one of the closures depending
on the predicates.
|
static <E> Closure<E> |
switchClosure(Predicate<? super E>[] predicates,
Closure<? super E>[] closures)
Create a new Closure that calls one of the closures depending
on the predicates.
|
static <E> Closure<E> |
switchClosure(Predicate<? super E>[] predicates,
Closure<? super E>[] closures,
Closure<? super E> defaultClosure)
Create a new Closure that calls one of the closures depending
on the predicates.
|
static <E> Closure<E> |
switchMapClosure(Map<? extends E,Closure<E>> objectsAndClosures)
Create a new Closure that uses the input object as a key to find the
closure to call.
|
static <E> Closure<E> |
whileClosure(Predicate<? super E> predicate,
Closure<? super E> closure)
Creates a Closure that will call the closure repeatedly until the
predicate returns false.
|
public static <E> Closure<E> exceptionClosure()
E - the type that the closure acts onExceptionClosurepublic static <E> Closure<E> nopClosure()
E - the type that the closure acts onNOPClosurepublic static <E> Closure<E> asClosure(Transformer<? super E,?> transformer)
E - the type that the closure acts ontransformer - the transformer to run each time in the closure, null means nopTransformerClosurepublic static <E> Closure<E> forClosure(int count, Closure<? super E> closure)
count times.
A null closure or zero count returns the NOPClosure.
E - the type that the closure acts oncount - the number of times to loopclosure - the closure to call repeatedlyfor closureForClosurepublic static <E> Closure<E> whileClosure(Predicate<? super E> predicate, Closure<? super E> closure)
E - the type that the closure acts onpredicate - the predicate to use as an end of loop test, not nullclosure - the closure to call repeatedly, not nullwhile closureNullPointerException - if either argument is nullWhileClosurepublic static <E> Closure<E> doWhileClosure(Closure<? super E> closure, Predicate<? super E> predicate)
E - the type that the closure acts onclosure - the closure to call repeatedly, not nullpredicate - the predicate to use as an end of loop test, not nulldo-while closureNullPointerException - if either argument is nullWhileClosurepublic static <E> Closure<E> invokerClosure(String methodName)
E - the type that the closure acts onmethodName - the name of the methodinvoker closureNullPointerException - if the method name is nullInvokerTransformer,
TransformerClosurepublic static <E> Closure<E> invokerClosure(String methodName, Class<?>[] paramTypes, Object[] args)
E - the type that the closure acts onmethodName - the name of the methodparamTypes - the parameter typesargs - the argumentsinvoker closureNullPointerException - if the method name is nullIllegalArgumentException - if the paramTypes and args don't matchInvokerTransformer,
TransformerClosurepublic static <E> Closure<E> chainedClosure(Closure<? super E>... closures)
E - the type that the closure acts onclosures - an array of closures to chainchained closureNullPointerException - if the closures array is nullNullPointerException - if any closure in the array is nullChainedClosurepublic static <E> Closure<E> chainedClosure(Collection<? extends Closure<? super E>> closures)
E - the type that the closure acts onclosures - a collection of closures to chainchained closureNullPointerException - if the closures collection is nullNullPointerException - if any closure in the collection is nullIllegalArgumentException - if the closures collection is emptyChainedClosurepublic static <E> Closure<E> ifClosure(Predicate<? super E> predicate, Closure<? super E> trueClosure)
E - the type that the closure acts onpredicate - the validating predicatetrueClosure - the closure called if the predicate is trueif closureNullPointerException - if the predicate or closure is nullIfClosurepublic static <E> Closure<E> ifClosure(Predicate<? super E> predicate, Closure<? super E> trueClosure, Closure<? super E> falseClosure)
E - the type that the closure acts onpredicate - the predicate to switch ontrueClosure - the closure called if the predicate is truefalseClosure - the closure called if the predicate is falseswitch closureNullPointerException - if the predicate or either closure is nullIfClosurepublic static <E> Closure<E> switchClosure(Predicate<? super E>[] predicates, Closure<? super E>[] closures)
The closure at array location 0 is called if the predicate at array location 0 returned true. Each predicate is evaluated until one returns true.
E - the type that the closure acts onpredicates - an array of predicates to check, not nullclosures - an array of closures to call, not nullswitch closureNullPointerException - if the either array is nullNullPointerException - if any element in the arrays is nullIllegalArgumentException - if the arrays have different sizesSwitchClosurepublic static <E> Closure<E> switchClosure(Predicate<? super E>[] predicates, Closure<? super E>[] closures, Closure<? super E> defaultClosure)
The closure at array location 0 is called if the predicate at array location 0 returned true. Each predicate is evaluated until one returns true. If no predicates evaluate to true, the default closure is called.
E - the type that the closure acts onpredicates - an array of predicates to check, not nullclosures - an array of closures to call, not nulldefaultClosure - the default to call if no predicate matchesswitch closureNullPointerException - if the either array is nullNullPointerException - if any element in the arrays is nullIllegalArgumentException - if the arrays are different sizesSwitchClosurepublic static <E> Closure<E> switchClosure(Map<Predicate<E>,Closure<E>> predicatesAndClosures)
The Map consists of Predicate keys and Closure values. A closure is called if its matching predicate returns true. Each predicate is evaluated until one returns true. If no predicates evaluate to true, the default closure is called. The default closure is set in the map with a null key. The ordering is that of the iterator() method on the entryset collection of the map.
E - the type that the closure acts onpredicatesAndClosures - a map of predicates to closuresswitch closureNullPointerException - if the map is nullNullPointerException - if any closure in the map is nullIllegalArgumentException - if the map is emptyClassCastException - if the map elements are of the wrong typeSwitchClosurepublic static <E> Closure<E> switchMapClosure(Map<? extends E,Closure<E>> objectsAndClosures)
The Map consists of object keys and Closure values. A closure is called if the input object equals the key. If there is no match, the default closure is called. The default closure is set in the map using a null key.
E - the type that the closure acts onobjectsAndClosures - a map of objects to closuresNullPointerException - if the map is nullNullPointerException - if any closure in the map is nullIllegalArgumentException - if the map is emptySwitchClosureCopyright © 2001–2015 The Apache Software Foundation. All rights reserved.