You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ch...@apache.org on 2017/07/11 17:55:34 UTC
[04/50] commons-collections git commit: Backport COLLECTIONS-249 to
3.2.2.
Backport COLLECTIONS-249 to 3.2.2.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/branches/COLLECTIONS_3_2_X@1713172 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/16b1e26b
Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/16b1e26b
Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/16b1e26b
Branch: refs/heads/COLLECTIONS_3_2_X
Commit: 16b1e26bd1399779a6bd7177951c0770631a6cc5
Parents: a2ddc7c
Author: Thomas Neidhart <tn...@apache.org>
Authored: Sat Nov 7 20:26:30 2015 +0000
Committer: Thomas Neidhart <tn...@apache.org>
Committed: Sat Nov 7 20:26:30 2015 +0000
----------------------------------------------------------------------
src/changes/changes.xml | 8 +++---
.../commons/collections/list/SetUniqueList.java | 10 ++++++--
.../collections/list/TestSetUniqueList.java | 26 +++++++++++++++++++-
3 files changed, 37 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/16b1e26b/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0ae417c..f278a9d 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -23,6 +23,10 @@
<release version="3.2.2" date="20XX-XX-XX" description="This is a bugfix release.">
+ <action issue="COLLECTIONS-249" dev="bayard" type="fix" due-to="Joe Kelly">
+ "SetUniqueList.addAll(int, Collection)" now correctly add the collection at the
+ provided index.
+ </action>
<action issue="COLLECTIONS-219" dev="scolebourne" type="fix" due-to="Tom Leccese">
"CollectionUtils#removeAll" wrongly called "ListUtils#retainAll".
</action>
@@ -74,10 +78,6 @@
"Flat3Map#remove(Object)" will now return the correct value mapped to the removed key
if the size of the map is less or equal 3.
</action>
- <action issue="COLLECTIONS-249" dev="bayard" type="fix" due-to="Joe Kelly">
- "SetUniqueList.addAll(int, Collection)" now correctly add the collection at the
- provided index.
- </action>
<action issue="COLLECTIONS-228" dev="scolebourne" type="fix">
"MultiValueMap#put(Object, Object)" and "MultiValueMap#putAll(Object, Collection)"
now correctly return if the map has changed by this operation.
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/16b1e26b/src/java/org/apache/commons/collections/list/SetUniqueList.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/commons/collections/list/SetUniqueList.java b/src/java/org/apache/commons/collections/list/SetUniqueList.java
index b075608..3eb5f34 100644
--- a/src/java/org/apache/commons/collections/list/SetUniqueList.java
+++ b/src/java/org/apache/commons/collections/list/SetUniqueList.java
@@ -168,7 +168,8 @@ public class SetUniqueList extends AbstractSerializableListDecorator {
}
/**
- * Adds a collection of objects to the end of the list avoiding duplicates.
+ * Adds a collection of objects a specific index in the list avoiding
+ * duplicates.
* <p>
* Only elements that are not already in this list will be added, and
* duplicates from the specified collection will be ignored.
@@ -187,7 +188,12 @@ public class SetUniqueList extends AbstractSerializableListDecorator {
// adds all elements
for (final Iterator it = coll.iterator(); it.hasNext();) {
- add(it.next());
+ int sizeBeforeAddNext = size();
+ add(index, it.next());
+ // if it was inserted, then increase the target index
+ if (sizeBeforeAddNext != size()) {
+ index++;
+ }
}
// compares sizes to detect if collection changed
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/16b1e26b/src/test/org/apache/commons/collections/list/TestSetUniqueList.java
----------------------------------------------------------------------
diff --git a/src/test/org/apache/commons/collections/list/TestSetUniqueList.java b/src/test/org/apache/commons/collections/list/TestSetUniqueList.java
index 560a88b..fe08150 100644
--- a/src/test/org/apache/commons/collections/list/TestSetUniqueList.java
+++ b/src/test/org/apache/commons/collections/list/TestSetUniqueList.java
@@ -144,7 +144,31 @@ public class TestSetUniqueList extends AbstractTestList {
assertEquals("Size should increase after addAll",
size + elements.length, collection.size());
}
-
+
+ public void testIntCollectionAddAll() {
+ // make a SetUniqueList with one element
+ List list = new SetUniqueList(new ArrayList(), new HashSet());
+ final Integer existingElement = new Integer(1);
+ list.add(existingElement);
+
+ // add two new unique elements at index 0
+ final Integer firstNewElement = new Integer(2);
+ final Integer secondNewElement = new Integer(3);
+ collection = Arrays.asList(new Integer[] { firstNewElement, secondNewElement });
+ list.addAll(0, collection);
+ assertEquals("Unique elements should be added.", 3, list.size());
+ assertEquals("First new element should be at index 0", firstNewElement, list.get(0));
+ assertEquals("Second new element should be at index 1", secondNewElement, list.get(1));
+ assertEquals("Existing element should shift to index 2", existingElement, list.get(2));
+
+ // add a duplicate element and a unique element at index 0
+ final Integer thirdNewElement = new Integer(4);
+ collection = Arrays.asList(new Integer[] { existingElement, thirdNewElement });
+ list.addAll(0, collection);
+ assertEquals("Duplicate element should not be added, unique element should be added.", 4, list.size());
+ assertEquals("Third new element should be at index 0", thirdNewElement, list.get(0));
+ }
+
public void testListSetByIndex() {
// override for set behaviour
resetFull();