You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/11/23 07:32:13 UTC
[2/2] commons-collections git commit: [COLLECTIONS-701]
StackOverflowError in SetUniqueList.add() when it receives itself. Closes
#57.
[COLLECTIONS-701] StackOverflowError in SetUniqueList.add() when it
receives itself. Closes #57.
Project: http://git-wip-us.apache.org/repos/asf/commons-collections/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-collections/commit/1979a6e3
Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/1979a6e3
Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/1979a6e3
Branch: refs/heads/master
Commit: 1979a6e31067a18c9ede59ad4518f738512eba82
Parents: dc828f8
Author: Don Jeba <do...@yahoo.com>
Authored: Fri Nov 23 00:32:09 2018 -0700
Committer: Gary Gregory <ga...@gmail.com>
Committed: Fri Nov 23 00:32:09 2018 -0700
----------------------------------------------------------------------
src/changes/changes.xml | 3 +++
.../collections4/list/SetUniqueList.java | 2 +-
.../collections4/list/Collections701Test.java | 1 -
.../collections4/list/SetUniqueListTest.java | 27 +++++++++++++++++++-
4 files changed, 30 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/1979a6e3/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 1d5fb6b..2cc7a7e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -36,6 +36,9 @@
<action issue="COLLECTIONS-696" dev="ggregory" type="add" due-to="Maxim Solodovnik">
AbstractReferenceMap made easier for subclassing; PR #51.
</action>
+ <action issue="COLLECTIONS-701" dev="ggregory" type="fix" due-to="Don Jeba">
+ StackOverflowError in SetUniqueList.add() when it receives itself.
+ </action>
</release>
<release version="4.2" date="2018-07-11" description="Update from Java 6 to Java 7, bug fixes, and small changes.">
<action issue="COLLECTIONS-681" dev="kinow" type="add" due-to="Stephan Fuhrmann">
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/1979a6e3/src/main/java/org/apache/commons/collections4/list/SetUniqueList.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/collections4/list/SetUniqueList.java b/src/main/java/org/apache/commons/collections4/list/SetUniqueList.java
index 3227e43..b00b2d2 100644
--- a/src/main/java/org/apache/commons/collections4/list/SetUniqueList.java
+++ b/src/main/java/org/apache/commons/collections4/list/SetUniqueList.java
@@ -149,8 +149,8 @@ public class SetUniqueList<E> extends AbstractSerializableListDecorator<E> {
public void add(final int index, final E object) {
// adds element if it is not contained already
if (set.contains(object) == false) {
- super.add(index, object);
set.add(object);
+ super.add(index, object);
}
}
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/1979a6e3/src/test/java/org/apache/commons/collections4/list/Collections701Test.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/collections4/list/Collections701Test.java b/src/test/java/org/apache/commons/collections4/list/Collections701Test.java
index 118369c..82bfd26 100644
--- a/src/test/java/org/apache/commons/collections4/list/Collections701Test.java
+++ b/src/test/java/org/apache/commons/collections4/list/Collections701Test.java
@@ -47,7 +47,6 @@ public class Collections701Test {
}
@Test
- @Ignore
public void testSetUniqueList() {
final List<Object> source = new ArrayList<>();
final List<Object> list = SetUniqueList.setUniqueList(source);
http://git-wip-us.apache.org/repos/asf/commons-collections/blob/1979a6e3/src/test/java/org/apache/commons/collections4/list/SetUniqueListTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/commons/collections4/list/SetUniqueListTest.java b/src/test/java/org/apache/commons/collections4/list/SetUniqueListTest.java
index 24d2209..e8b6c14 100644
--- a/src/test/java/org/apache/commons/collections4/list/SetUniqueListTest.java
+++ b/src/test/java/org/apache/commons/collections4/list/SetUniqueListTest.java
@@ -139,6 +139,7 @@ public class SetUniqueListTest<E> extends AbstractListTest<E> {
assertEquals("Size should increase after addAll",
size + elements.length, getCollection().size());
}
+
@Override
public void testCollectionIteratorRemove() {
try {
@@ -148,7 +149,6 @@ public class SetUniqueListTest<E> extends AbstractListTest<E> {
extraVerify = true;
}
}
-
public void testCollections304() {
final List<String> list = new LinkedList<>();
final SetUniqueList<String> decoratedList = SetUniqueList.setUniqueList(list);
@@ -213,6 +213,31 @@ public class SetUniqueListTest<E> extends AbstractListTest<E> {
assertFalse(subUniqueList.contains("World")); // fails
}
+ public void testCollections701() {
+ final SetUniqueList<Object> uniqueList = new SetUniqueList<>(new ArrayList<>(), new HashSet<>());
+ final Integer obj1 = Integer.valueOf(1);
+ final Integer obj2 = Integer.valueOf(2);
+ uniqueList.add(obj1);
+ uniqueList.add(obj2);
+ assertEquals(2, uniqueList.size());
+ uniqueList.add(uniqueList);
+ assertEquals(3, uniqueList.size());
+ final List<Object> list = new LinkedList<>();
+ final SetUniqueList<Object> decoratedList = SetUniqueList.setUniqueList(list);
+ final String s1 = "Apple";
+ final String s2 = "Lemon";
+ final String s3 = "Orange";
+ final String s4 = "Strawberry";
+ decoratedList.add(s1);
+ decoratedList.add(s2);
+ decoratedList.add(s3);
+ assertEquals(3, decoratedList.size());
+ decoratedList.set(1, s4);
+ assertEquals(3, decoratedList.size());
+ decoratedList.add(decoratedList);
+ assertEquals(4, decoratedList.size());
+ }
+
//-----------------------------------------------------------------------
public void testFactory() {
final Integer[] array = new Integer[] { Integer.valueOf(1), Integer.valueOf(2), Integer.valueOf(1) };