Package org.apache.tomcat.dbcp.dbcp2
Class DelegatingStatement
- java.lang.Object
-
- org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
-
- org.apache.tomcat.dbcp.dbcp2.DelegatingStatement
-
- All Implemented Interfaces:
java.lang.AutoCloseable
,java.sql.Statement
,java.sql.Wrapper
,TrackedUse
- Direct Known Subclasses:
DelegatingPreparedStatement
public class DelegatingStatement extends AbandonedTrace implements java.sql.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
-
-
Constructor Summary
Constructors Constructor Description DelegatingStatement(DelegatingConnection<?> connection, java.sql.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 Description void
activate()
void
addBatch(java.lang.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(java.lang.String sql)
boolean
execute(java.lang.String sql, int autoGeneratedKeys)
boolean
execute(java.lang.String sql, int[] columnIndexes)
boolean
execute(java.lang.String sql, java.lang.String[] columnNames)
int[]
executeBatch()
long[]
executeLargeBatch()
long
executeLargeUpdate(java.lang.String sql)
long
executeLargeUpdate(java.lang.String sql, int autoGeneratedKeys)
long
executeLargeUpdate(java.lang.String sql, int[] columnIndexes)
long
executeLargeUpdate(java.lang.String sql, java.lang.String[] columnNames)
java.sql.ResultSet
executeQuery(java.lang.String sql)
int
executeUpdate(java.lang.String sql)
int
executeUpdate(java.lang.String sql, int autoGeneratedKeys)
int
executeUpdate(java.lang.String sql, int[] columnIndexes)
int
executeUpdate(java.lang.String sql, java.lang.String[] columnNames)
protected void
finalize()
java.sql.Connection
getConnection()
protected DelegatingConnection<?>
getConnectionInternal()
java.sql.Statement
getDelegate()
Returns my underlyingStatement
.int
getFetchDirection()
int
getFetchSize()
java.sql.ResultSet
getGeneratedKeys()
java.sql.Statement
getInnermostDelegate()
If my underlyingStatement
is not aDelegatingStatement
, returns it, otherwise recursively invokes this method on my delegate.long
getLargeMaxRows()
long
getLargeUpdateCount()
int
getMaxFieldSize()
int
getMaxRows()
boolean
getMoreResults()
boolean
getMoreResults(int current)
int
getQueryTimeout()
java.sql.ResultSet
getResultSet()
int
getResultSetConcurrency()
int
getResultSetHoldability()
int
getResultSetType()
int
getUpdateCount()
java.sql.SQLWarning
getWarnings()
protected void
handleException(java.sql.SQLException e)
boolean
isClosed()
protected boolean
isClosedInternal()
boolean
isCloseOnCompletion()
boolean
isPoolable()
boolean
isWrapperFor(java.lang.Class<?> iface)
void
passivate()
protected void
setClosedInternal(boolean closed)
void
setCursorName(java.lang.String name)
void
setDelegate(java.sql.Statement statement)
Sets my delegate.void
setEscapeProcessing(boolean enable)
void
setFetchDirection(int direction)
void
setFetchSize(int rows)
void
setLargeMaxRows(long max)
void
setMaxFieldSize(int max)
void
setMaxRows(int max)
void
setPoolable(boolean poolable)
void
setQueryTimeout(int seconds)
java.lang.String
toString()
Returns a String representation of this object.<T> T
unwrap(java.lang.Class<T> iface)
-
Methods inherited from class org.apache.tomcat.dbcp.dbcp2.AbandonedTrace
addTrace, clearTrace, getLastUsed, getLastUsedInstant, getTrace, removeThisTrace, removeTrace, setLastUsed, setLastUsed, setLastUsed
-
-
-
-
Constructor Detail
-
DelegatingStatement
public DelegatingStatement(DelegatingConnection<?> connection, java.sql.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
-
activate
public void activate() throws java.sql.SQLException
- Throws:
java.sql.SQLException
- thrown by the delegating statement.- Since:
- 2.4.0 made public, was protected in 2.3.0.
-
addBatch
public void addBatch(java.lang.String sql) throws java.sql.SQLException
- Specified by:
addBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
cancel
public void cancel() throws java.sql.SQLException
- Specified by:
cancel
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
checkOpen
protected void checkOpen() throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
clearBatch
public void clearBatch() throws java.sql.SQLException
- Specified by:
clearBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
clearWarnings
public void clearWarnings() throws java.sql.SQLException
- Specified by:
clearWarnings
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
close
public void close() throws java.sql.SQLException
Close this DelegatingStatement, and close any ResultSets that were not explicitly closed.- Specified by:
close
in interfacejava.lang.AutoCloseable
- Specified by:
close
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
closeOnCompletion
public void closeOnCompletion() throws java.sql.SQLException
- Specified by:
closeOnCompletion
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
execute
public boolean execute(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
- Specified by:
execute
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeBatch
public int[] executeBatch() throws java.sql.SQLException
- Specified by:
executeBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeLargeBatch
public long[] executeLargeBatch() throws java.sql.SQLException
- Specified by:
executeLargeBatch
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
executeLargeUpdate
public long executeLargeUpdate(java.lang.String sql) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
executeLargeUpdate
public long executeLargeUpdate(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
executeLargeUpdate
public long executeLargeUpdate(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
executeLargeUpdate
public long executeLargeUpdate(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
- Specified by:
executeLargeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
executeQuery
public java.sql.ResultSet executeQuery(java.lang.String sql) throws java.sql.SQLException
- Specified by:
executeQuery
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql, int autoGeneratedKeys) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql, int[] columnIndexes) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
executeUpdate
public int executeUpdate(java.lang.String sql, java.lang.String[] columnNames) throws java.sql.SQLException
- Specified by:
executeUpdate
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
finalize
protected void finalize() throws java.lang.Throwable
- Overrides:
finalize
in classjava.lang.Object
- Throws:
java.lang.Throwable
-
getConnection
public java.sql.Connection getConnection() throws java.sql.SQLException
- Specified by:
getConnection
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getConnectionInternal
protected DelegatingConnection<?> getConnectionInternal()
-
getDelegate
public java.sql.Statement getDelegate()
Returns my underlyingStatement
.- Returns:
- my underlying
Statement
. - See Also:
getInnermostDelegate()
-
getFetchDirection
public int getFetchDirection() throws java.sql.SQLException
- Specified by:
getFetchDirection
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getFetchSize
public int getFetchSize() throws java.sql.SQLException
- Specified by:
getFetchSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getGeneratedKeys
public java.sql.ResultSet getGeneratedKeys() throws java.sql.SQLException
- Specified by:
getGeneratedKeys
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getInnermostDelegate
public java.sql.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()
-
getLargeMaxRows
public long getLargeMaxRows() throws java.sql.SQLException
- Specified by:
getLargeMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
getLargeUpdateCount
public long getLargeUpdateCount() throws java.sql.SQLException
- Specified by:
getLargeUpdateCount
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
getMaxFieldSize
public int getMaxFieldSize() throws java.sql.SQLException
- Specified by:
getMaxFieldSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getMaxRows
public int getMaxRows() throws java.sql.SQLException
- Specified by:
getMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getMoreResults
public boolean getMoreResults() throws java.sql.SQLException
- Specified by:
getMoreResults
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getMoreResults
public boolean getMoreResults(int current) throws java.sql.SQLException
- Specified by:
getMoreResults
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getQueryTimeout
public int getQueryTimeout() throws java.sql.SQLException
- Specified by:
getQueryTimeout
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSet
public java.sql.ResultSet getResultSet() throws java.sql.SQLException
- Specified by:
getResultSet
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSetConcurrency
public int getResultSetConcurrency() throws java.sql.SQLException
- Specified by:
getResultSetConcurrency
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSetHoldability
public int getResultSetHoldability() throws java.sql.SQLException
- Specified by:
getResultSetHoldability
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getResultSetType
public int getResultSetType() throws java.sql.SQLException
- Specified by:
getResultSetType
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getUpdateCount
public int getUpdateCount() throws java.sql.SQLException
- Specified by:
getUpdateCount
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
getWarnings
public java.sql.SQLWarning getWarnings() throws java.sql.SQLException
- Specified by:
getWarnings
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
handleException
protected void handleException(java.sql.SQLException e) throws java.sql.SQLException
- Throws:
java.sql.SQLException
-
isClosed
public boolean isClosed() throws java.sql.SQLException
- Specified by:
isClosed
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
isClosedInternal
protected boolean isClosedInternal()
-
isCloseOnCompletion
public boolean isCloseOnCompletion() throws java.sql.SQLException
- Specified by:
isCloseOnCompletion
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
isPoolable
public boolean isPoolable() throws java.sql.SQLException
- Specified by:
isPoolable
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
isWrapperFor
public boolean isWrapperFor(java.lang.Class<?> iface) throws java.sql.SQLException
- Specified by:
isWrapperFor
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
passivate
public void passivate() throws java.sql.SQLException
- Throws:
java.sql.SQLException
- thrown by the delegating statement.- Since:
- 2.4.0 made public, was protected in 2.3.0.
-
setClosedInternal
protected void setClosedInternal(boolean closed)
-
setCursorName
public void setCursorName(java.lang.String name) throws java.sql.SQLException
- Specified by:
setCursorName
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setDelegate
public void setDelegate(java.sql.Statement statement)
Sets my delegate.- Parameters:
statement
- my delegate.
-
setEscapeProcessing
public void setEscapeProcessing(boolean enable) throws java.sql.SQLException
- Specified by:
setEscapeProcessing
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setFetchDirection
public void setFetchDirection(int direction) throws java.sql.SQLException
- Specified by:
setFetchDirection
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setFetchSize
public void setFetchSize(int rows) throws java.sql.SQLException
- Specified by:
setFetchSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setLargeMaxRows
public void setLargeMaxRows(long max) throws java.sql.SQLException
- Specified by:
setLargeMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
- Since:
- 2.5.0
-
setMaxFieldSize
public void setMaxFieldSize(int max) throws java.sql.SQLException
- Specified by:
setMaxFieldSize
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setMaxRows
public void setMaxRows(int max) throws java.sql.SQLException
- Specified by:
setMaxRows
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setPoolable
public void setPoolable(boolean poolable) throws java.sql.SQLException
- Specified by:
setPoolable
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
setQueryTimeout
public void setQueryTimeout(int seconds) throws java.sql.SQLException
- Specified by:
setQueryTimeout
in interfacejava.sql.Statement
- Throws:
java.sql.SQLException
-
toString
public java.lang.String toString()
Returns a String representation of this object.- Overrides:
toString
in classjava.lang.Object
- Returns:
- String
-
unwrap
public <T> T unwrap(java.lang.Class<T> iface) throws java.sql.SQLException
- Specified by:
unwrap
in interfacejava.sql.Wrapper
- Throws:
java.sql.SQLException
-
-