Author: mbenson Date: Mon Mar 9 22:40:01 2009 New Revision: 751887 URL: http://svn.apache.org/viewvc?rev=751887&view=rev Log: add methods to wrap Maps and SortedMaps not based on Commons Collections classes to their Iterable*Map counterparts
Modified: commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/MapUtils.java commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestMapUtils.java Modified: commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/MapUtils.java URL: http://svn.apache.org/viewvc/commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/MapUtils.java?rev=751887&r1=751886&r2=751887&view=diff ============================================================================== --- commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/MapUtils.java (original) +++ commons/proper/collections/branches/collections_jdk5_branch/src/java/org/apache/commons/collections/MapUtils.java Mon Mar 9 22:40:01 2009 @@ -30,6 +30,8 @@ import java.util.SortedMap; import java.util.TreeMap; +import org.apache.commons.collections.map.AbstractMapDecorator; +import org.apache.commons.collections.map.AbstractSortedMapDecorator; import org.apache.commons.collections.map.FixedSizeMap; import org.apache.commons.collections.map.FixedSizeSortedMap; import org.apache.commons.collections.map.LazyMap; @@ -1397,7 +1399,7 @@ * @return an ordered map backed by the given map * @throws IllegalArgumentException if the Map is null */ - public static <K, V> IterableMap<K, V> orderedMap(Map<K, V> map) { + public static <K, V> OrderedMap<K, V> orderedMap(Map<K, V> map) { return ListOrderedMap.decorate(map); } @@ -1621,4 +1623,40 @@ return LazySortedMap.getLazySortedMap(map, transformerFactory); } + /** + * Get the specified {...@link Map} as an {...@link IterableMap}. + * @param <K> + * @param <V> + * @param map to wrap if necessary. + * @return IterableMap<K, V> + * @since Commons Collections 5 + * @TODO fix version + */ + public static <K, V> IterableMap<K, V> iterableMap(Map<K, V> map) { + if (map == null) { + throw new IllegalArgumentException("Map must not be null"); + } + return map instanceof IterableMap ? (IterableMap<K, V>) map + : new AbstractMapDecorator<K, V>(map) { + }; + } + + /** + * Get the specified {...@link SortedMap} as an {...@link IterableSortedMap}. + * @param <K> + * @param <V> + * @param sortedMap to wrap if necessary + * @return {...@link IterableSortedMap}<K, V> + * @since Commons Collections 5 + * @TODO fix version + */ + public static <K, V> IterableSortedMap<K, V> iterableSortedMap(SortedMap<K, V> sortedMap) { + if (sortedMap == null) { + throw new IllegalArgumentException("Map must not be null"); + } + return sortedMap instanceof IterableSortedMap ? (IterableSortedMap<K, V>) sortedMap + : new AbstractSortedMapDecorator<K, V>(sortedMap) { + }; + } + } Modified: commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestMapUtils.java URL: http://svn.apache.org/viewvc/commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestMapUtils.java?rev=751887&r1=751886&r2=751887&view=diff ============================================================================== --- commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestMapUtils.java (original) +++ commons/proper/collections/branches/collections_jdk5_branch/src/test/org/apache/commons/collections/TestMapUtils.java Mon Mar 9 22:40:01 2009 @@ -31,6 +31,7 @@ import org.apache.commons.collections.keyvalue.DefaultKeyValue; import org.apache.commons.collections.keyvalue.DefaultMapEntry; +import org.apache.commons.collections.map.HashedMap; import org.apache.commons.collections.map.LazyMap; import org.apache.commons.collections.map.PredicatedMap; @@ -737,4 +738,37 @@ assertEquals(false, MapUtils.isNotEmpty(map)); } + public void testIterableMap() { + try { + MapUtils.iterableMap(null); + fail("Should throw IllegalArgumentException"); + } catch (IllegalArgumentException e) { + } + HashMap<String, String> map = new HashMap<String, String>(); + map.put("foo", "foov"); + map.put("bar", "barv"); + map.put("baz", "bazv"); + IterableMap<String, String> iMap = MapUtils.iterableMap(map); + assertEquals(map, iMap); + assertNotSame(map, iMap); + HashedMap<String, String> hMap = new HashedMap<String, String>(map); + assertSame(hMap, MapUtils.iterableMap(hMap)); + } + + public void testIterableSortedMap() { + try { + MapUtils.iterableSortedMap(null); + fail("Should throw IllegalArgumentException"); + } catch (IllegalArgumentException e) { + } + TreeMap<String, String> map = new TreeMap<String, String>(); + map.put("foo", "foov"); + map.put("bar", "barv"); + map.put("baz", "bazv"); + IterableSortedMap<String, String> iMap = MapUtils.iterableSortedMap(map); + assertEquals(map, iMap); + assertNotSame(map, iMap); + assertSame(iMap, MapUtils.iterableMap(iMap)); + } + }