Package org.apache.tomcat.dbcp.dbcp2

## Class Jdbc41Bridge

- java.lang.Object
- - org.apache.tomcat.dbcp.dbcp2.Jdbc41Bridge

    public class Jdbc41Bridge
    extends java.lang.Object

Defines bridge methods to JDBC 4.1 (Java 7) methods to allow call sites to operate safely (without `AbstractMethodError`) when using a JDBC driver written for JDBC 4.0 (Java 6).

There should be no need to this kind of code for JDBC 4.2 in Java 8 due to JDBC's use of default methods.

This should probably be moved or at least copied in some form to Apache Commons DbUtils.

Since:
  2.6.0

### Constructor Summary

Constructors
`Jdbc41Bridge()`

### Method Summary

All Methods Static Methods Concrete Methods
`static void` `abort​(java.sql.Connection connection, java.util.concurrent.Executor executor)` Delegates to `Connection.abort(Executor)` without throwing an `AbstractMethodError`.
`static void` `closeOnCompletion​(java.sql.Statement statement)` Delegates to `Statement.closeOnCompletion()` without throwing an `AbstractMethodError`.
`static boolean` `generatedKeyAlwaysReturned​(java.sql.DatabaseMetaData databaseMetaData)` Delegates to `DatabaseMetaData.generatedKeyAlwaysReturned()` without throwing a `AbstractMethodError`.
`static int` `getNetworkTimeout​(java.sql.Connection connection)` Delegates to `Connection.getNetworkTimeout()` without throwing an `AbstractMethodError`.
`static <T> T` `getObject​(java.sql.ResultSet resultSet, int columnIndex, java.lang.Class<T> type)` Delegates to `ResultSet.getObject(int, Class)` without throwing an `AbstractMethodError`.
`static <T> T` `getObject​(java.sql.ResultSet resultSet, java.lang.String columnLabel, java.lang.Class<T> type)` Delegates to `ResultSet.getObject(String, Class)` without throwing an `AbstractMethodError`.
`static java.util.logging.Logger` `getParentLogger​(javax.sql.CommonDataSource commonDataSource)` Delegates to `CommonDataSource.getParentLogger()` without throwing an `AbstractMethodError`.
`static java.sql.ResultSet` `getPseudoColumns​(java.sql.DatabaseMetaData databaseMetaData, java.lang.String catalog, java.lang.String schemaPattern, java.lang.String tableNamePattern, java.lang.String columnNamePattern)` Delegates to `DatabaseMetaData.getPseudoColumns(String, String, String, String)` without throwing a `AbstractMethodError`.
`static java.lang.String` `getSchema​(java.sql.Connection connection)` Delegates to `Connection.getSchema()` without throwing an `AbstractMethodError`.
`static boolean` `isCloseOnCompletion​(java.sql.Statement statement)` Delegates to `Statement.isCloseOnCompletion()` without throwing an `AbstractMethodError`.
`static void` `setNetworkTimeout​(java.sql.Connection connection, java.util.concurrent.Executor executor, int milliseconds)` Delegates to `Connection.setNetworkTimeout(Executor, int)` without throwing an `AbstractMethodError`.
`static void` `setSchema​(java.sql.Connection connection, java.lang.String schema)` Delegates to `Connection.setSchema(String)` without throwing an `AbstractMethodError`.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### Jdbc41Bridge

    public Jdbc41Bridge()

### Method Detail

#### abort

    public static void abort​(java.sql.Connection connection,
                             java.util.concurrent.Executor executor)
                      throws java.sql.SQLException

Delegates to `Connection.abort(Executor)` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `Connection.abort(Executor)`, then call `Connection.close()`.

Parameters:
  `connection` - the receiver
  `executor` - See `Connection.abort(Executor)`.
Throws:
  `java.sql.SQLException` - See `Connection.abort(Executor)`.
See Also:
  `Connection.abort(Executor)`

#### closeOnCompletion

    public static void closeOnCompletion​(java.sql.Statement statement)
                                  throws java.sql.SQLException

Delegates to `Statement.closeOnCompletion()` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `Statement.closeOnCompletion()`, then just check that the connection is closed to then throw an SQLException.

Parameters:
  `statement` - See `Statement.closeOnCompletion()`
Throws:
  `java.sql.SQLException` - See `Statement.closeOnCompletion()`
See Also:
  `Statement.closeOnCompletion()`

#### generatedKeyAlwaysReturned

    public static boolean generatedKeyAlwaysReturned​(java.sql.DatabaseMetaData databaseMetaData)
                                              throws java.sql.SQLException

Delegates to `DatabaseMetaData.generatedKeyAlwaysReturned()` without throwing a `AbstractMethodError`.

If the JDBC driver does not implement `DatabaseMetaData.generatedKeyAlwaysReturned()`, then return false.

Parameters:
  `databaseMetaData` - See `DatabaseMetaData.generatedKeyAlwaysReturned()`
Returns:
  See `DatabaseMetaData.generatedKeyAlwaysReturned()`
Throws:
  `java.sql.SQLException` - See `DatabaseMetaData.generatedKeyAlwaysReturned()`
See Also:
  `DatabaseMetaData.generatedKeyAlwaysReturned()`

#### getNetworkTimeout

    public static int getNetworkTimeout​(java.sql.Connection connection)
                                 throws java.sql.SQLException

Delegates to `Connection.getNetworkTimeout()` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `Connection.getNetworkTimeout()`, then return 0.

Parameters:
  `connection` - the receiver
Returns:
  See `Connection.getNetworkTimeout()`
Throws:
  `java.sql.SQLException` - See `Connection.getNetworkTimeout()`
See Also:
  `Connection.getNetworkTimeout()`

#### getObject

    public static <T> T getObject​(java.sql.ResultSet resultSet,
                                  int columnIndex,
                                  java.lang.Class<T> type)
                           throws java.sql.SQLException

Delegates to `ResultSet.getObject(int, Class)` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `ResultSet.getObject(int, Class)`, then return 0.

Type Parameters:
  `T` - See `ResultSet.getObject(int, Class)`
Parameters:
  `resultSet` - See `ResultSet.getObject(int, Class)`
  `columnIndex` - See `ResultSet.getObject(int, Class)`
  `type` - See `ResultSet.getObject(int, Class)`
Returns:
  See `ResultSet.getObject(int, Class)`
Throws:
  `java.sql.SQLException` - See `ResultSet.getObject(int, Class)`
See Also:
  `ResultSet.getObject(int, Class)`

#### getObject

    public static <T> T getObject​(java.sql.ResultSet resultSet,
                                  java.lang.String columnLabel,
                                  java.lang.Class<T> type)
                           throws java.sql.SQLException

Delegates to `ResultSet.getObject(String, Class)` without throwing an `AbstractMethodError`.

Type Parameters:
  `T` - See `ResultSet.getObject(String, Class)`
Parameters:
  `resultSet` - See `ResultSet.getObject(String, Class)`
  `columnLabel` - See `ResultSet.getObject(String, Class)`
  `type` - See `ResultSet.getObject(String, Class)`
Returns:
  See `ResultSet.getObject(String, Class)`
Throws:
  `java.sql.SQLException` - See `ResultSet.getObject(String, Class)`
See Also:
  `ResultSet.getObject(int, Class)`

#### getParentLogger

    public static java.util.logging.Logger getParentLogger​(javax.sql.CommonDataSource commonDataSource)
                                                    throws java.sql.SQLFeatureNotSupportedException

Delegates to `CommonDataSource.getParentLogger()` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `CommonDataSource.getParentLogger()`, then return null.

Parameters:
  `commonDataSource` - See `CommonDataSource.getParentLogger()`
Returns:
  See `CommonDataSource.getParentLogger()`
Throws:
  `java.sql.SQLFeatureNotSupportedException` - See `CommonDataSource.getParentLogger()`

#### getPseudoColumns

    public static java.sql.ResultSet getPseudoColumns​(java.sql.DatabaseMetaData databaseMetaData,
                                                      java.lang.String catalog,
                                                      java.lang.String schemaPattern,
                                                      java.lang.String tableNamePattern,
                                                      java.lang.String columnNamePattern)
                                               throws java.sql.SQLException

Delegates to `DatabaseMetaData.getPseudoColumns(String, String, String, String)` without throwing a `AbstractMethodError`.

If the JDBC driver does not implement `DatabaseMetaData.getPseudoColumns(String, String, String, String)`, then return null.

Parameters:
  `databaseMetaData` - the receiver
  `catalog` - See `DatabaseMetaData.getPseudoColumns(String, String, String, String)`
  `schemaPattern` - See `DatabaseMetaData.getPseudoColumns(String, String, String, String)`
  `tableNamePattern` - See `DatabaseMetaData.getPseudoColumns(String, String, String, String)`
  `columnNamePattern` - See `DatabaseMetaData.getPseudoColumns(String, String, String, String)`
Returns:
  See `DatabaseMetaData.getPseudoColumns(String, String, String, String)`
Throws:
  `java.sql.SQLException` - See `DatabaseMetaData.getPseudoColumns(String, String, String, String)`
See Also:
  `DatabaseMetaData.getPseudoColumns(String, String, String, String)`

#### getSchema

    public static java.lang.String getSchema​(java.sql.Connection connection)
                                      throws java.sql.SQLException

Delegates to `Connection.getSchema()` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `Connection.getSchema()`, then return null.

Parameters:
  `connection` - the receiver
Returns:
  null for a JDBC 4 driver or a value per `Connection.getSchema()`.
Throws:
  `java.sql.SQLException` - See `Connection.getSchema()`.
See Also:
  `Connection.getSchema()`

#### isCloseOnCompletion

    public static boolean isCloseOnCompletion​(java.sql.Statement statement)
                                       throws java.sql.SQLException

Delegates to `Statement.isCloseOnCompletion()` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `Statement.isCloseOnCompletion()`, then just check that the connection is closed to then throw an SQLException.

Parameters:
  `statement` - See `Statement.isCloseOnCompletion()`
Returns:
  See `Statement.isCloseOnCompletion()`
Throws:
  `java.sql.SQLException` - See `Statement.isCloseOnCompletion()`
See Also:
  `Statement.closeOnCompletion()`

#### setNetworkTimeout

    public static void setNetworkTimeout​(java.sql.Connection connection,
                                         java.util.concurrent.Executor executor,
                                         int milliseconds)
                                  throws java.sql.SQLException

Delegates to `Connection.setNetworkTimeout(Executor, int)` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `Connection.setNetworkTimeout(Executor, int)`, then do nothing.

Parameters:
  `connection` - the receiver
  `executor` - See `Connection.setNetworkTimeout(Executor, int)`
  `milliseconds` - `Connection.setNetworkTimeout(Executor, int)`
Throws:
  `java.sql.SQLException` - `Connection.setNetworkTimeout(Executor, int)`
See Also:
  `Connection.setNetworkTimeout(Executor, int)`

#### setSchema

    public static void setSchema​(java.sql.Connection connection,
                                 java.lang.String schema)
                          throws java.sql.SQLException

Delegates to `Connection.setSchema(String)` without throwing an `AbstractMethodError`.

If the JDBC driver does not implement `Connection.setSchema(String)`, then do nothing.

Parameters:
  `connection` - the receiver
  `schema` - See `Connection.setSchema(String)`.
Throws:
  `java.sql.SQLException` - See `Connection.setSchema(String)`.
See Also:
  `Connection.setSchema(String)`