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