public class TransformerUtils extends Object
TransformerUtils provides reference implementations and utilities for the Transformer functor interface. The supplied transformers are:
java.lang.String representation of the input object Since v4.1 only transformers which are considered to be unsafe are Serializable. Transformers considered to be unsafe for serialization are:
| Modifier and Type | Method and Description |
|---|---|
static <T> Transformer |
asTransformer(Closure
Creates a Transformer that calls a Closure each time the transformer is used.
|
static <I |
asTransformer(Factory
Creates a Transformer that calls a Factory each time the transformer is used.
|
static <T> Transformer |
asTransformer(Predicate
Creates a Transformer that calls a Predicate each time the transformer is used.
|
static <T> Transformer |
chainedTransformer(Collection
Create a new Transformer that calls each transformer in turn, passing the result into the next transformer.
|
static <T> Transformer |
chainedTransformer(Transformer
Create a new Transformer that calls each transformer in turn, passing the result into the next transformer.
|
static <T> Transformer |
cloneTransformer()
Gets a transformer that returns a clone of the input object.
|
static <I |
constantTransformer(O constantToReturn)
Creates a Transformer that will return the same object each time the transformer is used.
|
static <I |
exceptionTransformer()
Gets a transformer that always throws an exception.
|
static <I |
ifTransformer(Predicate
Create a new Transformer that calls one of two transformers depending on the specified predicate.
|
static <T> Transformer |
ifTransformer(Predicate
Create a new Transformer that calls the transformer if the predicate is true, otherwise the input object is returned unchanged.
|
static <T> Transformer |
instantiateTransformer()
Gets a Transformer that expects an input Class object that it will instantiate.
|
static <T> Transformer |
instantiateTransformer(Class
Creates a Transformer that expects an input Class object that it will instantiate.
|
static <I |
invokerTransformer(String
Gets a Transformer that invokes a method on the input object.
|
static <I |
invokerTransformer(String
Gets a Transformer that invokes a method on the input object.
|
static <I |
mapTransformer(Map
Creates a Transformer that uses the passed in Map to transform the input object (as a simple lookup).
|
static <T> Transformer |
nopTransformer()
Gets a transformer that returns the input object.
|
static <I |
nullTransformer()
Gets a transformer that always returns null.
|
static <T> Transformer |
stringValueTransformer()
Gets a transformer that returns a
java.lang.String representation of the input object.
|
static <I |
switchMapTransformer(Map
Create a new Transformer that uses the input object as a key to find the transformer to call.
|
static <I |
switchTransformer(Map
Create a new Transformer that calls one of the transformers depending on the predicates.
|
static <I |
switchTransformer(Predicate
Create a new Transformer that calls one of the transformers depending on the predicates.
|
static <I |
switchTransformer(Predicate
Create a new Transformer that calls one of the transformers depending on the predicates.
|
static <I |
switchTransformer(Predicate
Deprecated.
as of 4.1, use {@link #ifTransformer(Predicate, Transformer, Transformer))
|
public static <I,O> Transformer <I ,O> exceptionTransformer()
I - the input type
O - the output type
ExceptionTransformer
public static <I,O> Transformer <I ,O> nullTransformer()
I - the input type
O - the output type
ConstantTransformer
public static <T> Transformer<T ,T> nopTransformer()
T - the input/output type
NOPTransformer
public static <T> Transformer<T ,T> cloneTransformer()
T - the input/output type
CloneTransformer
public static <I,O> Transformer <I ,O> constantTransformer(O constantToReturn)
I - the input type
O - the output type
constantToReturn - the constant object to return each time in the transformer
ConstantTransformer
public static <T> Transformer<T ,T> asTransformer(Closure <? super T> closure)
T - the input/output type
closure - the closure to run each time in the transformer, not null
NullPointerException - if the closure is null
ClosureTransformer
public static <T> Transformer<T ,Boolean > asTransformer(Predicate <? super T> predicate)
T - the input type
predicate - the predicate to run each time in the transformer, not null
NullPointerException - if the predicate is null
PredicateTransformer
public static <I,O> Transformer <I ,O> asTransformer(Factory <? extends O> factory)
I - the input type
O - the output type
factory - the factory to run each time in the transformer, not null
NullPointerException - if the factory is null
FactoryTransformer
public static <T> Transformer<T ,T> chainedTransformer(Transformer <? super T ,? extends T>... transformers)
T - the input/output type
transformers - an array of transformers to chain
NullPointerException - if the transformers array or any of the transformers is null
ChainedTransformer
public static <T> Transformer<T ,T> chainedTransformer(Collection <? extends Transformer <? super T ,? extends T>> transformers)
T - the input/output type
transformers - a collection of transformers to chain
NullPointerException - if the transformers collection or any of the transformers is null
ChainedTransformer
public static <T> Transformer<T ,T> ifTransformer(Predicate <? super T> predicate, Transformer <? super T ,? extends T> trueTransformer)
T - the input / output type
predicate - the predicate to switch on
trueTransformer - the transformer called if the predicate is true
NullPointerException - if either the predicate or transformer is null
IfTransformer
public static <I,O> Transformer <I ,O> ifTransformer(Predicate <? super I> predicate, Transformer <? super I ,? extends O> trueTransformer, Transformer <? super I ,? extends O> falseTransformer)
I - the input type
O - the output type
predicate - the predicate to switch on
trueTransformer - the transformer called if the predicate is true
falseTransformer - the transformer called if the predicate is false
NullPointerException - if either the predicate or transformer is null
IfTransformer
@Deprecated public static <I,O> Transformer <I ,O> switchTransformer(Predicate <? super I> predicate, Transformer <? super I ,? extends O> trueTransformer, Transformer <? super I ,? extends O> falseTransformer)
I - the input type
O - the output type
predicate - the predicate to switch on
trueTransformer - the transformer called if the predicate is true
falseTransformer - the transformer called if the predicate is false
NullPointerException - if either the predicate or transformer is null
SwitchTransformer
public static <I,O> Transformer <I ,O> switchTransformer(Predicate <? super I>[] predicates, Transformer <? super I ,? extends O>[] transformers)
I - the input type
O - the output type
predicates - an array of predicates to check
transformers - an array of transformers to call
NullPointerException - if the either array is null
NullPointerException - if any element in the arrays is null
IllegalArgumentException - if the arrays have different sizes
SwitchTransformer
public static <I,O> Transformer <I ,O> switchTransformer(Predicate <? super I>[] predicates, Transformer <? super I ,? extends O>[] transformers, Transformer <? super I ,? extends O> defaultTransformer)
I - the input type
O - the output type
predicates - an array of predicates to check
transformers - an array of transformers to call
defaultTransformer - the default to call if no predicate matches, null means return null
NullPointerException - if the either array is null
NullPointerException - if any element in the arrays is null
IllegalArgumentException - if the arrays have different sizes
SwitchTransformer
public static <I,O> Transformer <I ,O> switchTransformer(Map <Predicate <I> ,Transformer <I ,O>> predicatesAndTransformers)
The Map consists of Predicate keys and Transformer values. A transformer is called if its matching predicate returns true. Each predicate is evaluated until one returns true. If no predicates evaluate to true, the default transformer is called. The default transformer is set in the map with a null key. If no default transformer is set, null will be returned in a default case. The ordering is that of the iterator() method on the entryset collection of the map.
I - the input type
O - the output type
predicatesAndTransformers - a map of predicates to transformers
NullPointerException - if the map is null
NullPointerException - if any transformer in the map is null
ClassCastException - if the map elements are of the wrong type
SwitchTransformer
public static <I,O> Transformer <I ,O> switchMapTransformer(Map <I ,Transformer <I ,O>> objectsAndTransformers)
The Map consists of object keys and Transformer values. A transformer is called if the input object equals the key. If there is no match, the default transformer is called. The default transformer is set in the map using a null key. If no default is set, null will be returned in a default case.
I - the input type
O - the output type
objectsAndTransformers - a map of objects to transformers
NullPointerException - if the map is null
NullPointerException - if any transformer in the map is null
SwitchTransformer
public static <T> Transformer<Class <? extends T> ,T> instantiateTransformer()
T - the output type
InstantiateTransformer
public static <T> Transformer<Class <? extends T> ,T> instantiateTransformer(Class <?>[] paramTypes, Object [] args)
T - the output type
paramTypes - parameter types for the constructor, can be null
args - the arguments to pass to the constructor, can be null
IllegalArgumentException - if the paramTypes and args don't match
InstantiateTransformer
public static <I,O> Transformer <I ,O> mapTransformer(Map <? super I ,? extends O> map)
I - the input type
O - the output type
map - the map to use to transform the objects
ConstantTransformer.nullTransformer() if the
map is
null
MapTransformer
public static <I,O> Transformer <I ,O> invokerTransformer(String methodName)
For example, TransformerUtils.invokerTransformer("getName"); will call the getName/code> method on the input object to determine the transformer result.
I - the input type
O - the output type
methodName - the method name to call on the input object, may not be null
NullPointerException - if the methodName is null.
InvokerTransformer
public static <I,O> Transformer <I ,O> invokerTransformer(String methodName, Class <?>[] paramTypes, Object [] args)
null,
null is returned.
I - the input type
O - the output type
methodName - the name of the method
paramTypes - the parameter types
args - the arguments
NullPointerException - if the method name is null
IllegalArgumentException - if the paramTypes and args don't match
InvokerTransformer
public static <T> Transformer<T ,String > stringValueTransformer()
java.lang.String representation of the input object. This is achieved via the
toString method,
null returns 'null'.
T - the input type
StringValueTransformer