From d233bf30337e3a48074839dd256bca000277c57d Mon Sep 17 00:00:00 2001
From: Julien Lepiller <julien@lepiller.eu>
Date: Tue, 15 Aug 2017 22:55:38 +0200
Subject: [PATCH] Fix abstract methods

---
 .../org/apache/commons/dbcp/BasicDataSource.java   |  7 +++
 .../apache/commons/dbcp/DelegatingConnection.java  | 59 ++++++++++++++++++
 .../commons/dbcp/DelegatingDatabaseMetaData.java   | 12 ++++
 .../apache/commons/dbcp/DelegatingResultSet.java   | 27 ++++++++
 .../apache/commons/dbcp/DelegatingStatement.java   | 21 +++++++
 .../commons/dbcp/PoolableCallableStatement.java    | 26 ++++++++
 .../org/apache/commons/dbcp/PoolingConnection.java | 72 ++++++++++++++++++++++
 .../org/apache/commons/dbcp/PoolingDataSource.java |  7 +++
 .../org/apache/commons/dbcp/PoolingDriver.java     |  7 +++
 .../dbcp/cpdsadapter/DriverAdapterCPDS.java        |  7 +++
 .../dbcp/datasources/PerUserPoolDataSource.java    |  7 +++
 .../dbcp/datasources/SharedPoolDataSource.java     |  7 +++
 12 files changed, 259 insertions(+)

diff --git a/src/java/org/apache/commons/dbcp/BasicDataSource.java b/src/java/org/apache/commons/dbcp/BasicDataSource.java
index 2688fd8..8fcf2d4 100644
--- a/src/java/org/apache/commons/dbcp/BasicDataSource.java
+++ b/src/java/org/apache/commons/dbcp/BasicDataSource.java
@@ -24,10 +24,12 @@ import java.util.List;
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Collections;
+import java.util.logging.Logger;
 import java.sql.Connection;
 import java.sql.Driver;
 import java.sql.DriverManager;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
 import javax.sql.DataSource;
 
 import org.apache.commons.pool.KeyedObjectPoolFactory;
@@ -1579,4 +1581,9 @@ public class BasicDataSource implements DataSource {
             logWriter.println(message);
         }
     }
+
+    @Override
+    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        throw new SQLFeatureNotSupportedException();
+    }
 }
diff --git a/src/java/org/apache/commons/dbcp/DelegatingConnection.java b/src/java/org/apache/commons/dbcp/DelegatingConnection.java
index 93cff0e..75f5c62 100644
--- a/src/java/org/apache/commons/dbcp/DelegatingConnection.java
+++ b/src/java/org/apache/commons/dbcp/DelegatingConnection.java
@@ -39,6 +39,7 @@ import java.sql.SQLXML;
 import java.sql.Struct;
 import java.util.Collections;
 import java.util.Properties;
+import java.util.concurrent.Executor;
 /* JDBC_4_ANT_KEY_END */
 
 /**
@@ -679,4 +680,62 @@ public class DelegatingConnection extends AbandonedTrace
         }
     }
 /* JDBC_4_ANT_KEY_END */
+
+    @Override
+    public void setSchema(String schema) throws SQLException {
+        checkOpen();
+        try {
+            _conn.setSchema(schema);
+        }
+        catch (SQLException e) {
+            handleException(e);
+        }
+    }
+
+    @Override
+    public String getSchema() throws SQLException {
+        checkOpen();
+        try {
+            return _conn.getSchema();
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return null;
+        }
+    }
+
+    @Override
+    public void abort(Executor executor) throws SQLException {
+        checkOpen();
+        try {
+            _conn.abort(executor);
+        }
+        catch (SQLException e) {
+            handleException(e);
+        }
+    }
+
+    @Override
+    public void setNetworkTimeout(Executor executor, int milliseconds)
+            throws SQLException {
+        checkOpen();
+        try {
+            _conn.setNetworkTimeout(executor, milliseconds);
+        }
+        catch (SQLException e) {
+            handleException(e);
+        }
+    }
+
+    @Override
+    public int getNetworkTimeout() throws SQLException {
+        checkOpen();
+        try {
+            return _conn.getNetworkTimeout();
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return 0;
+        }
+    }
 }
diff --git a/src/java/org/apache/commons/dbcp/DelegatingDatabaseMetaData.java b/src/java/org/apache/commons/dbcp/DelegatingDatabaseMetaData.java
index df88046..22ba48c 100644
--- a/src/java/org/apache/commons/dbcp/DelegatingDatabaseMetaData.java
+++ b/src/java/org/apache/commons/dbcp/DelegatingDatabaseMetaData.java
@@ -1208,4 +1208,16 @@ public class DelegatingDatabaseMetaData extends AbandonedTrace
 
     /* JDBC_4_ANT_KEY_END */
 
+    @Override
+    public boolean generatedKeyAlwaysReturned() throws SQLException {
+        _conn.checkOpen();
+        try {
+            return _meta.generatedKeyAlwaysReturned();
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return false;
+        }
+    }
+
 }
diff --git a/src/java/org/apache/commons/dbcp/DelegatingResultSet.java b/src/java/org/apache/commons/dbcp/DelegatingResultSet.java
index f77328f..a0bd6bc 100644
--- a/src/java/org/apache/commons/dbcp/DelegatingResultSet.java
+++ b/src/java/org/apache/commons/dbcp/DelegatingResultSet.java
@@ -34,6 +34,7 @@ import java.sql.Ref;
 import java.sql.Blob;
 import java.sql.Clob;
 import java.sql.Array;
+import java.sql.CallableStatement;
 import java.util.Calendar;
 /* JDBC_4_ANT_KEY_BEGIN */
 import java.sql.NClob;
@@ -1078,5 +1079,31 @@ public class DelegatingResultSet extends AbandonedTrace implements ResultSet {
             handleException(e);
         }
     }
+
+    @Override
+    public <T> T getObject(int parameterIndex, Class<T> type)
+            throws SQLException {
+        checkOpen();
+        try {
+            return ((CallableStatement)getDelegate()).getObject(parameterIndex, type);
+}
+        catch (SQLException e) {
+            handleException(e);
+            return null;
+        }
+    }
+
+    @Override
+    public <T> T getObject(String parameterName, Class<T> type)
+            throws SQLException {
+        checkOpen();
+        try {
+            return ((CallableStatement)getDelegate()).getObject(parameterName, type);
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return null;
+        }
+    }
 /* JDBC_4_ANT_KEY_END */
 }
diff --git a/src/java/org/apache/commons/dbcp/DelegatingStatement.java b/src/java/org/apache/commons/dbcp/DelegatingStatement.java
index d944c6a..eb765ed 100644
--- a/src/java/org/apache/commons/dbcp/DelegatingStatement.java
+++ b/src/java/org/apache/commons/dbcp/DelegatingStatement.java
@@ -349,6 +349,27 @@ public class DelegatingStatement extends AbandonedTrace implements Statement {
         return _closed;
     }
 
+    @Override
+    public void closeOnCompletion() throws SQLException {
+        checkOpen();
+        try {
+            _stmt.closeOnCompletion();
+        } catch(SQLException e) {
+            handleException(e);
+        }
+    }
+
+    @Override
+    public boolean isCloseOnCompletion() throws SQLException {
+        checkOpen();
+        try {
+            _stmt.closeOnCompletion();
+        } catch(SQLException e) {
+            handleException(e);
+            return false;
+        }
+    }
+
 /* JDBC_4_ANT_KEY_BEGIN */
 
     public boolean isWrapperFor(Class<?> iface) throws SQLException {
diff --git a/src/java/org/apache/commons/dbcp/PoolableCallableStatement.java b/src/java/org/apache/commons/dbcp/PoolableCallableStatement.java
index 108a7f5..1afadf1 100644
--- a/src/java/org/apache/commons/dbcp/PoolableCallableStatement.java
+++ b/src/java/org/apache/commons/dbcp/PoolableCallableStatement.java
@@ -123,4 +123,30 @@ public class PoolableCallableStatement extends DelegatingCallableStatement imple
         super.passivate();
     }
 
+    @Override
+    public <T> T getObject(int parameterIndex, Class<T> type)
+            throws SQLException {
+        checkOpen();
+        try {
+            return ((CallableStatement)getDelegate()).getObject(parameterIndex, type);
+}
+        catch (SQLException e) {
+            handleException(e);
+            return null;
+        }
+    }
+
+    @Override
+    public <T> T getObject(String parameterName, Class<T> type)
+            throws SQLException {
+        checkOpen();
+        try {
+            return ((CallableStatement)getDelegate()).getObject(parameterName, type);
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return null;
+        }
+    }
+
 }
diff --git a/src/java/org/apache/commons/dbcp/PoolingConnection.java b/src/java/org/apache/commons/dbcp/PoolingConnection.java
index 04f4519..0d49d4a 100644
--- a/src/java/org/apache/commons/dbcp/PoolingConnection.java
+++ b/src/java/org/apache/commons/dbcp/PoolingConnection.java
@@ -26,6 +26,7 @@ import java.util.NoSuchElementException;
 
 import org.apache.commons.pool.KeyedObjectPool;
 import org.apache.commons.pool.KeyedPoolableObjectFactory;
+import java.util.concurrent.Executor;
 
 /**
  * A {@link DelegatingConnection} that pools {@link PreparedStatement}s.
@@ -455,4 +456,75 @@ public class PoolingConnection extends DelegatingConnection implements Connectio
             return buf.toString();
         }
     }
+
+    @Override
+    public String getClientInfo(String name) throws SQLException {
+        checkOpen();
+        try {
+            return _conn.getClientInfo(name);
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return null;
+        }
+    }
+
+    @Override
+    public void setSchema(String schema) throws SQLException {
+        checkOpen();
+        try {
+            _conn.setSchema(schema);
+        }
+        catch (SQLException e) {
+            handleException(e);
+        }
+    }
+
+    @Override
+    public String getSchema() throws SQLException {
+        checkOpen();
+        try {
+            return _conn.getSchema();
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return null;
+        }
+    }
+
+    @Override
+    public void abort(Executor executor) throws SQLException {
+        checkOpen();
+        try {
+            _conn.abort(executor);
+        }
+        catch (SQLException e) {
+            handleException(e);
+        }
+    }
+
+    @Override
+    public void setNetworkTimeout(Executor executor, int milliseconds)
+            throws SQLException {
+        checkOpen();
+        try {
+            _conn.setNetworkTimeout(executor, milliseconds);
+        }
+        catch (SQLException e) {
+            handleException(e);
+        }
+    }
+
+
+    @Override
+    public int getNetworkTimeout() throws SQLException {
+        checkOpen();
+        try {
+            return _conn.getNetworkTimeout();
+        }
+        catch (SQLException e) {
+            handleException(e);
+            return 0;
+        }
+    }
 }
diff --git a/src/java/org/apache/commons/dbcp/PoolingDataSource.java b/src/java/org/apache/commons/dbcp/PoolingDataSource.java
index 122a7e6..80381be 100644
--- a/src/java/org/apache/commons/dbcp/PoolingDataSource.java
+++ b/src/java/org/apache/commons/dbcp/PoolingDataSource.java
@@ -23,8 +23,10 @@ import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
 import java.sql.SQLWarning;
 import java.sql.Statement;
+import java.util.logging.Logger;
 import java.util.Map;
 import java.util.NoSuchElementException;
 
@@ -167,6 +169,11 @@ public class PoolingDataSource implements DataSource {
 
     protected ObjectPool _pool = null;
 
+    @Override
+    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        throw new SQLFeatureNotSupportedException();
+    }
+
     /**
      * PoolGuardConnectionWrapper is a Connection wrapper that makes sure a 
      * closed connection cannot be used anymore.
diff --git a/src/java/org/apache/commons/dbcp/PoolingDriver.java b/src/java/org/apache/commons/dbcp/PoolingDriver.java
index 4c82b02..b146d83 100644
--- a/src/java/org/apache/commons/dbcp/PoolingDriver.java
+++ b/src/java/org/apache/commons/dbcp/PoolingDriver.java
@@ -27,8 +27,10 @@ import java.sql.DriverManager;
 import java.sql.DriverPropertyInfo;
 import java.sql.PreparedStatement;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
 import java.sql.SQLWarning;
 import java.sql.Statement;
+import java.util.logging.Logger;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.NoSuchElementException;
@@ -496,4 +498,9 @@ public class PoolingDriver implements Driver {
             }
         }
     }
+
+    @Override
+    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        throw new SQLFeatureNotSupportedException();
+    }
 }
diff --git a/src/java/org/apache/commons/dbcp/cpdsadapter/DriverAdapterCPDS.java b/src/java/org/apache/commons/dbcp/cpdsadapter/DriverAdapterCPDS.java
index 21087ed..0ff331e 100644
--- a/src/java/org/apache/commons/dbcp/cpdsadapter/DriverAdapterCPDS.java
+++ b/src/java/org/apache/commons/dbcp/cpdsadapter/DriverAdapterCPDS.java
@@ -19,10 +19,12 @@ package org.apache.commons.dbcp.cpdsadapter;
 
 import java.util.Hashtable;
 import java.util.Properties;
+import java.util.logging.Logger;
 import java.io.PrintWriter;
 import java.io.Serializable;
 import java.sql.DriverManager;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
 import javax.sql.PooledConnection;
 import javax.sql.ConnectionPoolDataSource;
 import javax.naming.Name;
@@ -719,4 +721,9 @@ public class DriverAdapterCPDS
     {
         _maxPreparedStatements = maxPreparedStatements;
     }
+
+    @Override
+    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        throw new SQLFeatureNotSupportedException();
+    }
 }
diff --git a/src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java b/src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java
index 9638953..9af4298 100644
--- a/src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java
+++ b/src/java/org/apache/commons/dbcp/datasources/PerUserPoolDataSource.java
@@ -21,10 +21,12 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.NoSuchElementException;
+import java.util.logging.Logger;
 
 import javax.naming.NamingException;
 import javax.naming.Reference;
@@ -561,4 +563,9 @@ public class PerUserPoolDataSource
         CPDSConnectionFactory mgr = (CPDSConnectionFactory) managers.get(key);
         return mgr == null ? null : (GenericObjectPool) mgr.getPool();
     }
+
+    @Override
+    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        throw new SQLFeatureNotSupportedException();
+    }
 }
diff --git a/src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java b/src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java
index e4bd04e..48c6d93 100644
--- a/src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java
+++ b/src/java/org/apache/commons/dbcp/datasources/SharedPoolDataSource.java
@@ -21,6 +21,8 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import java.util.logging.Logger;
 
 import javax.naming.NamingException;
 import javax.naming.Reference;
@@ -269,5 +271,10 @@ public class SharedPoolDataSource
             throw new IOException("NamingException: " + e);
         }
     }
+
+    @Override
+    public Logger getParentLogger() throws SQLFeatureNotSupportedException {
+        throw new SQLFeatureNotSupportedException();
+    }
 }
 
-- 
2.13.4