org.apache.commons.dbcp2
Class DelegatingStatement
- java.lang.Object
-
- org.apache.commons.dbcp2.AbandonedTrace
-
- org.apache.commons.dbcp2.DelegatingStatement
-
- All Implemented Interfaces:
- AutoCloseable, Statement, Wrapper, TrackedUse
- Direct Known Subclasses:
- DelegatingPreparedStatement
public class DelegatingStatement extends AbandonedTrace implements Statement
A base delegating implementation ofStatement
.All of the methods from the
Statement
interface simply check to see that theStatement
is active, and call the corresponding method on the "delegate" provided in my constructor.Extends AbandonedTrace to implement Statement tracking and logging of code which created the Statement. Tracking the Statement ensures that the Connection which created it can close any open Statement's on Connection close.
- Since:
- 2.0
-
-
Field Summary
-
Fields inherited from interface java.sql.Statement
CLOSE_ALL_RESULTS, CLOSE_CURRENT_RESULT, EXECUTE_FAILED, KEEP_CURRENT_RESULT, NO_GENERATED_KEYS, RETURN_GENERATED_KEYS, SUCCESS_NO_INFO
-
-
Constructor Summary
Constructors Constructor and Description DelegatingStatement(DelegatingConnection<?> connection, Statement statement)
Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method and Description void
activate()
void
addBatch(String sql)
void
cancel()
protected void
checkOpen()
void
clearBatch()
void
clearWarnings()
void
close()
Close this DelegatingStatement, and close any ResultSets that were not explicitly closed.void
closeOnCompletion()
boolean
execute(String sql)
boolean
execute(String sql, int autoGeneratedKeys)
boolean
execute(String sql, int[] columnIndexes)
boolean
execute(String sql, String[] columnNames)
int[]
executeBatch()
ResultSet
executeQuery(String sql)
int
executeUpdate(String sql)
int
executeUpdate(String sql, int autoGeneratedKeys)
int
executeUpdate(String sql, int[] columnIndexes)
int
executeUpdate(String sql, String[] columnNames)
protected void
finalize()
Connection
getConnection()
protected DelegatingConnection<?>
getConnectionInternal()
Statement
getDelegate()
Returns my underlyingStatement
.int
getFetchDirection()
int
getFetchSize()
ResultSet
getGeneratedKeys()
Statement
getInnermostDelegate()
If my underlyingStatement
is not aDelegatingStatement
, returns it, otherwise recursively invokes this method on my delegate.int
getMaxFieldSize()
int
getMaxRows()
boolean
getMoreResults()
boolean
getMoreResults(int current)
int
getQueryTimeout()
ResultSet
getResultSet()
int
getResultSetConcurrency()
int
getResultSetHoldability()
int
getResultSetType()
int
getUpdateCount()
SQLWarning
getWarnings()
protected void
handleException(SQLException e)
boolean
isClosed()
protected boolean
isClosedInternal()
boolean
isCloseOnCompletion()
boolean
isPoolable()
boolean
isWrapperFor(Class<?> iface)
void
passivate()
protected void
setClosedInternal(boolean closed)
void
setCursorName(String name)
void
setDelegate(Statement statement)
Sets my delegate.void
setEscapeProcessing(boolean enable)
void
setFetchDirection(int direction)
void
setFetchSize(int rows)
void
setMaxFieldSize(int max)
void
setMaxRows(int max)
void
setPoolable(boolean poolable)
void
setQueryTimeout(int seconds)
String
toString()
Returns a String representation of this object.<T> T
unwrap(Class<T> iface)
-
Methods inherited from class org.apache.commons.dbcp2.AbandonedTrace
addTrace, clearTrace, getLastUsed, getTrace, removeTrace, setLastUsed, setLastUsed
-
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.sql.Statement
executeLargeBatch, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, executeLargeUpdate, getLargeMaxRows, getLargeUpdateCount, setLargeMaxRows
-
-
-
-
Constructor Detail
-
DelegatingStatement
public DelegatingStatement(DelegatingConnection<?> connection, Statement statement)
Create a wrapper for the Statement which traces this Statement to the Connection which created it and the code which created it.- Parameters:
statement
- theStatement
to delegate all calls to.connection
- theDelegatingConnection
that created this statement.
-
-
Method Detail
-
getDelegate
public Statement getDelegate()
Returns my underlyingStatement
.- Returns:
- my underlying
Statement
. - See Also:
getInnermostDelegate()
-
getInnermostDelegate
public Statement getInnermostDelegate()
If my underlyingStatement
is not aDelegatingStatement
, returns it, otherwise recursively invokes this method on my delegate.Hence this method will return the first delegate that is not a
DelegatingStatement
ornull
when no non-DelegatingStatement
delegate can be found by traversing this chain.This method is useful when you may have nested
DelegatingStatement
s, and you want to make sure to obtain a "genuine"Statement
.- Returns:
- The innermost delegate.
- See Also:
getDelegate()
-
setDelegate
public void setDelegate(Statement statement)
Sets my delegate.- Parameters:
statement
- my delegate.
-
isClosedInternal
protected boolean isClosedInternal()
-
setClosedInternal
protected void setClosedInternal(boolean closed)
-
checkOpen
protected void checkOpen() throws SQLException
- Throws:
SQLException
-
close
public void close() throws SQLException
Close this DelegatingStatement, and close any ResultSets that were not explicitly closed.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceStatement
- Throws:
SQLException
-
handleException
protected void handleException(SQLException e) throws SQLException
- Throws:
SQLException
-
activate
public void activate() throws SQLException
- Throws:
SQLException
- thrown by the delegating statement.- Since:
- 2.4.0 made public, was protected in 2.3.0.
-
passivate
public void passivate() throws SQLException
- Throws:
SQLException
- thrown by the delegating statement.- Since:
- 2.4.0 made public, was protected in 2.3.0.
-
getConnection
public Connection getConnection() throws SQLException
- Specified by:
getConnection
in interfaceStatement
- Throws:
SQLException
-
getConnectionInternal
protected DelegatingConnection<?> getConnectionInternal()
-
executeQuery
public ResultSet executeQuery(String sql) throws SQLException
- Specified by:
executeQuery
in interfaceStatement
- Throws:
SQLException
-
getResultSet
public ResultSet getResultSet() throws SQLException
- Specified by:
getResultSet
in interfaceStatement
- Throws:
SQLException
-
executeUpdate
public int executeUpdate(String sql) throws SQLException
- Specified by:
executeUpdate
in interfaceStatement
- Throws:
SQLException
-
getMaxFieldSize
public int getMaxFieldSize() throws SQLException
- Specified by:
getMaxFieldSize
in interfaceStatement
- Throws:
SQLException
-
setMaxFieldSize
public void setMaxFieldSize(int max) throws SQLException
- Specified by:
setMaxFieldSize
in interfaceStatement
- Throws:
SQLException
-
getMaxRows
public int getMaxRows() throws SQLException
- Specified by:
getMaxRows
in interfaceStatement
- Throws:
SQLException
-
setMaxRows
public void setMaxRows(int max) throws SQLException
- Specified by:
setMaxRows
in interfaceStatement
- Throws:
SQLException
-
setEscapeProcessing
public void setEscapeProcessing(boolean enable) throws SQLException
- Specified by:
setEscapeProcessing
in interfaceStatement
- Throws:
SQLException
-
getQueryTimeout
public int getQueryTimeout() throws SQLException
- Specified by:
getQueryTimeout
in interfaceStatement
- Throws:
SQLException
-
setQueryTimeout
public void setQueryTimeout(int seconds) throws SQLException
- Specified by:
setQueryTimeout
in interfaceStatement
- Throws:
SQLException
-
cancel
public void cancel() throws SQLException
- Specified by:
cancel
in interfaceStatement
- Throws:
SQLException
-
getWarnings
public SQLWarning getWarnings() throws SQLException
- Specified by:
getWarnings
in interfaceStatement
- Throws:
SQLException
-
clearWarnings
public void clearWarnings() throws SQLException
- Specified by:
clearWarnings
in interfaceStatement
- Throws:
SQLException
-
setCursorName
public void setCursorName(String name) throws SQLException
- Specified by:
setCursorName
in interfaceStatement
- Throws:
SQLException
-
execute
public boolean execute(String sql) throws SQLException
- Specified by:
execute
in interfaceStatement
- Throws:
SQLException
-
getUpdateCount
public int getUpdateCount() throws SQLException
- Specified by:
getUpdateCount
in interfaceStatement
- Throws:
SQLException
-
getMoreResults
public boolean getMoreResults() throws SQLException
- Specified by:
getMoreResults
in interfaceStatement
- Throws:
SQLException
-
setFetchDirection
public void setFetchDirection(int direction) throws SQLException
- Specified by:
setFetchDirection
in interfaceStatement
- Throws:
SQLException
-
getFetchDirection
public int getFetchDirection() throws SQLException
- Specified by:
getFetchDirection
in interfaceStatement
- Throws:
SQLException
-
setFetchSize
public void setFetchSize(int rows) throws SQLException
- Specified by:
setFetchSize
in interfaceStatement
- Throws:
SQLException
-
getFetchSize
public int getFetchSize() throws SQLException
- Specified by:
getFetchSize
in interfaceStatement
- Throws:
SQLException
-
getResultSetConcurrency
public int getResultSetConcurrency() throws SQLException
- Specified by:
getResultSetConcurrency
in interfaceStatement
- Throws:
SQLException
-
getResultSetType
public int getResultSetType() throws SQLException
- Specified by:
getResultSetType
in interfaceStatement
- Throws:
SQLException
-
addBatch
public void addBatch(String sql) throws SQLException
- Specified by:
addBatch
in interfaceStatement
- Throws:
SQLException
-
clearBatch
public void clearBatch() throws SQLException
- Specified by:
clearBatch
in interfaceStatement
- Throws:
SQLException
-
executeBatch
public int[] executeBatch() throws SQLException
- Specified by:
executeBatch
in interfaceStatement
- Throws:
SQLException
-
getMoreResults
public boolean getMoreResults(int current) throws SQLException
- Specified by:
getMoreResults
in interfaceStatement
- Throws:
SQLException
-
getGeneratedKeys
public ResultSet getGeneratedKeys() throws SQLException
- Specified by:
getGeneratedKeys
in interfaceStatement
- Throws:
SQLException
-
executeUpdate
public int executeUpdate(String sql, int autoGeneratedKeys) throws SQLException
- Specified by:
executeUpdate
in interfaceStatement
- Throws:
SQLException
-
executeUpdate
public int executeUpdate(String sql, int[] columnIndexes) throws SQLException
- Specified by:
executeUpdate
in interfaceStatement
- Throws:
SQLException
-
executeUpdate
public int executeUpdate(String sql, String[] columnNames) throws SQLException
- Specified by:
executeUpdate
in interfaceStatement
- Throws:
SQLException
-
execute
public boolean execute(String sql, int autoGeneratedKeys) throws SQLException
- Specified by:
execute
in interfaceStatement
- Throws:
SQLException
-
execute
public boolean execute(String sql, int[] columnIndexes) throws SQLException
- Specified by:
execute
in interfaceStatement
- Throws:
SQLException
-
execute
public boolean execute(String sql, String[] columnNames) throws SQLException
- Specified by:
execute
in interfaceStatement
- Throws:
SQLException
-
getResultSetHoldability
public int getResultSetHoldability() throws SQLException
- Specified by:
getResultSetHoldability
in interfaceStatement
- Throws:
SQLException
-
isClosed
public boolean isClosed() throws SQLException
- Specified by:
isClosed
in interfaceStatement
- Throws:
SQLException
-
isWrapperFor
public boolean isWrapperFor(Class<?> iface) throws SQLException
- Specified by:
isWrapperFor
in interfaceWrapper
- Throws:
SQLException
-
unwrap
public <T> T unwrap(Class<T> iface) throws SQLException
- Specified by:
unwrap
in interfaceWrapper
- Throws:
SQLException
-
setPoolable
public void setPoolable(boolean poolable) throws SQLException
- Specified by:
setPoolable
in interfaceStatement
- Throws:
SQLException
-
isPoolable
public boolean isPoolable() throws SQLException
- Specified by:
isPoolable
in interfaceStatement
- Throws:
SQLException
-
closeOnCompletion
public void closeOnCompletion() throws SQLException
- Specified by:
closeOnCompletion
in interfaceStatement
- Throws:
SQLException
-
isCloseOnCompletion
public boolean isCloseOnCompletion() throws SQLException
- Specified by:
isCloseOnCompletion
in interfaceStatement
- Throws:
SQLException
-
-