Author: scolebourne
Date: Sat Oct 28 05:30:27 2006
New Revision: 468685
URL: http://svn.apache.org/viewvc?view=rev&rev=468685
Log:
COLLECTIONS-228 - MultiValueMap put and putAll do not return the correct values
Modified:
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java
Modified:
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java?view=diff&rev=468685&r1=468684&r2=468685
==============================================================================
---
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java
(original)
+++
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/map/MultiValueMap.java
Sat Oct 28 05:30:27 2006
@@ -206,12 +206,12 @@
boolean result = false;
Collection coll = getCollection(key);
if (coll == null) {
- coll = createCollection(1);
- result = coll.add(value);
+ coll = createCollection(1); // might produce a non-empty
collection
+ coll.add(value);
if (coll.size() > 0) {
// only add if non-zero size to maintain class state
getMap().put(key, coll);
- result = false;
+ result = true; // map definitely changed
}
} else {
result = coll.add(value);
@@ -308,19 +308,20 @@
if (values == null || values.size() == 0) {
return false;
}
+ boolean result = false;
Collection coll = getCollection(key);
if (coll == null) {
- coll = createCollection(values.size());
- boolean result = coll.addAll(values);
+ coll = createCollection(values.size()); // might produce a
non-empty collection
+ coll.addAll(values);
if (coll.size() > 0) {
// only add if non-zero size to maintain class state
getMap().put(key, coll);
- result = false;
+ result = true; // map definitely changed
}
- return result;
} else {
- return coll.addAll(values);
+ result = coll.addAll(values);
}
+ return result;
}
/**
Modified:
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java?view=diff&rev=468685&r1=468684&r2=468685
==============================================================================
---
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java
(original)
+++
jakarta/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/map/TestMultiValueMap.java
Sat Oct 28 05:30:27 2006
@@ -31,7 +31,6 @@
import org.apache.commons.collections.IteratorUtils;
import org.apache.commons.collections.MultiMap;
-import org.apache.commons.collections.TestMultiHashMap;
/**
* TestMultiValueMap.
@@ -47,11 +46,11 @@
}
public static Test suite() {
- return new TestSuite(TestMultiHashMap.class);
+ return new TestSuite(TestMultiValueMap.class);
}
public static void main(String args[]) {
- String[] testCaseName = { TestMultiHashMap.class.getName()};
+ String[] testCaseName = { TestMultiValueMap.class.getName()};
junit.textui.TestRunner.main(testCaseName);
}
@@ -202,9 +201,9 @@
map.put("B", "BC");
assertEquals(2, map.size());
map.remove("A");
- assertEquals(2, map.size());
+ assertEquals(1, map.size());
map.remove("B", "BC");
- assertEquals(2, map.size());
+ assertEquals(1, map.size());
}
public void testSize_Key() {
@@ -248,6 +247,25 @@
map.put("A", "AA");
assertEquals(true, map.containsValue("A", "AA"));
assertEquals(false, map.containsValue("A", "AB"));
+ }
+
+ public void testPutWithList() {
+ MultiValueMap test = MultiValueMap.decorate(new HashMap(),
ArrayList.class);
+ assertEquals("a", test.put("A", "a"));
+ assertEquals("b", test.put("A", "b"));
+ assertEquals(1, test.size());
+ assertEquals(2, test.size("A"));
+ assertEquals(2, test.totalSize());
+ }
+
+ public void testPutWithSet() {
+ MultiValueMap test = MultiValueMap.decorate(new HashMap(),
HashSet.class);
+ assertEquals("a", test.put("A", "a"));
+ assertEquals("b", test.put("A", "b"));
+ assertEquals(null, test.put("A", "a"));
+ assertEquals(1, test.size());
+ assertEquals(2, test.size("A"));
+ assertEquals(2, test.totalSize());
}
public void testPutAll_Map1() {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]