Repository: commons-dbcp Updated Branches: refs/heads/master 171528a88 -> 81aea9441
[DBCP-518] Allow DBCP to work with old Java 6/JDBC drivers without throwing AbstractMethodError. Project: http://git-wip-us.apache.org/repos/asf/commons-dbcp/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-dbcp/commit/81aea944 Tree: http://git-wip-us.apache.org/repos/asf/commons-dbcp/tree/81aea944 Diff: http://git-wip-us.apache.org/repos/asf/commons-dbcp/diff/81aea944 Branch: refs/heads/master Commit: 81aea944160608838cb2d7cdfb0d9b6893a655d9 Parents: 171528a Author: Gary Gregory <garydgreg...@gmail.com> Authored: Wed Aug 15 18:18:47 2018 -0600 Committer: Gary Gregory <garydgreg...@gmail.com> Committed: Wed Aug 15 18:18:47 2018 -0600 ---------------------------------------------------------------------- src/changes/changes.xml | 3 +++ .../commons/dbcp2/DelegatingConnection.java | 2 +- .../commons/dbcp2/PoolableConnectionFactory.java | 2 +- .../java/org/apache/commons/dbcp2/Utils.java | 19 +++++++++++++++++++ .../dbcp2/cpdsadapter/PooledConnectionImpl.java | 3 ++- 5 files changed, 26 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/81aea944/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 1183cef..27717b1 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -73,6 +73,9 @@ The <action> type attribute can be add,update,fix,remove. <action dev="ggregory" type="update" issue="DBCP-516" due-to="Tom Jenkinson, Gary Gregory"> Do not double returnObject back to the pool if there is a transaction context with a shared connection. </action> + <action dev="ggregory" type="fix" issue="DBCP-518" due-to="Gary Gregory"> + Allow DBCP to work with old Java 6/JDBC drivers without throwing AbstractMethodError. + </action> </release> <release version="2.5.0" date="2018-07-15" description="This is a minor release, including bug fixes and enhancements."> <action dev="ggregory" type="update" issue="DBCP-505" due-to="Gary Gregory"> http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/81aea944/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java b/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java index 87e1f72..5e04bd2 100644 --- a/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java +++ b/src/main/java/org/apache/commons/dbcp2/DelegatingConnection.java @@ -938,7 +938,7 @@ public class DelegatingConnection<C extends Connection> extends AbandonedTrace i public String getSchema() throws SQLException { checkOpen(); try { - return connection.getSchema(); + return Utils.getSchema(connection); } catch (final SQLException e) { handleException(e); return null; http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/81aea944/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java index 281170d..d99d728 100644 --- a/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java +++ b/src/main/java/org/apache/commons/dbcp2/PoolableConnectionFactory.java @@ -440,7 +440,7 @@ public class PoolableConnectionFactory implements PooledObjectFactory<PoolableCo if (defaultCatalog != null && !defaultCatalog.equals(conn.getCatalog())) { conn.setCatalog(defaultCatalog); } - if (defaultSchema != null && !defaultSchema.equals(conn.getSchema())) { + if (defaultSchema != null && !defaultSchema.equals(Utils.getSchema(conn))) { conn.setSchema(defaultSchema); } conn.setDefaultQueryTimeout(defaultQueryTimeoutSeconds); http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/81aea944/src/main/java/org/apache/commons/dbcp2/Utils.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/dbcp2/Utils.java b/src/main/java/org/apache/commons/dbcp2/Utils.java index 244b51b..3a1ba1a 100644 --- a/src/main/java/org/apache/commons/dbcp2/Utils.java +++ b/src/main/java/org/apache/commons/dbcp2/Utils.java @@ -20,6 +20,7 @@ package org.apache.commons.dbcp2; import java.sql.Connection; import java.sql.ResultSet; +import java.sql.SQLException; import java.sql.Statement; import java.text.MessageFormat; import java.util.HashSet; @@ -131,6 +132,24 @@ public final class Utils { } /** + * Gets the schema for the given connection while allowing for the underlying JDBC method to be missing when the + * driver is written for Java 6/JDBC 4.0. + * + * @param conn + * the Connection to query + * @return null for a JDBC 4 driver or a value per {@link Connection#getSchema()}. + * @throws SQLException + * See {@link Connection#getSchema()}. + */ + public static String getSchema(final Connection conn) throws SQLException { + try { + return conn.getSchema(); + } catch (AbstractMethodError e) { + return null; + } + } + + /** * Gets the correct i18n message for the given key. * * @param key http://git-wip-us.apache.org/repos/asf/commons-dbcp/blob/81aea944/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java index 8cb4670..06edefb 100644 --- a/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java +++ b/src/main/java/org/apache/commons/dbcp2/cpdsadapter/PooledConnectionImpl.java @@ -33,6 +33,7 @@ import org.apache.commons.dbcp2.DelegatingPreparedStatement; import org.apache.commons.dbcp2.PStmtKey; import org.apache.commons.dbcp2.PoolableCallableStatement; import org.apache.commons.dbcp2.PoolablePreparedStatement; +import org.apache.commons.dbcp2.Utils; import org.apache.commons.dbcp2.PoolingConnection.StatementType; import org.apache.commons.pool2.KeyedObjectPool; import org.apache.commons.pool2.KeyedPooledObjectFactory; @@ -295,7 +296,7 @@ class PooledConnectionImpl private String getSchemaOrNull() { try { - return connection == null ? null : connection.getSchema(); + return connection == null ? null : Utils.getSchema(connection); } catch (final SQLException e) { return null; }