Author: skestle Date: Mon Apr 14 21:32:39 2008 New Revision: 648113 URL: http://svn.apache.org/viewvc?rev=648113&view=rev Log: Updated CollectionUtils to return the same type of Collection that is passed into select(), reject() and collect()
Modified: commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/CollectionUtils.java commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestCollectionUtils.java Modified: commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/CollectionUtils.java URL: http://svn.apache.org/viewvc/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/CollectionUtils.java?rev=648113&r1=648112&r2=648113&view=diff ============================================================================== --- commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/CollectionUtils.java (original) +++ commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/CollectionUtils.java Mon Apr 14 21:32:39 2008 @@ -586,7 +586,7 @@ * the collection to output into, may not be null * @return outputCollection */ - public static <O, I extends O> Collection<O> select(Collection<I> inputCollection, Predicate<? super I> predicate, Collection<O> outputCollection) { + public static <O, I extends O, R extends Collection<O>> R select(Collection<I> inputCollection, Predicate<? super I> predicate, R outputCollection) { if (inputCollection != null && predicate != null) { for (I item : inputCollection) { if (predicate.evaluate(item)) { @@ -631,7 +631,7 @@ * the collection to output into, may not be null * @return outputCollection */ - public static <O, I extends O> Collection<O> selectRejected(Collection<I> inputCollection, Predicate<? super I> predicate, Collection<O> outputCollection) { + public static <O, I extends O, R extends Collection<O>> R selectRejected(Collection<I> inputCollection, Predicate<? super I> predicate, R outputCollection) { if (inputCollection != null && predicate != null) { for (I item : inputCollection) { if (!predicate.evaluate(item)) { @@ -701,7 +701,7 @@ * @return the outputCollection with the transformed input added * @throws NullPointerException if the output collection is null */ - public static <I,O,T extends O> Collection<O> collect(Iterable<I> inputCollection, final Transformer<? super I,T> transformer, final Collection<O> outputCollection) { + public static <I,O,T extends O, R extends Collection<O>> R collect(Iterable<I> inputCollection, final Transformer<? super I,T> transformer, final R outputCollection) { if (inputCollection != null) { return collect(inputCollection.iterator(), transformer, outputCollection); } @@ -725,7 +725,7 @@ * @throws NullPointerException if the output collection is null */ //TODO - deprecate and replace with IteratorIterable - public static <I,O,T extends O> Collection<O> collect(Iterator<I> inputIterator, final Transformer<? super I,T> transformer, final Collection<O> outputCollection) { + public static <I,O,T extends O, R extends Collection<O>> R collect(Iterator<I> inputIterator, final Transformer<? super I,T> transformer, final R outputCollection) { if (inputIterator != null && transformer != null) { while (inputIterator.hasNext()) { I item = inputIterator.next(); Modified: commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestCollectionUtils.java URL: http://svn.apache.org/viewvc/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestCollectionUtils.java?rev=648113&r1=648112&r2=648113&view=diff ============================================================================== --- commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestCollectionUtils.java (original) +++ commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestCollectionUtils.java Mon Apr 14 21:32:39 2008 @@ -931,7 +931,7 @@ // Ensure that the collection is the input type or a super type Collection<Integer> output1 = CollectionUtils.select(list, EQUALS_TWO); Collection<Number> output2 = CollectionUtils.<Number, Integer>select(list, EQUALS_TWO); - Collection<Number> output3 = CollectionUtils.select(list, EQUALS_TWO, new HashSet<Number>()); + HashSet<Number> output3 = CollectionUtils.select(list, EQUALS_TWO, new HashSet<Number>()); assertTrue(CollectionUtils.isEqualCollection(output1, output3)); assertEquals(4, list.size()); assertEquals(1, output1.size()); @@ -947,7 +947,7 @@ list.add(4L); Collection<Long> output1 = CollectionUtils.selectRejected(list, EQUALS_TWO); Collection<Number> output2 = CollectionUtils.<Number, Long>selectRejected(list, EQUALS_TWO); - Collection<Number> output3 = CollectionUtils.selectRejected(list, EQUALS_TWO, new HashSet<Number>()); + HashSet<Number> output3 = CollectionUtils.selectRejected(list, EQUALS_TWO, new HashSet<Number>()); assertTrue(CollectionUtils.isEqualCollection(output1, output2)); assertTrue(CollectionUtils.isEqualCollection(output1, output3)); assertEquals(4, list.size()); @@ -964,17 +964,16 @@ assertTrue(collection.size() == collectionA.size()); assertCollectResult(collection); - collection = new ArrayList<Number>(); - CollectionUtils.collect(collectionA, transformer, collection); - assertTrue(collection.size() == collectionA.size()); - assertCollectResult(collection); + ArrayList<Number> list; + list = CollectionUtils.collect(collectionA, transformer, new ArrayList<Number>()); + assertTrue(list.size() == collectionA.size()); + assertCollectResult(list); Iterator<Integer> iterator = null; - collection = new ArrayList<Number>(); - CollectionUtils.collect(iterator, transformer, collection); + list = CollectionUtils.collect(iterator, transformer, new ArrayList<Number>()); iterator = iterableA.iterator(); - CollectionUtils.collect(iterator, transformer, collection); + list = CollectionUtils.collect(iterator, transformer, list); assertTrue(collection.size() == collectionA.size()); assertCollectResult(collection); @@ -986,7 +985,7 @@ assertTrue(collection.size() == 0); int size = collectionA.size(); - CollectionUtils.collect((Collection<Integer>) null, transformer, collectionB); + collectionB = CollectionUtils.collect((Collection<Integer>) null, transformer, collectionB); assertTrue(collectionA.size() == size && collectionA.contains(1)); CollectionUtils.collect(collectionB, null, collectionA); assertTrue(collectionA.size() == size && collectionA.contains(1));