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
Constructor
Description
`Jdbc41Bridge()`

## Method Summary

Modifier and Type
Method
Description
`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 Details

### Jdbc41Bridge

public Jdbc41Bridge()

## Method Details

### 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)`