Apply 'instanceof pattern matching' in spring-jdbc
This commit is contained in:
parent
73a18046c3
commit
114d6a9256
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -655,8 +655,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
catch (SQLException ex) {
|
||||
// Release Connection early, to avoid potential connection pool deadlock
|
||||
// in the case when the exception translator hasn't been initialized yet.
|
||||
if (psc instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) psc).cleanupParameters();
|
||||
if (psc instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
String sql = getSql(psc);
|
||||
psc = null;
|
||||
|
|
@ -668,8 +668,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
}
|
||||
finally {
|
||||
if (closeResources) {
|
||||
if (psc instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) psc).cleanupParameters();
|
||||
if (psc instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
JdbcUtils.closeStatement(ps);
|
||||
DataSourceUtils.releaseConnection(con, getDataSource());
|
||||
|
|
@ -724,8 +724,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
}
|
||||
finally {
|
||||
JdbcUtils.closeResultSet(rs);
|
||||
if (pss instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) pss).cleanupParameters();
|
||||
if (pss instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -839,8 +839,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
Connection con = ps.getConnection();
|
||||
return new ResultSetSpliterator<>(rs, rowMapper).stream().onClose(() -> {
|
||||
JdbcUtils.closeResultSet(rs);
|
||||
if (pss instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) pss).cleanupParameters();
|
||||
if (pss instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
JdbcUtils.closeStatement(ps);
|
||||
DataSourceUtils.releaseConnection(con, getDataSource());
|
||||
|
|
@ -969,8 +969,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
return rows;
|
||||
}
|
||||
finally {
|
||||
if (pss instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) pss).cleanupParameters();
|
||||
if (pss instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
}
|
||||
}, true));
|
||||
|
|
@ -1035,8 +1035,7 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
try {
|
||||
int batchSize = pss.getBatchSize();
|
||||
InterruptibleBatchPreparedStatementSetter ipss =
|
||||
(pss instanceof InterruptibleBatchPreparedStatementSetter ?
|
||||
(InterruptibleBatchPreparedStatementSetter) pss : null);
|
||||
(pss instanceof InterruptibleBatchPreparedStatementSetter ibpss ? ibpss : null);
|
||||
if (JdbcUtils.supportsBatchUpdates(ps.getConnection())) {
|
||||
for (int i = 0; i < batchSize; i++) {
|
||||
pss.setValues(ps, i);
|
||||
|
|
@ -1064,8 +1063,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
}
|
||||
}
|
||||
finally {
|
||||
if (pss instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) pss).cleanupParameters();
|
||||
if (pss instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -1154,8 +1153,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
return result1;
|
||||
}
|
||||
finally {
|
||||
if (pss instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) pss).cleanupParameters();
|
||||
if (pss instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -1193,8 +1192,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
catch (SQLException ex) {
|
||||
// Release Connection early, to avoid potential connection pool deadlock
|
||||
// in the case when the exception translator hasn't been initialized yet.
|
||||
if (csc instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) csc).cleanupParameters();
|
||||
if (csc instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
String sql = getSql(csc);
|
||||
csc = null;
|
||||
|
|
@ -1205,8 +1204,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
throw translateException("CallableStatementCallback", sql, ex);
|
||||
}
|
||||
finally {
|
||||
if (csc instanceof ParameterDisposer) {
|
||||
((ParameterDisposer) csc).cleanupParameters();
|
||||
if (csc instanceof ParameterDisposer parameterDisposer) {
|
||||
parameterDisposer.cleanupParameters();
|
||||
}
|
||||
JdbcUtils.closeStatement(cs);
|
||||
DataSourceUtils.releaseConnection(con, getDataSource());
|
||||
|
|
@ -1345,14 +1344,14 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
}
|
||||
else {
|
||||
Object out = cs.getObject(sqlColIndex);
|
||||
if (out instanceof ResultSet) {
|
||||
if (out instanceof ResultSet resultSet) {
|
||||
if (outParam.isResultSetSupported()) {
|
||||
results.putAll(processResultSet((ResultSet) out, outParam));
|
||||
results.putAll(processResultSet(resultSet, outParam));
|
||||
}
|
||||
else {
|
||||
String rsName = outParam.getName();
|
||||
SqlReturnResultSet rsParam = new SqlReturnResultSet(rsName, getColumnMapRowMapper());
|
||||
results.putAll(processResultSet((ResultSet) out, rsParam));
|
||||
results.putAll(processResultSet(resultSet, rsParam));
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace("Added default SqlReturnResultSet parameter named '" + rsName + "'");
|
||||
}
|
||||
|
|
@ -1543,18 +1542,13 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
|
||||
/**
|
||||
* Determine SQL from potential provider object.
|
||||
* @param sqlProvider object which is potentially an SqlProvider
|
||||
* @param obj object which is potentially an SqlProvider
|
||||
* @return the SQL string, or {@code null} if not known
|
||||
* @see SqlProvider
|
||||
*/
|
||||
@Nullable
|
||||
private static String getSql(Object sqlProvider) {
|
||||
if (sqlProvider instanceof SqlProvider) {
|
||||
return ((SqlProvider) sqlProvider).getSql();
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
private static String getSql(Object obj) {
|
||||
return (obj instanceof SqlProvider sqlProvider ? sqlProvider.getSql() : null);
|
||||
}
|
||||
|
||||
private static <T> T result(@Nullable T result) {
|
||||
|
|
@ -1613,8 +1607,8 @@ public class JdbcTemplate extends JdbcAccessor implements JdbcOperations {
|
|||
|
||||
// If return value is a JDBC Statement, apply statement settings
|
||||
// (fetch size, max rows, transaction timeout).
|
||||
if (retVal instanceof Statement) {
|
||||
applyStatementSettings(((Statement) retVal));
|
||||
if (retVal instanceof Statement statement) {
|
||||
applyStatementSettings(statement);
|
||||
}
|
||||
|
||||
return retVal;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -206,8 +206,8 @@ public class PreparedStatementCreatorFactory {
|
|||
Set<String> names = new HashSet<>();
|
||||
for (int i = 0; i < parameters.size(); i++) {
|
||||
Object param = parameters.get(i);
|
||||
if (param instanceof SqlParameterValue) {
|
||||
names.add(((SqlParameterValue) param).getName());
|
||||
if (param instanceof SqlParameterValue sqlParameterValue) {
|
||||
names.add(sqlParameterValue.getName());
|
||||
}
|
||||
else {
|
||||
names.add("Parameter #" + i);
|
||||
|
|
@ -252,9 +252,9 @@ public class PreparedStatementCreatorFactory {
|
|||
SqlParameter declaredParameter;
|
||||
// SqlParameterValue overrides declared parameter meta-data, in particular for
|
||||
// independence from the declared parameter position in case of named parameters.
|
||||
if (in instanceof SqlParameterValue paramValue) {
|
||||
in = paramValue.getValue();
|
||||
declaredParameter = paramValue;
|
||||
if (in instanceof SqlParameterValue sqlParameterValue) {
|
||||
in = sqlParameterValue.getValue();
|
||||
declaredParameter = sqlParameterValue;
|
||||
}
|
||||
else {
|
||||
if (declaredParameters.size() <= i) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -193,9 +193,9 @@ public class SingleColumnRowMapper<T> implements RowMapper<T> {
|
|||
return value.toString();
|
||||
}
|
||||
else if (Number.class.isAssignableFrom(requiredType)) {
|
||||
if (value instanceof Number) {
|
||||
if (value instanceof Number number) {
|
||||
// Convert original Number to target Number class.
|
||||
return NumberUtils.convertNumberToTargetClass(((Number) value), (Class<Number>) requiredType);
|
||||
return NumberUtils.convertNumberToTargetClass(number, (Class<Number>) requiredType);
|
||||
}
|
||||
else {
|
||||
// Convert stringified value to target Number class.
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -569,8 +569,8 @@ public class CallMetaDataContext {
|
|||
if (callParameterName == null) {
|
||||
if (logger.isDebugEnabled()) {
|
||||
Object value = parameterValue;
|
||||
if (value instanceof SqlParameterValue) {
|
||||
value = ((SqlParameterValue) value).getValue();
|
||||
if (value instanceof SqlParameterValue sqlParameterValue) {
|
||||
value = sqlParameterValue.getValue();
|
||||
}
|
||||
if (value != null) {
|
||||
logger.debug("Unable to locate the corresponding IN or IN-OUT parameter for \"" +
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -105,8 +105,8 @@ public abstract class AbstractSqlParameterSource implements SqlParameterSource {
|
|||
StringJoiner result = new StringJoiner(", ", getClass().getSimpleName() + " {", "}");
|
||||
for (String parameterName : parameterNames) {
|
||||
Object value = getValue(parameterName);
|
||||
if (value instanceof SqlParameterValue) {
|
||||
value = ((SqlParameterValue) value).getValue();
|
||||
if (value instanceof SqlParameterValue sqlParameterValue) {
|
||||
value = sqlParameterValue.getValue();
|
||||
}
|
||||
String typeName = getTypeName(parameterName);
|
||||
if (typeName == null) {
|
||||
|
|
|
|||
|
|
@ -291,11 +291,11 @@ public abstract class NamedParameterUtils {
|
|||
actualSql.append(originalSql, lastIndex, startIndex);
|
||||
if (paramSource != null && paramSource.hasValue(paramName)) {
|
||||
Object value = paramSource.getValue(paramName);
|
||||
if (value instanceof SqlParameterValue) {
|
||||
value = ((SqlParameterValue) value).getValue();
|
||||
if (value instanceof SqlParameterValue sqlParameterValue) {
|
||||
value = sqlParameterValue.getValue();
|
||||
}
|
||||
if (value instanceof Iterable) {
|
||||
Iterator<?> entryIter = ((Iterable<?>) value).iterator();
|
||||
if (value instanceof Iterable<?> iterable) {
|
||||
Iterator<?> entryIter = iterable.iterator();
|
||||
int k = 0;
|
||||
while (entryIter.hasNext()) {
|
||||
if (k > 0) {
|
||||
|
|
|
|||
|
|
@ -177,11 +177,11 @@ public class SqlLobValue implements DisposableSqlTypeValue {
|
|||
if (this.content instanceof byte[] || this.content == null) {
|
||||
this.lobCreator.setBlobAsBytes(ps, paramIndex, (byte[]) this.content);
|
||||
}
|
||||
else if (this.content instanceof String) {
|
||||
this.lobCreator.setBlobAsBytes(ps, paramIndex, ((String) this.content).getBytes());
|
||||
else if (this.content instanceof String string) {
|
||||
this.lobCreator.setBlobAsBytes(ps, paramIndex, string.getBytes());
|
||||
}
|
||||
else if (this.content instanceof InputStream) {
|
||||
this.lobCreator.setBlobAsBinaryStream(ps, paramIndex, (InputStream) this.content, this.length);
|
||||
else if (this.content instanceof InputStream inputStream) {
|
||||
this.lobCreator.setBlobAsBinaryStream(ps, paramIndex, inputStream, this.length);
|
||||
}
|
||||
else {
|
||||
throw new IllegalArgumentException(
|
||||
|
|
@ -192,11 +192,11 @@ public class SqlLobValue implements DisposableSqlTypeValue {
|
|||
if (this.content instanceof String || this.content == null) {
|
||||
this.lobCreator.setClobAsString(ps, paramIndex, (String) this.content);
|
||||
}
|
||||
else if (this.content instanceof InputStream) {
|
||||
this.lobCreator.setClobAsAsciiStream(ps, paramIndex, (InputStream) this.content, this.length);
|
||||
else if (this.content instanceof InputStream inputStream) {
|
||||
this.lobCreator.setClobAsAsciiStream(ps, paramIndex, inputStream, this.length);
|
||||
}
|
||||
else if (this.content instanceof Reader) {
|
||||
this.lobCreator.setClobAsCharacterStream(ps, paramIndex, (Reader) this.content, this.length);
|
||||
else if (this.content instanceof Reader reader) {
|
||||
this.lobCreator.setClobAsCharacterStream(ps, paramIndex, reader, this.length);
|
||||
}
|
||||
else {
|
||||
throw new IllegalArgumentException(
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2020 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -162,11 +162,11 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
|
|||
* @see org.springframework.transaction.jta.JtaTransactionManager
|
||||
*/
|
||||
public void setDataSource(@Nullable DataSource dataSource) {
|
||||
if (dataSource instanceof TransactionAwareDataSourceProxy) {
|
||||
if (dataSource instanceof TransactionAwareDataSourceProxy tadsp) {
|
||||
// If we got a TransactionAwareDataSourceProxy, we need to perform transactions
|
||||
// for its underlying target DataSource, else data access code won't see
|
||||
// properly exposed transactions (i.e. transactions for the target DataSource).
|
||||
this.dataSource = ((TransactionAwareDataSourceProxy) dataSource).getTargetDataSource();
|
||||
this.dataSource = tadsp.getTargetDataSource();
|
||||
}
|
||||
else {
|
||||
this.dataSource = dataSource;
|
||||
|
|
|
|||
|
|
@ -438,8 +438,8 @@ public abstract class DataSourceUtils {
|
|||
*/
|
||||
public static Connection getTargetConnection(Connection con) {
|
||||
Connection conToUse = con;
|
||||
while (conToUse instanceof ConnectionProxy) {
|
||||
conToUse = ((ConnectionProxy) conToUse).getTargetConnection();
|
||||
while (conToUse instanceof ConnectionProxy connectionProxy) {
|
||||
conToUse = connectionProxy.getTargetConnection();
|
||||
}
|
||||
return conToUse;
|
||||
}
|
||||
|
|
@ -455,9 +455,9 @@ public abstract class DataSourceUtils {
|
|||
private static int getConnectionSynchronizationOrder(DataSource dataSource) {
|
||||
int order = CONNECTION_SYNCHRONIZATION_ORDER;
|
||||
DataSource currDs = dataSource;
|
||||
while (currDs instanceof DelegatingDataSource) {
|
||||
while (currDs instanceof DelegatingDataSource delegatingDataSource) {
|
||||
order--;
|
||||
currDs = ((DelegatingDataSource) currDs).getTargetDataSource();
|
||||
currDs = delegatingDataSource.getTargetDataSource();
|
||||
}
|
||||
return order;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -239,8 +239,8 @@ public class TransactionAwareDataSourceProxy extends DelegatingDataSource {
|
|||
|
||||
// If return value is a Statement, apply transaction timeout.
|
||||
// Applies to createStatement, prepareStatement, prepareCall.
|
||||
if (retVal instanceof Statement) {
|
||||
DataSourceUtils.applyTransactionTimeout((Statement) retVal, this.targetDataSource);
|
||||
if (retVal instanceof Statement statement) {
|
||||
DataSourceUtils.applyTransactionTimeout(statement, this.targetDataSource);
|
||||
}
|
||||
|
||||
return retVal;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -216,9 +216,9 @@ public class EmbeddedDatabaseFactory {
|
|||
protected void shutdownDatabase() {
|
||||
if (this.dataSource != null) {
|
||||
if (logger.isInfoEnabled()) {
|
||||
if (this.dataSource instanceof SimpleDriverDataSource) {
|
||||
if (this.dataSource instanceof SimpleDriverDataSource simpleDriverDataSource) {
|
||||
logger.info(String.format("Shutting down embedded database: url='%s'",
|
||||
((SimpleDriverDataSource) this.dataSource).getUrl()));
|
||||
simpleDriverDataSource.getUrl()));
|
||||
}
|
||||
else {
|
||||
logger.info(String.format("Shutting down embedded database '%s'", this.databaseName));
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2021 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -299,8 +299,8 @@ public abstract class ScriptUtils {
|
|||
}
|
||||
}
|
||||
catch (Exception ex) {
|
||||
if (ex instanceof ScriptException) {
|
||||
throw (ScriptException) ex;
|
||||
if (ex instanceof ScriptException scriptException) {
|
||||
throw scriptException;
|
||||
}
|
||||
throw new UncategorizedScriptException(
|
||||
"Failed to execute database script from resource [" + resource + "]", ex);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2019 the original author or authors.
|
||||
* Copyright 2002-2022 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -161,10 +161,10 @@ public class SqlFunction<T> extends MappingSqlQuery<T> {
|
|||
*/
|
||||
public int run(Object... parameters) {
|
||||
Object obj = super.findObject(parameters);
|
||||
if (!(obj instanceof Number)) {
|
||||
if (!(obj instanceof Number number)) {
|
||||
throw new TypeMismatchDataAccessException("Could not convert result object [" + obj + "] to int");
|
||||
}
|
||||
return ((Number) obj).intValue();
|
||||
return number.intValue();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -213,10 +213,10 @@ public abstract class JdbcUtils {
|
|||
if (obj instanceof String) {
|
||||
return obj;
|
||||
}
|
||||
else if (obj instanceof Number) {
|
||||
else if (obj instanceof Number number) {
|
||||
// Defensively convert any Number to an Integer (as needed by our
|
||||
// ConversionService's IntegerToEnumConverterFactory) for use as index
|
||||
return NumberUtils.convertNumberToTargetClass((Number) obj, Integer.class);
|
||||
return NumberUtils.convertNumberToTargetClass(number, Integer.class);
|
||||
}
|
||||
else {
|
||||
// e.g. on Postgres: getObject returns a PGObject but we need a String
|
||||
|
|
@ -405,8 +405,8 @@ public abstract class JdbcUtils {
|
|||
"Could not access DatabaseMetaData method '" + metaDataMethodName + "'", ex);
|
||||
}
|
||||
catch (InvocationTargetException ex) {
|
||||
if (ex.getTargetException() instanceof SQLException) {
|
||||
throw (SQLException) ex.getTargetException();
|
||||
if (ex.getTargetException() instanceof SQLException sqlException) {
|
||||
throw sqlException;
|
||||
}
|
||||
throw new MetaDataAccessException(
|
||||
"Invocation of DatabaseMetaData method '" + metaDataMethodName + "' failed", ex);
|
||||
|
|
|
|||
|
|
@ -216,8 +216,8 @@ public class SQLErrorCodeSQLExceptionTranslator extends AbstractFallbackSQLExcep
|
|||
// Try to find SQLException with actual error code, looping through the causes.
|
||||
// E.g. applicable to java.sql.DataTruncation as of JDK 1.6.
|
||||
SQLException current = sqlEx;
|
||||
while (current.getErrorCode() == 0 && current.getCause() instanceof SQLException) {
|
||||
current = (SQLException) current.getCause();
|
||||
while (current.getErrorCode() == 0 && current.getCause() instanceof SQLException sqlException) {
|
||||
current = sqlException;
|
||||
}
|
||||
errorCode = Integer.toString(current.getErrorCode());
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue