Author: dlaha
Date: Fri Oct 17 11:27:23 2014
New Revision: 1632539

URL: http://svn.apache.org/r1632539
Log:
[COLLECTIONS-533] Changing SetValuedLinkedHashMap's default collection to 
LinkedHashSet to preserve insertion order & some more tests

Modified:
    
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMap.java
    
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMapTest.java

Modified: 
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMap.java
URL: 
http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMap.java?rev=1632539&r1=1632538&r2=1632539&view=diff
==============================================================================
--- 
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMap.java
 (original)
+++ 
commons/proper/collections/trunk/src/main/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMap.java
 Fri Oct 17 11:27:23 2014
@@ -16,13 +16,7 @@
  */
 package org.apache.commons.collections4.multimap;
 
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
 
 import org.apache.commons.collections4.ListValuedMap;
 import org.apache.commons.collections4.MultiValuedMap;
@@ -96,7 +90,8 @@ public class MultiValuedLinkedHashMap<K,
 
     /**
      * Creates a {@link SetValuedMap} with a {@link LinkedHashMap} as its 
internal
-     * storage
+     * storage. This <code>SetValuedMap</code> implementation uses {@link 
LinkedHashSet} as its
+     * underlying <code>Collection</code> to preserve the item insertion order
      *
      * @param <K> the key type
      * @param <V> the value type
@@ -104,7 +99,7 @@ public class MultiValuedLinkedHashMap<K,
      */
     @SuppressWarnings({ "unchecked", "rawtypes" })
     public static <K, V> SetValuedMap<K, V> setValuedLinkedHashMap() {
-        return new SetValuedLinkedHashMap(HashSet.class);
+        return new SetValuedLinkedHashMap(LinkedHashSet.class);
     }
 
     /**

Modified: 
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMapTest.java
URL: 
http://svn.apache.org/viewvc/commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMapTest.java?rev=1632539&r1=1632538&r2=1632539&view=diff
==============================================================================
--- 
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMapTest.java
 (original)
+++ 
commons/proper/collections/trunk/src/test/java/org/apache/commons/collections4/multimap/MultiValuedLinkedHashMapTest.java
 Fri Oct 17 11:27:23 2014
@@ -109,6 +109,21 @@ public class MultiValuedLinkedHashMapTes
         assertFalse(setMap.containsKey("A"));
     }
 
+    public void testSetValuedMapIterationOrder() {
+        SetValuedMap<K, V> setMap = 
MultiValuedLinkedHashMap.setValuedLinkedHashMap();
+        addSampleMappings(setMap);
+
+        MapIterator<K, V> mapIt = setMap.mapIterator();
+        Iterator keyIt = Arrays.asList(getSampleKeys()).iterator();
+        Iterator valueIt = Arrays.asList(getSampleValues()).iterator();
+
+        while(mapIt.hasNext()) {
+            mapIt.next();
+            assertEquals(mapIt.getKey(), keyIt.next());
+            assertEquals(mapIt.getValue(), valueIt.next());
+        }
+    }
+
     @SuppressWarnings("unchecked")
     public void testListValuedMapAdd() {
         final ListValuedMap<K, V> listMap = 
MultiValuedLinkedHashMap.listValuedLinkedHashMap();
@@ -170,6 +185,21 @@ public class MultiValuedLinkedHashMapTes
         assertEquals(2, listMap.get("B").size());
     }
 
+    public void testListValuedMapIterationOrder() {
+        ListValuedMap<K, V> listMap = 
MultiValuedLinkedHashMap.listValuedLinkedHashMap();
+        addSampleMappings(listMap);
+
+        MapIterator<K, V> mapIt = listMap.mapIterator();
+        Iterator keyIt = Arrays.asList(getSampleKeys()).iterator();
+        Iterator valueIt = Arrays.asList(getSampleValues()).iterator();
+
+        while(mapIt.hasNext()) {
+            mapIt.next();
+            assertEquals(mapIt.getKey(), keyIt.next());
+            assertEquals(mapIt.getValue(), valueIt.next());
+        }
+    }
+
     @SuppressWarnings({ "unchecked", "rawtypes" })
     public void testEqualsHashCodeContract() {
         MultiValuedMap map1 = new MultiValuedLinkedHashMap();


Reply via email to