You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2018/08/16 00:18:51 UTC
commons-dbcp git commit: [DBCP-518] Allow DBCP to work with old Java
6/JDBC drivers without throwing AbstractMethodError.
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 <ga...@gmail.com>
Authored: Wed Aug 15 18:18:47 2018 -0600
Committer: Gary Gregory <ga...@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;
}