Backport COLLECTIONS-219 to 3.2.2 git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/branches/COLLECTIONS_3_2_X@1713167 13f79535-47bb-0310-9956-ffa450edef68
Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/e709ea82 Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/e709ea82 Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/e709ea82 Branch: refs/heads/COLLECTIONS_3_2_X Commit: e709ea82aa3ead7468e7c2ebee85cd3a51d82061 Parents: 6e5ae53 Author: Thomas Neidhart <t...@apache.org> Authored: Sat Nov 7 19:44:03 2015 +0000 Committer: Thomas Neidhart <t...@apache.org> Committed: Sat Nov 7 19:44:03 2015 +0000 ---------------------------------------------------------------------- src/changes/changes.xml | 7 +- .../commons/collections/CollectionUtils.java | 2 +- .../collections/TestCollectionUtils.java | 68 +++++++++++++++++++- 3 files changed, 72 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/e709ea82/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index b7289a9..a4d1492 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -22,6 +22,10 @@ <body> <release version="3.2.2" date="20XX-XX-XX" description="This is a bugfix release."> + + <action issue="COLLECTIONS-219" dev="scolebourne" type="fix" due-to="Tom Leccese"> + "CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". + </action> <!-- Bugfixes planned to backport from 4.0 @@ -94,9 +98,6 @@ "MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)" now correctly return if the map has changed by this operation. </action> - <action issue="COLLECTIONS-219" dev="scolebourne" type="fix" due-to="Tom Leccese"> - "CollectionUtils#removeAll" wrongly called "ListUtils#retainAll". - </action> <action issue="COLLECTIONS-217" dev="scolebourne" type="fix" due-to="Matt Bishop"> Calling "setValue(Object)" on any Entry returned by a "Flat3Map" will now correctly set the value for the current entry. http://git-wip-us.apache.org/repos/asf/commons-collections/blob/e709ea82/src/java/org/apache/commons/collections/CollectionUtils.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/CollectionUtils.java b/src/java/org/apache/commons/collections/CollectionUtils.java index 3b736b4..3abcd3d 100644 --- a/src/java/org/apache/commons/collections/CollectionUtils.java +++ b/src/java/org/apache/commons/collections/CollectionUtils.java @@ -1119,7 +1119,7 @@ public class CollectionUtils { * @since Commons Collections 3.2 */ public static Collection removeAll(Collection collection, Collection remove) { - return ListUtils.retainAll(collection, remove); + return ListUtils.removeAll(collection, remove); } //----------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/e709ea82/src/test/org/apache/commons/collections/TestCollectionUtils.java ---------------------------------------------------------------------- diff --git a/src/test/org/apache/commons/collections/TestCollectionUtils.java b/src/test/org/apache/commons/collections/TestCollectionUtils.java index 38f992e..86478dc 100644 --- a/src/test/org/apache/commons/collections/TestCollectionUtils.java +++ b/src/test/org/apache/commons/collections/TestCollectionUtils.java @@ -1239,7 +1239,73 @@ public class TestCollectionUtils extends TestCase { assertEquals(eltc,eltb); } - public void testTransformedCollection() { + // ----------------------------------------------------------------------- + + public void testRetainAll() { + final List base = new ArrayList(); + base.add("A"); + base.add("B"); + base.add("C"); + final List sub = new ArrayList(); + sub.add("A"); + sub.add("C"); + sub.add("X"); + + final Collection result = CollectionUtils.retainAll(base, sub); + assertEquals(2, result.size()); + assertEquals(true, result.contains("A")); + assertFalse(result.contains("B")); + assertEquals(true, result.contains("C")); + assertEquals(3, base.size()); + assertEquals(true, base.contains("A")); + assertEquals(true, base.contains("B")); + assertEquals(true, base.contains("C")); + assertEquals(3, sub.size()); + assertEquals(true, sub.contains("A")); + assertEquals(true, sub.contains("C")); + assertEquals(true, sub.contains("X")); + + try { + CollectionUtils.retainAll(null, null); + fail("expecting NullPointerException"); + } catch (final NullPointerException npe) { + } // this is what we want + } + + public void testRemoveAll() { + final List base = new ArrayList(); + base.add("A"); + base.add("B"); + base.add("C"); + final List sub = new ArrayList(); + sub.add("A"); + sub.add("C"); + sub.add("X"); + + final Collection result = CollectionUtils.removeAll(base, sub); + assertEquals(1, result.size()); + assertFalse(result.contains("A")); + assertEquals(true, result.contains("B")); + assertFalse(result.contains("C")); + assertEquals(3, base.size()); + assertEquals(true, base.contains("A")); + assertEquals(true, base.contains("B")); + assertEquals(true, base.contains("C")); + assertEquals(3, sub.size()); + assertEquals(true, sub.contains("A")); + assertEquals(true, sub.contains("C")); + assertEquals(true, sub.contains("X")); + + try { + CollectionUtils.removeAll(null, null); + fail("expecting NullPointerException"); + } catch (final NullPointerException npe) { + } // this is what we want + } + + // ----------------------------------------------------------------------- + + public void testTransformedCollection() { Transformer transformer = TransformerUtils.nopTransformer(); Collection collection = CollectionUtils.transformedCollection(new ArrayList(), transformer);