Class AbstractCreateStatementInterceptor
- java.lang.Object
-
- org.apache.tomcat.jdbc.pool.JdbcInterceptor
-
- org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
-
- All Implemented Interfaces:
java.lang.reflect.InvocationHandler
- Direct Known Subclasses:
AbstractQueryReport
,QueryTimeoutInterceptor
,StatementDecoratorInterceptor
,StatementFacade
,StatementFinalizer
public abstract class AbstractCreateStatementInterceptor extends JdbcInterceptor
Abstraction interceptor. This component intercepts all calls to create some type of SQL statement. By extending this class, one can intercept queries and update statements by overriding thecreateStatement(Object, Method, Object[], Object, long)
method.- Version:
- 1.0
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.reflect.Constructor<?>[]
constructors
the constructors that are used to create statement proxiesprotected static java.lang.String
CREATE_STATEMENT
protected static int
CREATE_STATEMENT_IDX
protected static java.lang.String
EXECUTE
protected static java.lang.String
EXECUTE_BATCH
protected static java.lang.String
EXECUTE_QUERY
protected static java.lang.String[]
EXECUTE_TYPES
protected static java.lang.String
EXECUTE_UPDATE
protected static java.lang.String
PREPARE_CALL
protected static int
PREPARE_CALL_IDX
protected static java.lang.String
PREPARE_STATEMENT
protected static int
PREPARE_STATEMENT_IDX
protected static int
STATEMENT_TYPE_COUNT
protected static java.lang.String[]
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 AbstractCreateStatementInterceptor()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract void
closeInvoked()
Method invoked when the operationConnection.close()
is invoked.abstract java.lang.Object
createStatement(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, long time)
This method will be invoked after a successful statement creation.protected java.lang.reflect.Constructor<?>
getConstructor(int idx, java.lang.Class<?> clazz)
Creates a constructor for a proxy class, if one doesn't already existjava.lang.Object
invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)
Gets invoked each time an operation onConnection
is invoked.protected boolean
isExecute(java.lang.reflect.Method method, boolean process)
Returns true if the method that is being invoked matches one of the execute types.protected boolean
isStatement(java.lang.reflect.Method method, boolean process)
Returns true if the method that is being invoked matches one of the statement types.protected boolean
process(java.lang.String[] names, java.lang.reflect.Method method, boolean process)
void
reset(ConnectionPool parent, PooledConnection con)
no-op for this interceptor. no state is stored.-
Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor
compare, compare, disconnected, getNext, getProperties, isUseEquals, poolClosed, poolStarted, setNext, setProperties, setUseEquals
-
-
-
-
Field Detail
-
CREATE_STATEMENT
protected static final java.lang.String CREATE_STATEMENT
- See Also:
- Constant Field Values
-
CREATE_STATEMENT_IDX
protected static final int CREATE_STATEMENT_IDX
- See Also:
- Constant Field Values
-
PREPARE_STATEMENT
protected static final java.lang.String PREPARE_STATEMENT
- See Also:
- Constant Field Values
-
PREPARE_STATEMENT_IDX
protected static final int PREPARE_STATEMENT_IDX
- See Also:
- Constant Field Values
-
PREPARE_CALL
protected static final java.lang.String PREPARE_CALL
- See Also:
- Constant Field Values
-
PREPARE_CALL_IDX
protected static final int PREPARE_CALL_IDX
- See Also:
- Constant Field Values
-
STATEMENT_TYPES
protected static final java.lang.String[] STATEMENT_TYPES
-
STATEMENT_TYPE_COUNT
protected static final int STATEMENT_TYPE_COUNT
-
EXECUTE
protected static final java.lang.String EXECUTE
- See Also:
- Constant Field Values
-
EXECUTE_QUERY
protected static final java.lang.String EXECUTE_QUERY
- See Also:
- Constant Field Values
-
EXECUTE_UPDATE
protected static final java.lang.String EXECUTE_UPDATE
- See Also:
- Constant Field Values
-
EXECUTE_BATCH
protected static final java.lang.String EXECUTE_BATCH
- See Also:
- Constant Field Values
-
EXECUTE_TYPES
protected static final java.lang.String[] EXECUTE_TYPES
-
constructors
protected static final java.lang.reflect.Constructor<?>[] constructors
the constructors that are used to create statement proxies
-
-
Method Detail
-
invoke
public java.lang.Object invoke(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args) throws java.lang.Throwable
Gets invoked each time an operation onConnection
is invoked.- Specified by:
invoke
in interfacejava.lang.reflect.InvocationHandler
- Overrides:
invoke
in classJdbcInterceptor
- Throws:
java.lang.Throwable
-
getConstructor
protected java.lang.reflect.Constructor<?> getConstructor(int idx, java.lang.Class<?> clazz) throws java.lang.NoSuchMethodException
Creates a constructor for a proxy class, if one doesn't already exist- Parameters:
idx
- - the index of the constructorclazz
- - the interface that the proxy will implement- Returns:
- - returns a constructor used to create new instances
- Throws:
java.lang.NoSuchMethodException
- Constructor not found
-
createStatement
public abstract java.lang.Object createStatement(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args, java.lang.Object statement, long time)
This method will be invoked after a successful statement creation. This method can choose to return a wrapper around the statement or return the statement itself. If this method returns a wrapper then it should return a wrapper object that implements one of the following interfaces.Statement
,PreparedStatement
orCallableStatement
- Parameters:
proxy
- the actual proxy objectmethod
- the method that was called. It will be one of the methods defined inSTATEMENT_TYPES
args
- the arguments to the methodstatement
- the statement that the underlying connection createdtime
- Elapsed time- Returns:
- a
Statement
object
-
closeInvoked
public abstract void closeInvoked()
Method invoked when the operationConnection.close()
is invoked.
-
isStatement
protected boolean isStatement(java.lang.reflect.Method method, boolean process)
Returns true if the method that is being invoked matches one of the statement types.- Parameters:
method
- the method being invoked on the proxyprocess
- boolean result used for recursion- Returns:
- returns true if the method name matched
-
isExecute
protected boolean isExecute(java.lang.reflect.Method method, boolean process)
Returns true if the method that is being invoked matches one of the execute types.- Parameters:
method
- the method being invoked on the proxyprocess
- boolean result used for recursion- Returns:
- returns true if the method name matched
-
process
protected boolean process(java.lang.String[] names, java.lang.reflect.Method method, boolean process)
-
reset
public void reset(ConnectionPool parent, PooledConnection con)
no-op for this interceptor. no state is stored.- Specified by:
reset
in classJdbcInterceptor
- Parameters:
parent
- - the connection pool owning the connectioncon
- - the pooled connection
-
-