From 747ee860790d94c6888c424d261ba4a5c06f31b0 Mon Sep 17 00:00:00 2001 From: Arjen Poutsma Date: Thu, 5 Feb 2009 15:33:44 +0000 Subject: [PATCH] Made CollectionsFactory generic --- .../core/CollectionFactory.java | 42 ++++++++++--------- .../springframework/core/ConcurrentMap.java | 8 ++-- .../jdbc/core/ColumnMapRowMapper.java | 2 +- .../jdbc/core/JdbcTemplate.java | 2 +- 4 files changed, 28 insertions(+), 26 deletions(-) diff --git a/org.springframework.core/src/main/java/org/springframework/core/CollectionFactory.java b/org.springframework.core/src/main/java/org/springframework/core/CollectionFactory.java index 201a5bfd3e1..99c2b5868e0 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/CollectionFactory.java +++ b/org.springframework.core/src/main/java/org/springframework/core/CollectionFactory.java @@ -99,8 +99,8 @@ public abstract class CollectionFactory { * @deprecated as of Spring 2.5, for usage on JDK 1.4 or higher */ @Deprecated - public static Set createLinkedSetIfPossible(int initialCapacity) { - return new LinkedHashSet(initialCapacity); + public static Set createLinkedSetIfPossible(int initialCapacity) { + return new LinkedHashSet(initialCapacity); } /** @@ -111,8 +111,8 @@ public abstract class CollectionFactory { * @deprecated as of Spring 3.0, for usage on JDK 1.5 or higher */ @Deprecated - public static Set createCopyOnWriteSet() { - return new CopyOnWriteArraySet(); + public static Set createCopyOnWriteSet() { + return new CopyOnWriteArraySet(); } /** @@ -124,8 +124,8 @@ public abstract class CollectionFactory { * @deprecated as of Spring 2.5, for usage on JDK 1.4 or higher */ @Deprecated - public static Map createLinkedMapIfPossible(int initialCapacity) { - return new LinkedHashMap(initialCapacity); + public static Map createLinkedMapIfPossible(int initialCapacity) { + return new LinkedHashMap(initialCapacity); } /** @@ -137,14 +137,14 @@ public abstract class CollectionFactory { * @see org.apache.commons.collections.map.CaseInsensitiveMap * @see org.apache.commons.collections.map.ListOrderedMap */ - public static Map createLinkedCaseInsensitiveMapIfPossible(int initialCapacity) { + public static Map createLinkedCaseInsensitiveMapIfPossible(int initialCapacity) { if (commonsCollections3Available) { logger.trace("Creating [org.apache.commons.collections.map.ListOrderedMap/CaseInsensitiveMap]"); return CommonsCollectionFactory.createListOrderedCaseInsensitiveMap(initialCapacity); } else { logger.debug("Falling back to [java.util.LinkedHashMap] for linked case-insensitive map"); - return new LinkedHashMap(initialCapacity); + return new LinkedHashMap(initialCapacity); } } @@ -157,8 +157,8 @@ public abstract class CollectionFactory { * @deprecated as of Spring 2.5, for usage on JDK 1.4 or higher */ @Deprecated - public static Map createIdentityMapIfPossible(int initialCapacity) { - return new IdentityHashMap(initialCapacity); + public static Map createIdentityMapIfPossible(int initialCapacity) { + return new IdentityHashMap(initialCapacity); } /** @@ -170,8 +170,8 @@ public abstract class CollectionFactory { * @deprecated as of Spring 3.0, for usage on JDK 1.5 or higher */ @Deprecated - public static Map createConcurrentMapIfPossible(int initialCapacity) { - return new ConcurrentHashMap(initialCapacity); + public static Map createConcurrentMapIfPossible(int initialCapacity) { + return new ConcurrentHashMap(initialCapacity); } /** @@ -183,8 +183,8 @@ public abstract class CollectionFactory { * @deprecated as of Spring 3.0, for usage on JDK 1.5 or higher */ @Deprecated - public static ConcurrentMap createConcurrentMap(int initialCapacity) { - return new JdkConcurrentHashMap(initialCapacity); + public static ConcurrentMap createConcurrentMap(int initialCapacity) { + return new JdkConcurrentHashMap(initialCapacity); } /** @@ -244,12 +244,13 @@ public abstract class CollectionFactory { * @see java.util.TreeMap * @see java.util.LinkedHashMap */ - public static Map createApproximateMap(Object map, int initialCapacity) { + @SuppressWarnings("unchecked") + public static Map createApproximateMap(Object map, int initialCapacity) { if (map instanceof SortedMap) { - return new TreeMap(((SortedMap) map).comparator()); + return new TreeMap(((SortedMap) map).comparator()); } else { - return new LinkedHashMap(initialCapacity); + return new LinkedHashMap(initialCapacity); } } @@ -260,7 +261,8 @@ public abstract class CollectionFactory { */ private static abstract class CommonsCollectionFactory { - private static Map createListOrderedCaseInsensitiveMap(int initialCapacity) { + @SuppressWarnings("unchecked") + private static Map createListOrderedCaseInsensitiveMap(int initialCapacity) { // Commons Collections does not support initial capacity of 0. return ListOrderedMap.decorate(new CaseInsensitiveMap(initialCapacity == 0 ? 1 : initialCapacity)); } @@ -270,9 +272,9 @@ public abstract class CollectionFactory { /** * ConcurrentMap adapter for the JDK ConcurrentHashMap class. */ - private static class JdkConcurrentHashMap extends ConcurrentHashMap implements ConcurrentMap { + private static class JdkConcurrentHashMap extends ConcurrentHashMap implements ConcurrentMap { - public JdkConcurrentHashMap(int initialCapacity) { + private JdkConcurrentHashMap(int initialCapacity) { super(initialCapacity); } } diff --git a/org.springframework.core/src/main/java/org/springframework/core/ConcurrentMap.java b/org.springframework.core/src/main/java/org/springframework/core/ConcurrentMap.java index 9cdb50c702b..57f5c07707c 100644 --- a/org.springframework.core/src/main/java/org/springframework/core/ConcurrentMap.java +++ b/org.springframework.core/src/main/java/org/springframework/core/ConcurrentMap.java @@ -30,14 +30,14 @@ import java.util.Map; * @author Juergen Hoeller * @since 2.5 */ -public interface ConcurrentMap extends Map { +public interface ConcurrentMap extends Map { - Object putIfAbsent(Object key, Object value); + V putIfAbsent(K key, V value); boolean remove(Object key, Object value); - boolean replace(Object key, Object oldValue, Object newValue); + boolean replace(K key, V oldValue, V newValue); - Object replace(Object key, Object value); + V replace(K key, V value); } diff --git a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/ColumnMapRowMapper.java b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/ColumnMapRowMapper.java index 6eca5e5be55..1fa92032a85 100644 --- a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/ColumnMapRowMapper.java +++ b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/ColumnMapRowMapper.java @@ -70,7 +70,7 @@ public class ColumnMapRowMapper implements RowMapper> { */ @SuppressWarnings("unchecked") protected Map createColumnMap(int columnCount) { - return (Map) CollectionFactory.createLinkedCaseInsensitiveMapIfPossible(columnCount); + return CollectionFactory.createLinkedCaseInsensitiveMapIfPossible(columnCount); } /** diff --git a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java index e85d907a7f5..c2affa0d269 100644 --- a/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java +++ b/org.springframework.jdbc/src/main/java/org/springframework/jdbc/core/JdbcTemplate.java @@ -1170,7 +1170,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations { @SuppressWarnings("unchecked") protected Map createResultsMap() { if (isResultsMapCaseInsensitive()) { - return (Map) CollectionFactory.createLinkedCaseInsensitiveMapIfPossible(16); + return CollectionFactory.createLinkedCaseInsensitiveMapIfPossible(16); } else { return new LinkedHashMap();