Class DelegatingConnection<C extends Connection>
- java.lang.Object
-
- org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
-
- org.apache.tomcat.dbcp.dbcp2.DelegatingConnection<C>
-
- Type Parameters:
C- the Connection type
- All Implemented Interfaces:
AutoCloseable,Connection,Wrapper,TrackedUse
- Direct Known Subclasses:
PoolableConnection,PoolingConnection
public class DelegatingConnection<C extends Connection> extends AbandonedTrace implements Connection
A base delegating implementation ofConnection.All of the methods from the
Connectioninterface simply check to see that theConnectionis active, and call the corresponding method on the "delegate" provided in my constructor.Extends AbandonedTrace to implement Connection tracking and logging of code which created the Connection. Tracking the Connection ensures that the AbandonedObjectPool can close this connection and recycle it if its pool of connections is nearing exhaustion and this connection's last usage is older than the removeAbandonedTimeout.
- Since:
- 2.0
-
-
Field Summary
-
Fields inherited from interface java.sql.Connection
TRANSACTION_NONE, TRANSACTION_READ_COMMITTED, TRANSACTION_READ_UNCOMMITTED, TRANSACTION_REPEATABLE_READ, TRANSACTION_SERIALIZABLE
-
-
Constructor Summary
Constructors Constructor Description DelegatingConnection(C c)Creates a wrapper for the Connection which traces this Connection in the AbandonedObjectPool.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidabort(Executor executor)protected voidactivate()protected voidcheckOpen()voidclearCachedState()Can be used to clear cached state when it is known that the underlying connection may have been accessed directly.voidclearWarnings()voidclose()Closes the underlying connection, and close any Statements that were not explicitly closed.protected voidcloseInternal()voidcommit()ArraycreateArrayOf(String typeName, Object[] elements)BlobcreateBlob()ClobcreateClob()NClobcreateNClob()SQLXMLcreateSQLXML()StatementcreateStatement()StatementcreateStatement(int resultSetType, int resultSetConcurrency)StatementcreateStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability)StructcreateStruct(String typeName, Object[] attributes)booleangetAutoCommit()booleangetCacheState()Returns the state caching flag.StringgetCatalog()PropertiesgetClientInfo()StringgetClientInfo(String name)IntegergetDefaultQueryTimeout()Gets the default query timeout that will be used forStatements created from this connection.CgetDelegate()Returns my underlyingConnection.protected CgetDelegateInternal()intgetHoldability()ConnectiongetInnermostDelegate()If my underlyingConnectionis not aDelegatingConnection, returns it, otherwise recursively invokes this method on my delegate.ConnectiongetInnermostDelegateInternal()Although this method is public, it is part of the internal API and should not be used by clients.DatabaseMetaDatagetMetaData()intgetNetworkTimeout()StringgetSchema()intgetTransactionIsolation()Map<String,Class<?>>getTypeMap()SQLWarninggetWarnings()protected voidhandleException(SQLException e)Handles the given exception by throwing it.protected <T extends Throwable>
ThandleExceptionNoThrow(T e)Handles the givenSQLException.booleaninnermostDelegateEquals(Connection c)Compares innermost delegate to the given connection.booleanisClosed()protected booleanisClosedInternal()booleanisReadOnly()booleanisValid(int timeoutSeconds)booleanisWrapperFor(Class<?> iface)StringnativeSQL(String sql)protected voidpassivate()CallableStatementprepareCall(String sql)CallableStatementprepareCall(String sql, int resultSetType, int resultSetConcurrency)CallableStatementprepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)PreparedStatementprepareStatement(String sql)PreparedStatementprepareStatement(String sql, int autoGeneratedKeys)PreparedStatementprepareStatement(String sql, int[] columnIndexes)PreparedStatementprepareStatement(String sql, int resultSetType, int resultSetConcurrency)PreparedStatementprepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability)PreparedStatementprepareStatement(String sql, String[] columnNames)voidreleaseSavepoint(Savepoint savepoint)voidrollback()voidrollback(Savepoint savepoint)voidsetAutoCommit(boolean autoCommit)voidsetCacheState(boolean cacheState)Sets the state caching flag.voidsetCatalog(String catalog)voidsetClientInfo(String name, String value)voidsetClientInfo(Properties properties)protected voidsetClosedInternal(boolean closed)voidsetDefaultQueryTimeout(Integer defaultQueryTimeoutSeconds)Sets the default query timeout that will be used forStatements created from this connection.voidsetDelegate(C connection)Sets my delegate.voidsetHoldability(int holdability)voidsetNetworkTimeout(Executor executor, int milliseconds)voidsetReadOnly(boolean readOnly)SavepointsetSavepoint()SavepointsetSavepoint(String name)voidsetSchema(String schema)voidsetTransactionIsolation(int level)voidsetTypeMap(Map<String,Class<?>> map)StringtoString()Returns a string representation of the metadata associated with the innermost delegate connection.<T> Tunwrap(Class<T> iface)-
Methods inherited from class org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
addTrace, clearTrace, getLastUsed, getTrace, removeThisTrace, removeTrace, setLastUsed, setLastUsed
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.sql.Connection
beginRequest, endRequest, setShardingKey, setShardingKey, setShardingKeyIfValid, setShardingKeyIfValid
-
-
-
-
Constructor Detail
-
DelegatingConnection
public DelegatingConnection(C c)
Creates a wrapper for the Connection which traces this Connection in the AbandonedObjectPool.- Parameters:
c- theConnectionto delegate all calls to.
-
-
Method Detail
-
toString
public String toString()
Returns a string representation of the metadata associated with the innermost delegate connection.
-
getDelegate
public C getDelegate()
Returns my underlyingConnection.- Returns:
- my underlying
Connection.
-
getDelegateInternal
protected final C getDelegateInternal()
-
innermostDelegateEquals
public boolean innermostDelegateEquals(Connection c)
Compares innermost delegate to the given connection.- Parameters:
c- connection to compare innermost delegate with- Returns:
- true if innermost delegate equals
c
-
getInnermostDelegate
public Connection getInnermostDelegate()
If my underlyingConnectionis not aDelegatingConnection, returns it, otherwise recursively invokes this method on my delegate.Hence this method will return the first delegate that is not a
DelegatingConnection, ornullwhen no non-DelegatingConnectiondelegate can be found by traversing this chain.This method is useful when you may have nested
DelegatingConnections, and you want to make sure to obtain a "genuine"Connection.- Returns:
- innermost delegate.
-
getInnermostDelegateInternal
public final Connection getInnermostDelegateInternal()
Although this method is public, it is part of the internal API and should not be used by clients. The signature of this method may change at any time including in ways that break backwards compatibility.- Returns:
- innermost delegate.
-
setDelegate
public void setDelegate(C connection)
Sets my delegate.- Parameters:
connection- my delegate.
-
close
public void close() throws SQLExceptionCloses the underlying connection, and close any Statements that were not explicitly closed. Sub-classes that override this method must:- Call passivate()
- Call close (or the equivalent appropriate action) on the wrapped connection
- Set _closed to
false
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceConnection- Throws:
SQLException
-
isClosedInternal
protected boolean isClosedInternal()
-
setClosedInternal
protected void setClosedInternal(boolean closed)
-
closeInternal
protected final void closeInternal() throws SQLException- Throws:
SQLException
-
handleException
protected void handleException(SQLException e) throws SQLException
Handles the given exception by throwing it.- Parameters:
e- the exception to throw.- Throws:
SQLException- the exception to throw.
-
handleExceptionNoThrow
protected <T extends Throwable> T handleExceptionNoThrow(T e)
Handles the givenSQLException.- Type Parameters:
T- The throwable type.- Parameters:
e- The SQLException- Returns:
- the given
SQLException - Since:
- 2.7.0
-
createStatement
public Statement createStatement() throws SQLException
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
createStatement
public Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql) throws SQLException
- Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency) throws SQLException
- Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
clearWarnings
public void clearWarnings() throws SQLException- Specified by:
clearWarningsin interfaceConnection- Throws:
SQLException
-
commit
public void commit() throws SQLException- Specified by:
commitin interfaceConnection- Throws:
SQLException
-
getCacheState
public boolean getCacheState()
Returns the state caching flag.- Returns:
- the state caching flag
-
getAutoCommit
public boolean getAutoCommit() throws SQLException- Specified by:
getAutoCommitin interfaceConnection- Throws:
SQLException
-
getCatalog
public String getCatalog() throws SQLException
- Specified by:
getCatalogin interfaceConnection- Throws:
SQLException
-
getMetaData
public DatabaseMetaData getMetaData() throws SQLException
- Specified by:
getMetaDatain interfaceConnection- Throws:
SQLException
-
getTransactionIsolation
public int getTransactionIsolation() throws SQLException- Specified by:
getTransactionIsolationin interfaceConnection- Throws:
SQLException
-
getTypeMap
public Map<String,Class<?>> getTypeMap() throws SQLException
- Specified by:
getTypeMapin interfaceConnection- Throws:
SQLException
-
getWarnings
public SQLWarning getWarnings() throws SQLException
- Specified by:
getWarningsin interfaceConnection- Throws:
SQLException
-
isReadOnly
public boolean isReadOnly() throws SQLException- Specified by:
isReadOnlyin interfaceConnection- Throws:
SQLException
-
nativeSQL
public String nativeSQL(String sql) throws SQLException
- Specified by:
nativeSQLin interfaceConnection- Throws:
SQLException
-
rollback
public void rollback() throws SQLException- Specified by:
rollbackin interfaceConnection- Throws:
SQLException
-
getDefaultQueryTimeout
public Integer getDefaultQueryTimeout()
Gets the default query timeout that will be used forStatements created from this connection.nullmeans that the driver default will be used.- Returns:
- query timeout limit in seconds; zero means there is no limit.
-
setDefaultQueryTimeout
public void setDefaultQueryTimeout(Integer defaultQueryTimeoutSeconds)
Sets the default query timeout that will be used forStatements created from this connection.nullmeans that the driver default will be used.- Parameters:
defaultQueryTimeoutSeconds- the new query timeout limit in seconds; zero means there is no limit
-
setCacheState
public void setCacheState(boolean cacheState)
Sets the state caching flag.- Parameters:
cacheState- The new value for the state caching flag
-
clearCachedState
public void clearCachedState()
Can be used to clear cached state when it is known that the underlying connection may have been accessed directly.
-
setAutoCommit
public void setAutoCommit(boolean autoCommit) throws SQLException- Specified by:
setAutoCommitin interfaceConnection- Throws:
SQLException
-
setCatalog
public void setCatalog(String catalog) throws SQLException
- Specified by:
setCatalogin interfaceConnection- Throws:
SQLException
-
setReadOnly
public void setReadOnly(boolean readOnly) throws SQLException- Specified by:
setReadOnlyin interfaceConnection- Throws:
SQLException
-
setTransactionIsolation
public void setTransactionIsolation(int level) throws SQLException- Specified by:
setTransactionIsolationin interfaceConnection- Throws:
SQLException
-
setTypeMap
public void setTypeMap(Map<String,Class<?>> map) throws SQLException
- Specified by:
setTypeMapin interfaceConnection- Throws:
SQLException
-
isClosed
public boolean isClosed() throws SQLException- Specified by:
isClosedin interfaceConnection- Throws:
SQLException
-
checkOpen
protected void checkOpen() throws SQLException- Throws:
SQLException
-
activate
protected void activate()
-
passivate
protected void passivate() throws SQLException- Throws:
SQLException
-
getHoldability
public int getHoldability() throws SQLException- Specified by:
getHoldabilityin interfaceConnection- Throws:
SQLException
-
setHoldability
public void setHoldability(int holdability) throws SQLException- Specified by:
setHoldabilityin interfaceConnection- Throws:
SQLException
-
setSavepoint
public Savepoint setSavepoint() throws SQLException
- Specified by:
setSavepointin interfaceConnection- Throws:
SQLException
-
setSavepoint
public Savepoint setSavepoint(String name) throws SQLException
- Specified by:
setSavepointin interfaceConnection- Throws:
SQLException
-
rollback
public void rollback(Savepoint savepoint) throws SQLException
- Specified by:
rollbackin interfaceConnection- Throws:
SQLException
-
releaseSavepoint
public void releaseSavepoint(Savepoint savepoint) throws SQLException
- Specified by:
releaseSavepointin interfaceConnection- Throws:
SQLException
-
createStatement
public Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
- Specified by:
createStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareCall
public CallableStatement prepareCall(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException
- Specified by:
prepareCallin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, int[] columnIndexes) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
prepareStatement
public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException
- Specified by:
prepareStatementin interfaceConnection- Throws:
SQLException
-
isWrapperFor
public boolean isWrapperFor(Class<?> iface) throws SQLException
- Specified by:
isWrapperForin interfaceWrapper- Throws:
SQLException
-
unwrap
public <T> T unwrap(Class<T> iface) throws SQLException
- Specified by:
unwrapin interfaceWrapper- Throws:
SQLException
-
createArrayOf
public Array createArrayOf(String typeName, Object[] elements) throws SQLException
- Specified by:
createArrayOfin interfaceConnection- Throws:
SQLException
-
createBlob
public Blob createBlob() throws SQLException
- Specified by:
createBlobin interfaceConnection- Throws:
SQLException
-
createClob
public Clob createClob() throws SQLException
- Specified by:
createClobin interfaceConnection- Throws:
SQLException
-
createNClob
public NClob createNClob() throws SQLException
- Specified by:
createNClobin interfaceConnection- Throws:
SQLException
-
createSQLXML
public SQLXML createSQLXML() throws SQLException
- Specified by:
createSQLXMLin interfaceConnection- Throws:
SQLException
-
createStruct
public Struct createStruct(String typeName, Object[] attributes) throws SQLException
- Specified by:
createStructin interfaceConnection- Throws:
SQLException
-
isValid
public boolean isValid(int timeoutSeconds) throws SQLException- Specified by:
isValidin interfaceConnection- Throws:
SQLException
-
setClientInfo
public void setClientInfo(String name, String value) throws SQLClientInfoException
- Specified by:
setClientInfoin interfaceConnection- Throws:
SQLClientInfoException
-
setClientInfo
public void setClientInfo(Properties properties) throws SQLClientInfoException
- Specified by:
setClientInfoin interfaceConnection- Throws:
SQLClientInfoException
-
getClientInfo
public Properties getClientInfo() throws SQLException
- Specified by:
getClientInfoin interfaceConnection- Throws:
SQLException
-
getClientInfo
public String getClientInfo(String name) throws SQLException
- Specified by:
getClientInfoin interfaceConnection- Throws:
SQLException
-
setSchema
public void setSchema(String schema) throws SQLException
- Specified by:
setSchemain interfaceConnection- Throws:
SQLException
-
getSchema
public String getSchema() throws SQLException
- Specified by:
getSchemain interfaceConnection- Throws:
SQLException
-
abort
public void abort(Executor executor) throws SQLException
- Specified by:
abortin interfaceConnection- Throws:
SQLException
-
setNetworkTimeout
public void setNetworkTimeout(Executor executor, int milliseconds) throws SQLException
- Specified by:
setNetworkTimeoutin interfaceConnection- Throws:
SQLException
-
getNetworkTimeout
public int getNetworkTimeout() throws SQLException- Specified by:
getNetworkTimeoutin interfaceConnection- Throws:
SQLException
-
-