Class StatementDecoratorInterceptor
- java.lang.Object
-
- org.apache.tomcat.jdbc.pool.JdbcInterceptor
-
- org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
-
- org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor
-
- All Implemented Interfaces:
java.lang.reflect.InvocationHandler
- Direct Known Subclasses:
StatementCache
public class StatementDecoratorInterceptor extends AbstractCreateStatementInterceptor
Implementation of JdbcInterceptor that proxies resultSets and statements.- Author:
- Guillermo Fernandes
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected class
StatementDecoratorInterceptor.ResultSetProxy
protected class
StatementDecoratorInterceptor.StatementProxy<T extends java.sql.Statement>
Class to measure query execute time.
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
EXECUTE_QUERY
protected static java.lang.String
GET_GENERATED_KEYS
protected static java.lang.String
GET_RESULTSET
protected static java.lang.String[]
RESULTSET_TYPES
protected static java.lang.reflect.Constructor<?>
resultSetConstructor
the constructor to create the resultSet proxies-
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
constructors, CREATE_STATEMENT, CREATE_STATEMENT_IDX, EXECUTE, EXECUTE_BATCH, EXECUTE_TYPES, EXECUTE_UPDATE, PREPARE_CALL, PREPARE_CALL_IDX, PREPARE_STATEMENT, PREPARE_STATEMENT_IDX, STATEMENT_TYPE_COUNT, STATEMENT_TYPES
-
Fields inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
CLOSE_VAL, EQUALS_VAL, GETCONNECTION_VAL, HASHCODE_VAL, ISCLOSED_VAL, ISVALID_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL
-
-
Constructor Summary
Constructors Constructor Description StatementDecoratorInterceptor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
closeInvoked()
Method invoked when the operationConnection.close()
is invoked.protected java.lang.Object
createDecorator(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, java.lang.reflect.Constructor<?> constructor, java.lang.String sql)
Creates a proxy for a Statement.java.lang.Object
createStatement(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, long time)
Creates a statement interceptor to monitor query response timesprotected java.lang.reflect.Constructor<?>
getResultSetConstructor()
protected boolean
isExecuteQuery(java.lang.reflect.Method method)
protected boolean
isExecuteQuery(java.lang.String methodName)
protected boolean
isResultSet(java.lang.reflect.Method method, boolean process)
-
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
getConstructor, invoke, isExecute, isStatement, process, reset
-
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
compare, compare, disconnected, getNext, getProperties, isUseEquals, poolClosed, poolStarted, setNext, setProperties, setUseEquals
-
-
-
-
Field Detail
-
EXECUTE_QUERY
protected static final java.lang.String EXECUTE_QUERY
- See Also:
- Constant Field Values
-
GET_GENERATED_KEYS
protected static final java.lang.String GET_GENERATED_KEYS
- See Also:
- Constant Field Values
-
GET_RESULTSET
protected static final java.lang.String GET_RESULTSET
- See Also:
- Constant Field Values
-
RESULTSET_TYPES
protected static final java.lang.String[] RESULTSET_TYPES
-
resultSetConstructor
protected static volatile java.lang.reflect.Constructor<?> resultSetConstructor
the constructor to create the resultSet proxies
-
-
Method Detail
-
closeInvoked
public void closeInvoked()
Description copied from class:AbstractCreateStatementInterceptor
Method invoked when the operationConnection.close()
is invoked.- Specified by:
closeInvoked
in classAbstractCreateStatementInterceptor
-
getResultSetConstructor
protected java.lang.reflect.Constructor<?> getResultSetConstructor() throws java.lang.NoSuchMethodException
- Throws:
java.lang.NoSuchMethodException
-
createStatement
public java.lang.Object createStatement(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, long time)
Creates a statement interceptor to monitor query response times- Specified by:
createStatement
in classAbstractCreateStatementInterceptor
- Parameters:
proxy
- the actual proxy objectmethod
- the method that was called. It will be one of the methods defined inAbstractCreateStatementInterceptor.STATEMENT_TYPES
args
- the arguments to the methodstatement
- the statement that the underlying connection createdtime
- Elapsed time- Returns:
- a
Statement
object
-
createDecorator
protected java.lang.Object createDecorator(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, java.lang.reflect.Constructor<?> constructor, java.lang.String sql) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException
Creates a proxy for a Statement.- Parameters:
proxy
- The proxy object on which the method that triggered the creation of the statement was called.method
- The method that was called on the proxyargs
- The arguments passed as part of the method call to the proxystatement
- The statement object that is to be proxiedconstructor
- The constructor for the desired proxysql
- The sql of of the statement- Returns:
- A new proxy for the Statement
- Throws:
java.lang.InstantiationException
- Couldn't instantiate objectjava.lang.IllegalAccessException
- Inaccessible constructorjava.lang.reflect.InvocationTargetException
- Exception thrown from constructor
-
isExecuteQuery
protected boolean isExecuteQuery(java.lang.String methodName)
-
isExecuteQuery
protected boolean isExecuteQuery(java.lang.reflect.Method method)
-
isResultSet
protected boolean isResultSet(java.lang.reflect.Method method, boolean process)
-
-