in wrapper/src/main/java/software/amazon/jdbc/plugin/failover2/FailoverConnectionPlugin.java [192:235]
public <T, E extends Exception> T execute(
final Class<T> resultClass,
final Class<E> exceptionClass,
final Object methodInvokeOn,
final String methodName,
final JdbcCallable<T, E> jdbcMethodFunc,
final Object[] jdbcMethodArgs)
throws E {
try {
if (this.pluginService.getCurrentConnection() != null
&& !this.canDirectExecute(methodName)
&& !this.closedExplicitly
&& this.pluginService.getCurrentConnection().isClosed()) {
this.pickNewConnection();
}
} catch (SQLException ex) {
throw WrapperUtils.wrapExceptionIfNeeded(exceptionClass, ex);
}
if (canDirectExecute(methodName)) {
return jdbcMethodFunc.call();
}
if (this.isClosed && !this.allowedOnClosedConnection(methodName)) {
try {
this.invalidInvocationOnClosedConnection();
} catch (final SQLException ex) {
throw WrapperUtils.wrapExceptionIfNeeded(exceptionClass, ex);
}
}
T result = null;
try {
result = jdbcMethodFunc.call();
} catch (final IllegalStateException e) {
dealWithIllegalStateException(e, exceptionClass);
} catch (final Exception e) {
this.dealWithOriginalException(e, null, exceptionClass);
}
return result;
}