Package org.apache.tomcat.dbcp.dbcp2

## Class Jdbc41Bridge

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

    public class Jdbc41Bridge
    extends 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​(Connection connection, Executor executor)` Delegates to `Connection.abort(Executor)` without throwing an `AbstractMethodError`.
`static void` `closeOnCompletion​(Statement statement)` Delegates to `Statement.closeOnCompletion()` without throwing an `AbstractMethodError`.
`static boolean` `generatedKeyAlwaysReturned​(DatabaseMetaData databaseMetaData)` Delegates to `DatabaseMetaData.generatedKeyAlwaysReturned()` without throwing a `AbstractMethodError`.
`static int` `getNetworkTimeout​(Connection connection)` Delegates to `Connection.getNetworkTimeout()` without throwing an `AbstractMethodError`.
`static <T> T` `getObject​(ResultSet resultSet, int columnIndex, Class<T> type)` Delegates to `ResultSet.getObject(int, Class)` without throwing an `AbstractMethodError`.
`static <T> T` `getObject​(ResultSet resultSet, String columnLabel, Class<T> type)` Delegates to `ResultSet.getObject(String, Class)` without throwing an `AbstractMethodError`.
`static Logger` `getParentLogger​(CommonDataSource commonDataSource)` Delegates to `CommonDataSource.getParentLogger()` without throwing an `AbstractMethodError`.
`static ResultSet` `getPseudoColumns​(DatabaseMetaData databaseMetaData, String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern)` Delegates to `DatabaseMetaData.getPseudoColumns(String, String, String, String)` without throwing a `AbstractMethodError`.
`static String` `getSchema​(Connection connection)` Delegates to `Connection.getSchema()` without throwing an `AbstractMethodError`.
`static boolean` `isCloseOnCompletion​(Statement statement)` Delegates to `Statement.isCloseOnCompletion()` without throwing an `AbstractMethodError`.
`static void` `setNetworkTimeout​(Connection connection, Executor executor, int milliseconds)` Delegates to `Connection.setNetworkTimeout(Executor, int)` without throwing an `AbstractMethodError`.
`static void` `setSchema​(Connection connection, 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​(Connection connection,
                             Executor executor)
                      throws 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:
  `SQLException` - See `Connection.abort(Executor)`.
See Also:
  `Connection.abort(Executor)`

#### closeOnCompletion

    public static void closeOnCompletion​(Statement statement)
                                  throws 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:
  `SQLException` - See `Statement.closeOnCompletion()`
See Also:
  `Statement.closeOnCompletion()`

#### generatedKeyAlwaysReturned

    public static boolean generatedKeyAlwaysReturned​(DatabaseMetaData databaseMetaData)
                                              throws 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:
  `SQLException` - See `DatabaseMetaData.generatedKeyAlwaysReturned()`
See Also:
  `DatabaseMetaData.generatedKeyAlwaysReturned()`

#### getNetworkTimeout

    public static int getNetworkTimeout​(Connection connection)
                                 throws 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:
  `SQLException` - See `Connection.getNetworkTimeout()`
See Also:
  `Connection.getNetworkTimeout()`

#### getObject

    public static <T> T getObject​(ResultSet resultSet,
                                  int columnIndex,
                                  Class<T> type)
                           throws 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:
  `SQLException` - See `ResultSet.getObject(int, Class)`
See Also:
  `ResultSet.getObject(int, Class)`

#### getObject

    public static <T> T getObject​(ResultSet resultSet,
                                  String columnLabel,
                                  Class<T> type)
                           throws 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:
  `SQLException` - See `ResultSet.getObject(String, Class)`
See Also:
  `ResultSet.getObject(int, Class)`

#### getParentLogger

    public static Logger getParentLogger​(CommonDataSource commonDataSource)
                                  throws 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:
  `SQLFeatureNotSupportedException` - See `CommonDataSource.getParentLogger()`

#### getPseudoColumns

    public static ResultSet getPseudoColumns​(DatabaseMetaData databaseMetaData,
                                             String catalog,
                                             String schemaPattern,
                                             String tableNamePattern,
                                             String columnNamePattern)
                                      throws 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:
  `SQLException` - See `DatabaseMetaData.getPseudoColumns(String, String, String, String)`
See Also:
  `DatabaseMetaData.getPseudoColumns(String, String, String, String)`

#### getSchema

    public static String getSchema​(Connection connection)
                            throws 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:
  `SQLException` - See `Connection.getSchema()`.
See Also:
  `Connection.getSchema()`

#### isCloseOnCompletion

    public static boolean isCloseOnCompletion​(Statement statement)
                                       throws 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:
  `SQLException` - See `Statement.isCloseOnCompletion()`
See Also:
  `Statement.closeOnCompletion()`

#### setNetworkTimeout

    public static void setNetworkTimeout​(Connection connection,
                                         Executor executor,
                                         int milliseconds)
                                  throws 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:
  `SQLException` - `Connection.setNetworkTimeout(Executor, int)`
See Also:
  `Connection.setNetworkTimeout(Executor, int)`

#### setSchema

    public static void setSchema​(Connection connection,
                                 String schema)
                          throws 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:
  `SQLException` - See `Connection.setSchema(String)`.
See Also:
  `Connection.setSchema(String)`