You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2006/10/28 14:30:28 UTC
svn commit: r468685 - in
/jakarta/commons/proper/collections/branches/collections_jdk5_branch/src:
java/org/apache/commons/collections/map/MultiValueMap.java
test/org/apache/commons/collections/map/TestMultiValueMap.java
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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org