Backport COLLECTIONS-217 to 3.2.2 git-svn-id: https://svn.apache.org/repos/asf/commons/proper/collections/branches/COLLECTIONS_3_2_X@1713290 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/46e5a832 Tree: http://git-wip-us.apache.org/repos/asf/commons-collections/tree/46e5a832 Diff: http://git-wip-us.apache.org/repos/asf/commons-collections/diff/46e5a832 Branch: refs/heads/COLLECTIONS_3_2_X Commit: 46e5a83207196e5ef5f97fc123b8862190429931 Parents: c0da312 Author: Thomas Neidhart <t...@apache.org> Authored: Sun Nov 8 20:21:27 2015 +0000 Committer: Thomas Neidhart <t...@apache.org> Committed: Sun Nov 8 20:21:27 2015 +0000 ---------------------------------------------------------------------- src/changes/changes.xml | 8 +-- .../commons/collections/map/Flat3Map.java | 3 + .../commons/collections/map/TestFlat3Map.java | 61 ++++++++++++++++++++ 3 files changed, 68 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-collections/blob/46e5a832/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 683723b..bccc7e1 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -53,6 +53,10 @@ <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. + </action> <!-- Bugfixes planned to backport from 4.0 @@ -85,10 +89,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-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. - </action> --> </release> </body> http://git-wip-us.apache.org/repos/asf/commons-collections/blob/46e5a832/src/java/org/apache/commons/collections/map/Flat3Map.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/commons/collections/map/Flat3Map.java b/src/java/org/apache/commons/collections/map/Flat3Map.java index 518842b..19085f1 100644 --- a/src/java/org/apache/commons/collections/map/Flat3Map.java +++ b/src/java/org/apache/commons/collections/map/Flat3Map.java @@ -804,10 +804,13 @@ public class Flat3Map implements IterableMap, Serializable, Cloneable { switch (nextIndex) { case 3: parent.value3 = value; + break; case 2: parent.value2 = value; + break; case 1: parent.value1 = value; + break; } return old; } http://git-wip-us.apache.org/repos/asf/commons-collections/blob/46e5a832/src/test/org/apache/commons/collections/map/TestFlat3Map.java ---------------------------------------------------------------------- diff --git a/src/test/org/apache/commons/collections/map/TestFlat3Map.java b/src/test/org/apache/commons/collections/map/TestFlat3Map.java index 9359602..427b7ae 100644 --- a/src/test/org/apache/commons/collections/map/TestFlat3Map.java +++ b/src/test/org/apache/commons/collections/map/TestFlat3Map.java @@ -20,6 +20,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; +import java.util.Iterator; import java.util.Map; import junit.framework.Test; @@ -40,8 +41,10 @@ public class TestFlat3Map extends AbstractTestIterableMap { private static final Integer ONE = new Integer(1); private static final Integer TWO = new Integer(2); + private static final Integer THREE = new Integer(3); private static final String TEN = "10"; private static final String TWENTY = "20"; + private static final String THIRTY = "30"; public TestFlat3Map(String testName) { super(testName); @@ -60,6 +63,64 @@ public class TestFlat3Map extends AbstractTestIterableMap { } //----------------------------------------------------------------------- + public void testEntryIteratorSetValue1() throws Exception { + final Flat3Map map = new Flat3Map(); + map.put(ONE, TEN); + map.put(TWO, TWENTY); + map.put(THREE, THIRTY); + + final Iterator it = map.entrySet().iterator(); + final Map.Entry entry = (Map.Entry) it.next(); + entry.setValue("NewValue"); + assertEquals(3, map.size()); + assertEquals(true, map.containsKey(ONE)); + assertEquals(true, map.containsKey(TWO)); + assertEquals(true, map.containsKey(THREE)); + assertEquals("NewValue", map.get(ONE)); + assertEquals(TWENTY, map.get(TWO)); + assertEquals(THIRTY, map.get(THREE)); + } + + public void testEntryIteratorSetValue2() throws Exception { + final Flat3Map map = new Flat3Map(); + map.put(ONE, TEN); + map.put(TWO, TWENTY); + map.put(THREE, THIRTY); + + final Iterator it = map.entrySet().iterator(); + it.next(); + final Map.Entry entry = (Map.Entry) it.next(); + entry.setValue("NewValue"); + assertEquals(3, map.size()); + assertEquals(true, map.containsKey(ONE)); + assertEquals(true, map.containsKey(TWO)); + assertEquals(true, map.containsKey(THREE)); + assertEquals(TEN, map.get(ONE)); + assertEquals("NewValue", map.get(TWO)); + assertEquals(THIRTY, map.get(THREE)); + } + + public void testEntryIteratorSetValue3() throws Exception { + final Flat3Map map = new Flat3Map(); + map.put(ONE, TEN); + map.put(TWO, TWENTY); + map.put(THREE, THIRTY); + + final Iterator it = map.entrySet().iterator(); + it.next(); + it.next(); + final Map.Entry entry = (Map.Entry) it.next(); + entry.setValue("NewValue"); + assertEquals(3, map.size()); + assertEquals(true, map.containsKey(ONE)); + assertEquals(true, map.containsKey(TWO)); + assertEquals(true, map.containsKey(THREE)); + assertEquals(TEN, map.get(ONE)); + assertEquals(TWENTY, map.get(TWO)); + assertEquals("NewValue", map.get(THREE)); + } + + //----------------------------------------------------------------------- public void testEquals1() { Flat3Map map1 = new Flat3Map(); map1.put("a", "testA");