Skip to content

Commit 62fd12c

Browse files
committed
Restored Java 5 compatibility through avoiding Collections.newSetFromMap
Issue: SPR-11313
1 parent f8f6c5f commit 62fd12c

File tree

2 files changed

+6
-7
lines changed

2 files changed

+6
-7
lines changed

spring-jdbc/src/main/java/org/springframework/jdbc/core/StatementCreatorUtils.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,8 @@
2828
import java.util.Arrays;
2929
import java.util.Calendar;
3030
import java.util.Collection;
31-
import java.util.Collections;
3231
import java.util.HashMap;
3332
import java.util.Map;
34-
import java.util.Set;
3533
import java.util.concurrent.ConcurrentHashMap;
3634

3735
import org.apache.commons.logging.Log;
@@ -63,8 +61,9 @@ public abstract class StatementCreatorUtils {
6361

6462
private static final Log logger = LogFactory.getLog(StatementCreatorUtils.class);
6563

66-
static final Set<String> driversWithNoSupportForGetParameterType =
67-
Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>(1));
64+
// Using a ConcurrentHashMap as a Set (for Java 5 compatibility)
65+
static final Map<String, Boolean> driversWithNoSupportForGetParameterType =
66+
new ConcurrentHashMap<String, Boolean>(1);
6867

6968
private static final Map<Class<?>, Integer> javaTypeToSqlTypeMap = new HashMap<Class<?>, Integer>(32);
7069

@@ -233,7 +232,7 @@ private static void setNull(PreparedStatement ps, int paramIndex, int sqlType, S
233232
try {
234233
dbmd = ps.getConnection().getMetaData();
235234
jdbcDriverName = dbmd.getDriverName();
236-
checkGetParameterType = !driversWithNoSupportForGetParameterType.contains(jdbcDriverName);
235+
checkGetParameterType = !driversWithNoSupportForGetParameterType.containsKey(jdbcDriverName);
237236
}
238237
catch (Throwable ex) {
239238
logger.debug("Could not check connection metadata", ex);
@@ -260,7 +259,7 @@ private static void setNull(PreparedStatement ps, int paramIndex, int sqlType, S
260259
jdbcDriverName = dbmd.getDriverName();
261260
}
262261
if (checkGetParameterType) {
263-
driversWithNoSupportForGetParameterType.add(jdbcDriverName);
262+
driversWithNoSupportForGetParameterType.put(jdbcDriverName, Boolean.TRUE);
264263
}
265264
String databaseProductName = dbmd.getDatabaseProductName();
266265
if (databaseProductName.startsWith("Informix") ||

spring-jdbc/src/test/java/org/springframework/jdbc/core/StatementCreatorUtilsTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public void testSetParameterValueWithNullAndGetParameterTypeWorking() throws SQL
109109
@Test
110110
public void testSetParameterValueWithNullAndGetParameterTypeWorkingButNotForOtherDriver() throws SQLException {
111111
StatementCreatorUtils.driversWithNoSupportForGetParameterType.clear();
112-
StatementCreatorUtils.driversWithNoSupportForGetParameterType.add("Oracle JDBC Driver");
112+
StatementCreatorUtils.driversWithNoSupportForGetParameterType.put("Oracle JDBC Driver", Boolean.TRUE);
113113
Connection con = mock(Connection.class);
114114
DatabaseMetaData dbmd = mock(DatabaseMetaData.class);
115115
ParameterMetaData pmd = mock(ParameterMetaData.class);

0 commit comments

Comments
 (0)