Restored Java 5 compatibility through avoiding Collections.newSetFromMap
Issue: SPR-11313
This commit is contained in:
parent
f8f6c5fd89
commit
62fd12c527
|
|
@ -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<String> driversWithNoSupportForGetParameterType =
|
||||
Collections.newSetFromMap(new ConcurrentHashMap<String, Boolean>(1));
|
||||
// Using a ConcurrentHashMap as a Set (for Java 5 compatibility)
|
||||
static final Map<String, Boolean> driversWithNoSupportForGetParameterType =
|
||||
new ConcurrentHashMap<String, Boolean>(1);
|
||||
|
||||
private static final Map<Class<?>, Integer> javaTypeToSqlTypeMap = new HashMap<Class<?>, 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") ||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue