org.springframework.jdbc.support.nativejdbc
Class CommonsDbcpNativeJdbcExtractor

java.lang.Object
  extended by org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
      extended by org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor
All Implemented Interfaces:
NativeJdbcExtractor

public class CommonsDbcpNativeJdbcExtractor
extends NativeJdbcExtractorAdapter

Implementation of the NativeJdbcExtractor interface for the Jakarta Commons DBCP connection pool, version 1.1 or higher.

Returns the underlying native Connection, Statement, etc to application code instead of DBCP's wrapper implementations. The returned JDBC classes can then safely be cast, e.g. to oracle.jdbc.OracleConnection.

This NativeJdbcExtractor can be set just to allow working with a Commons DBCP DataSource: If a given object is not a Commons DBCP wrapper, it will be returned as-is.

Note that this version of CommonsDbcpNativeJdbcExtractor will work against the original Commons DBCP in org.apache.commons.dbcp as well as against Tomcat 5.5's relocated Commons DBCP version in the org.apache.tomcat.dbcp.dbcp package.

Since:
25.08.2003
Author:
Juergen Hoeller

Field Summary
private static java.lang.String GET_INNERMOST_DELEGATE_METHOD_NAME
           
 
Constructor Summary
CommonsDbcpNativeJdbcExtractor()
           
 
Method Summary
protected  java.sql.Connection doGetNativeConnection(java.sql.Connection con)
          Not able to unwrap: return passed-in Connection.
private static java.lang.Object getInnermostDelegate(java.lang.Object obj)
          Extracts the innermost delegate from the given Commons DBCP object.
 java.sql.CallableStatement getNativeCallableStatement(java.sql.CallableStatement cs)
          Not able to unwrap: return passed-in CallableStatement.
 java.sql.PreparedStatement getNativePreparedStatement(java.sql.PreparedStatement ps)
          Not able to unwrap: return passed-in PreparedStatement.
 java.sql.ResultSet getNativeResultSet(java.sql.ResultSet rs)
          Not able to unwrap: return passed-in ResultSet.
 java.sql.Statement getNativeStatement(java.sql.Statement stmt)
          Not able to unwrap: return passed-in Statement.
 
Methods inherited from class org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
getNativeConnection, getNativeConnectionFromStatement, isNativeConnectionNecessaryForNativeCallableStatements, isNativeConnectionNecessaryForNativePreparedStatements, isNativeConnectionNecessaryForNativeStatements
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

GET_INNERMOST_DELEGATE_METHOD_NAME

private static final java.lang.String GET_INNERMOST_DELEGATE_METHOD_NAME
See Also:
Constant Field Values
Constructor Detail

CommonsDbcpNativeJdbcExtractor

public CommonsDbcpNativeJdbcExtractor()
Method Detail

getInnermostDelegate

private static java.lang.Object getInnermostDelegate(java.lang.Object obj)
                                              throws java.sql.SQLException
Extracts the innermost delegate from the given Commons DBCP object. Falls back to the given object if no underlying object found.

Parameters:
obj - the Commons DBCP Connection/Statement/ResultSet
Returns:
the underlying native Connection/Statement/ResultSet
Throws:
java.sql.SQLException

doGetNativeConnection

protected java.sql.Connection doGetNativeConnection(java.sql.Connection con)
                                             throws java.sql.SQLException
Description copied from class: NativeJdbcExtractorAdapter
Not able to unwrap: return passed-in Connection.

Overrides:
doGetNativeConnection in class NativeJdbcExtractorAdapter
Throws:
java.sql.SQLException

getNativeStatement

public java.sql.Statement getNativeStatement(java.sql.Statement stmt)
                                      throws java.sql.SQLException
Description copied from class: NativeJdbcExtractorAdapter
Not able to unwrap: return passed-in Statement.

Specified by:
getNativeStatement in interface NativeJdbcExtractor
Overrides:
getNativeStatement in class NativeJdbcExtractorAdapter
Parameters:
stmt - the Statement handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC Statement, if possible; else, the original Statement
Throws:
java.sql.SQLException - if thrown by JDBC methods

getNativePreparedStatement

public java.sql.PreparedStatement getNativePreparedStatement(java.sql.PreparedStatement ps)
                                                      throws java.sql.SQLException
Description copied from class: NativeJdbcExtractorAdapter
Not able to unwrap: return passed-in PreparedStatement.

Specified by:
getNativePreparedStatement in interface NativeJdbcExtractor
Overrides:
getNativePreparedStatement in class NativeJdbcExtractorAdapter
Parameters:
ps - the PreparedStatement handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC PreparedStatement, if possible; else, the original PreparedStatement
Throws:
java.sql.SQLException - if thrown by JDBC methods

getNativeCallableStatement

public java.sql.CallableStatement getNativeCallableStatement(java.sql.CallableStatement cs)
                                                      throws java.sql.SQLException
Description copied from class: NativeJdbcExtractorAdapter
Not able to unwrap: return passed-in CallableStatement.

Specified by:
getNativeCallableStatement in interface NativeJdbcExtractor
Overrides:
getNativeCallableStatement in class NativeJdbcExtractorAdapter
Parameters:
cs - the CallableStatement handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC CallableStatement, if possible; else, the original CallableStatement
Throws:
java.sql.SQLException - if thrown by JDBC methods

getNativeResultSet

public java.sql.ResultSet getNativeResultSet(java.sql.ResultSet rs)
                                      throws java.sql.SQLException
Description copied from class: NativeJdbcExtractorAdapter
Not able to unwrap: return passed-in ResultSet.

Specified by:
getNativeResultSet in interface NativeJdbcExtractor
Overrides:
getNativeResultSet in class NativeJdbcExtractorAdapter
Parameters:
rs - the ResultSet handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC ResultSet, if possible; else, the original ResultSet
Throws:
java.sql.SQLException - if thrown by JDBC methods