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;
         }

Reply via email to