Author: bayard
Date: Tue Sep 15 05:56:51 2009
New Revision: 815106
URL: http://svn.apache.org/viewvc?rev=815106&view=rev
Log:
Merging from -r468106:814127 of collections_jdk5_branch - namely where this
code was generified; mostly in r738956.
Also see the following revisions:
------------------------------------------------------------------------
r643795 | skestle | 2008-04-02 01:49:57 -0700 (Wed, 02 Apr 2008) | 5 lines
Generified EqualPredicate and created individual test class moved from
TestPredicateUtils
Added assertFalse() and assertTrue to BasicPredicateTestBase with
(Predicate, Object) parameters
Issues: COLLECTIONS-243, COLLECTIONS-253, COLLECTIONS-293
------------------------------------------------------------------------
Modified:
commons/proper/collections/trunk/src/java/org/apache/commons/collections/TransformerUtils.java
Modified:
commons/proper/collections/trunk/src/java/org/apache/commons/collections/TransformerUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/java/org/apache/commons/collections/TransformerUtils.java?rev=815106&r1=815105&r2=815106&view=diff
==============================================================================
---
commons/proper/collections/trunk/src/java/org/apache/commons/collections/TransformerUtils.java
(original)
+++
commons/proper/collections/trunk/src/java/org/apache/commons/collections/TransformerUtils.java
Tue Sep 15 05:56:51 2009
@@ -17,7 +17,6 @@
package org.apache.commons.collections;
import java.util.Collection;
-import java.util.Iterator;
import java.util.Map;
import org.apache.commons.collections.functors.ChainedTransformer;
@@ -80,8 +79,8 @@
*
* @return the transformer
*/
- public static Transformer exceptionTransformer() {
- return ExceptionTransformer.INSTANCE;
+ public static <I, O> Transformer<I, O> exceptionTransformer() {
+ return ExceptionTransformer.<I, O>getInstance();
}
/**
@@ -91,8 +90,8 @@
*
* @return the transformer
*/
- public static Transformer nullTransformer() {
- return ConstantTransformer.NULL_INSTANCE;
+ public static <I, O> Transformer<I, O> nullTransformer() {
+ return ConstantTransformer.<I, O>getNullInstance();
}
/**
@@ -104,8 +103,8 @@
*
* @return the transformer
*/
- public static Transformer nopTransformer() {
- return NOPTransformer.INSTANCE;
+ public static <T> Transformer<T, T> nopTransformer() {
+ return NOPTransformer.<T>getInstance();
}
/**
@@ -122,8 +121,8 @@
*
* @return the transformer
*/
- public static Transformer cloneTransformer() {
- return CloneTransformer.INSTANCE;
+ public static <T> Transformer<T, T> cloneTransformer() {
+ return CloneTransformer.<T>getInstance();
}
/**
@@ -135,7 +134,7 @@
* @param constantToReturn the constant object to return each time in the
transformer
* @return the transformer.
*/
- public static Transformer constantTransformer(Object constantToReturn) {
+ public static <I, O> Transformer<I, O> constantTransformer(O
constantToReturn) {
return ConstantTransformer.getInstance(constantToReturn);
}
@@ -149,7 +148,7 @@
* @return the transformer
* @throws IllegalArgumentException if the closure is null
*/
- public static Transformer asTransformer(Closure closure) {
+ public static <T> Transformer<T, T> asTransformer(Closure<? super T>
closure) {
return ClosureTransformer.getInstance(closure);
}
@@ -163,7 +162,7 @@
* @return the transformer
* @throws IllegalArgumentException if the predicate is null
*/
- public static Transformer asTransformer(Predicate predicate) {
+ public static <T> Transformer<T, Boolean> asTransformer(Predicate<? super
T> predicate) {
return PredicateTransformer.getInstance(predicate);
}
@@ -177,7 +176,7 @@
* @return the transformer
* @throws IllegalArgumentException if the factory is null
*/
- public static Transformer asTransformer(Factory factory) {
+ public static <I, O> Transformer<I, O> asTransformer(Factory<? extends O>
factory) {
return FactoryTransformer.getInstance(factory);
}
@@ -192,8 +191,10 @@
* @return the transformer
* @throws IllegalArgumentException if either transformer is null
*/
- public static Transformer chainedTransformer(Transformer transformer1,
Transformer transformer2) {
- return ChainedTransformer.getInstance(transformer1, transformer2);
+ public static <T> Transformer<T, T> chainedTransformer(
+ Transformer<? super T, ? extends T> transformer1,
+ Transformer<? super T, ? extends T> transformer2) {
+ return ChainedTransformer.<T>getInstance(transformer1, transformer2);
}
/**
@@ -207,7 +208,7 @@
* @throws IllegalArgumentException if the transformers array is null
* @throws IllegalArgumentException if any transformer in the array is null
*/
- public static Transformer chainedTransformer(Transformer[] transformers) {
+ public static <T> Transformer<T, T> chainedTransformer(Transformer<? super
T, ? extends T>[] transformers) {
return ChainedTransformer.getInstance(transformers);
}
@@ -223,7 +224,8 @@
* @throws IllegalArgumentException if the transformers collection is null
* @throws IllegalArgumentException if any transformer in the collection
is null
*/
- public static Transformer chainedTransformer(Collection transformers) {
+ public static <T> Transformer<T, T> chainedTransformer(
+ Collection<? extends Transformer<T, T>> transformers) {
return ChainedTransformer.getInstance(transformers);
}
@@ -240,8 +242,12 @@
* @throws IllegalArgumentException if the predicate is null
* @throws IllegalArgumentException if either transformer is null
*/
- public static Transformer switchTransformer(Predicate predicate,
Transformer trueTransformer, Transformer falseTransformer) {
- return SwitchTransformer.getInstance(new Predicate[] { predicate },
new Transformer[] { trueTransformer }, falseTransformer);
+ @SuppressWarnings("unchecked")
+ public static <I, O> Transformer<I, O> switchTransformer(Predicate<? super
I> predicate,
+ Transformer<? super I, ? extends O> trueTransformer,
+ Transformer<? super I, ? extends O> falseTransformer) {
+ return SwitchTransformer.getInstance(new Predicate[] { predicate },
+ new Transformer[] { trueTransformer }, falseTransformer);
}
/**
@@ -260,8 +266,9 @@
* @throws IllegalArgumentException if any element in the arrays is null
* @throws IllegalArgumentException if the arrays are different sizes
*/
- public static Transformer switchTransformer(Predicate[] predicates,
Transformer[] transformers) {
- return SwitchTransformer.getInstance(predicates, transformers, null);
+ public static <I, O> Transformer<I, O> switchTransformer(Predicate<? super
I>[] predicates,
+ Transformer<? super I, ? extends O>[] transformers) {
+ return SwitchTransformer.<I, O>getInstance(predicates, transformers,
null);
}
/**
@@ -282,8 +289,10 @@
* @throws IllegalArgumentException if any element in the arrays is null
* @throws IllegalArgumentException if the arrays are different sizes
*/
- public static Transformer switchTransformer(Predicate[] predicates,
Transformer[] transformers, Transformer defaultTransformer) {
- return SwitchTransformer.getInstance(predicates, transformers,
defaultTransformer);
+ public static <I, O> Transformer<I, O> switchTransformer(Predicate<? super
I>[] predicates,
+ Transformer<? super I, ? extends O>[] transformers,
+ Transformer<? super I, ? extends O> defaultTransformer) {
+ return SwitchTransformer.<I, O>getInstance(predicates, transformers,
defaultTransformer);
}
/**
@@ -307,8 +316,9 @@
* @throws IllegalArgumentException if any transformer in the map is null
* @throws ClassCastException if the map elements are of the wrong type
*/
- public static Transformer switchTransformer(Map predicatesAndTransformers)
{
- return SwitchTransformer.getInstance(predicatesAndTransformers);
+ public static <I, O> Transformer<I, O> switchTransformer(
+ Map<Predicate<I>, Transformer<I, O>> predicatesAndTransformers) {
+ return SwitchTransformer.<I, O>getInstance(predicatesAndTransformers);
}
/**
@@ -328,24 +338,23 @@
* @throws IllegalArgumentException if the map is empty
* @throws IllegalArgumentException if any transformer in the map is null
*/
- public static Transformer switchMapTransformer(Map objectsAndTransformers)
{
- Transformer[] trs = null;
- Predicate[] preds = null;
+ @SuppressWarnings("unchecked")
+ public static <I, O> Transformer<I, O> switchMapTransformer(Map<I,
Transformer<I, O>> objectsAndTransformers) {
+ Transformer<? super I, ? extends O>[] trs = null;
+ Predicate<I>[] preds = null;
if (objectsAndTransformers == null) {
throw new IllegalArgumentException("The object and transformer map
must not be null");
}
- Transformer def = (Transformer) objectsAndTransformers.remove(null);
+ Transformer<? super I, ? extends O> def =
objectsAndTransformers.remove(null);
int size = objectsAndTransformers.size();
trs = new Transformer[size];
preds = new Predicate[size];
int i = 0;
- for (Iterator it = objectsAndTransformers.entrySet().iterator();
it.hasNext();) {
- Map.Entry entry = (Map.Entry) it.next();
- preds[i] = EqualPredicate.getInstance(entry.getKey());
- trs[i] = (Transformer) entry.getValue();
- i++;
+ for (Map.Entry<I, Transformer<I, O>> entry :
objectsAndTransformers.entrySet()) {
+ preds[i] = EqualPredicate.<I>equalPredicate(entry.getKey());
+ trs[i++] = entry.getValue();
}
- return switchTransformer(preds, trs, def);
+ return TransformerUtils.<I, O>switchTransformer(preds, trs, def);
}
/**
@@ -355,8 +364,8 @@
*
* @return the transformer
*/
- public static Transformer instantiateTransformer() {
- return InstantiateTransformer.NO_ARG_INSTANCE;
+ public static <T> Transformer<Class<? extends T>, T>
instantiateTransformer() {
+ return InstantiateTransformer.<T>getInstance();
}
/**
@@ -371,8 +380,9 @@
* @return the transformer
* @throws IllegalArgumentException if the paramTypes and args don't match
*/
- public static Transformer instantiateTransformer(Class[] paramTypes,
Object[] args) {
- return InstantiateTransformer.getInstance(paramTypes, args);
+ public static <T> Transformer<Class<? extends T>, T>
instantiateTransformer(
+ Class<?>[] paramTypes, Object[] args) {
+ return InstantiateTransformer.<T>getInstance(paramTypes, args);
}
/**
@@ -385,7 +395,7 @@
* @return the transformer
* @throws IllegalArgumentException if the map is null
*/
- public static Transformer mapTransformer(Map map) {
+ public static <I, O> Transformer<I, O> mapTransformer(Map<? super I, ?
extends O> map) {
return MapTransformer.getInstance(map);
}
@@ -404,8 +414,8 @@
* @return the transformer
* @throws IllegalArgumentException if the methodName is null.
*/
- public static Transformer invokerTransformer(String methodName){
- return InvokerTransformer.getInstance(methodName, null, null);
+ public static <I, O> Transformer<I, O> invokerTransformer(String
methodName){
+ return InvokerTransformer.<I, O>getInstance(methodName, null, null);
}
/**
@@ -422,8 +432,8 @@
* @throws IllegalArgumentException if the method name is null
* @throws IllegalArgumentException if the paramTypes and args don't match
*/
- public static Transformer invokerTransformer(String methodName, Class[]
paramTypes, Object[] args){
- return InvokerTransformer.getInstance(methodName, paramTypes, args);
+ public static <I, O> Transformer<I, O> invokerTransformer(String
methodName, Class<?>[] paramTypes, Object[] args){
+ return InvokerTransformer.<I, O>getInstance(methodName, paramTypes,
args);
}
/**
@@ -435,8 +445,8 @@
*
* @return the transformer
*/
- public static Transformer stringValueTransformer() {
- return StringValueTransformer.INSTANCE;
+ public static <T> Transformer<T, String> stringValueTransformer() {
+ return StringValueTransformer.<T>getInstance();
}
}