From 62fd12c527f528c9ddc124ece57ff4336f5d2977 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Wed, 15 Jan 2014 14:14:50 +0100 Subject: [PATCH] Restored Java 5 compatibility through avoiding Collections.newSetFromMap Issue: SPR-11313 --- .../jdbc/core/StatementCreatorUtils.java | 11 +++++------ .../jdbc/core/StatementCreatorUtilsTests.java | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java b/spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java index ba90f29297..d31991f89d 100644 --- a/spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java +++ b/spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java @@ -28,10 +28,8 @@ import java.sql.Types; import java.util.Arrays; import java.util.Calendar; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Map; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.commons.logging.Log; @@ -63,8 +61,9 @@ public abstract class StatementCreatorUtils { private static final Log logger = LogFactory.getLog(StatementCreatorUtils.class); - static final Set driversWithNoSupportForGetParameterType = - Collections.newSetFromMap(new ConcurrentHashMap(1)); + // Using a ConcurrentHashMap as a Set (for Java 5 compatibility) + static final Map driversWithNoSupportForGetParameterType = + new ConcurrentHashMap(1); private static final Map, Integer> javaTypeToSqlTypeMap = new HashMap, Integer>(32); @@ -233,7 +232,7 @@ public abstract class StatementCreatorUtils { try { dbmd = ps.getConnection().getMetaData(); jdbcDriverName = dbmd.getDriverName(); - checkGetParameterType = !driversWithNoSupportForGetParameterType.contains(jdbcDriverName); + checkGetParameterType = !driversWithNoSupportForGetParameterType.containsKey(jdbcDriverName); } catch (Throwable ex) { logger.debug("Could not check connection metadata", ex); @@ -260,7 +259,7 @@ public abstract class StatementCreatorUtils { jdbcDriverName = dbmd.getDriverName(); } if (checkGetParameterType) { - driversWithNoSupportForGetParameterType.add(jdbcDriverName); + driversWithNoSupportForGetParameterType.put(jdbcDriverName, Boolean.TRUE); } String databaseProductName = dbmd.getDatabaseProductName(); if (databaseProductName.startsWith("Informix") || diff --git a/spring-jdbc/src/test/java/org/springframework/jdbc/core/StatementCreatorUtilsTests.java b/spring-jdbc/src/test/java/org/springframework/jdbc/core/StatementCreatorUtilsTests.java index 88f1e51047..d9d6dd1567 100644 --- a/spring-jdbc/src/test/java/org/springframework/jdbc/core/StatementCreatorUtilsTests.java +++ b/spring-jdbc/src/test/java/org/springframework/jdbc/core/StatementCreatorUtilsTests.java @@ -109,7 +109,7 @@ public class StatementCreatorUtilsTests { @Test public void testSetParameterValueWithNullAndGetParameterTypeWorkingButNotForOtherDriver() throws SQLException { StatementCreatorUtils.driversWithNoSupportForGetParameterType.clear(); - StatementCreatorUtils.driversWithNoSupportForGetParameterType.add("Oracle JDBC Driver"); + StatementCreatorUtils.driversWithNoSupportForGetParameterType.put("Oracle JDBC Driver", Boolean.TRUE); Connection con = mock(Connection.class); DatabaseMetaData dbmd = mock(DatabaseMetaData.class); ParameterMetaData pmd = mock(ParameterMetaData.class);