You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by sk...@apache.org on 2008/04/15 06:32:40 UTC

svn commit: r648113 - in /commons/proper/collections/branches/collections_jdk5_branch/src: java/org/apache/commons/collections/CollectionUtils.java test/org/apache/commons/collections/TestCollectionUtils.java

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));