Class AbstractCreateStatementInterceptor
java.lang.Object
org.apache.tomcat.jdbc.pool.JdbcInterceptor
org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
- All Implemented Interfaces:
InvocationHandler
- Direct Known Subclasses:
AbstractQueryReport, QueryTimeoutInterceptor, StatementDecoratorInterceptor, StatementFacade, StatementFinalizer
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 the
createStatement(Object, Method, Object[], Object, long) method.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Constructor<?>[]the constructors that are used to create statement proxiesprotected static final Stringprotected static final intIndex forCREATE_STATEMENTinSTATEMENT_TYPESprotected static final Stringprotected static final Stringprotected static final Stringprotected static final String[]Array of execute type method namesprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final Stringprotected static final intIndex forPREPARE_CALLinSTATEMENT_TYPESprotected static final Stringprotected static final intIndex forPREPARE_STATEMENTinSTATEMENT_TYPESprotected static final intIndex forGET_STATEMENTinSTATEMENT_TYPESprotected static final intCount of statement types inSTATEMENT_TYPESprotected static final String[]Array of statement type method namesFields inherited from class JdbcInterceptor
CLOSE_VAL, EQUALS_VAL, GETCONNECTION_VAL, HASHCODE_VAL, ISCLOSED_VAL, ISVALID_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract voidMethod invoked when the operationConnection.close()is invoked.abstract ObjectcreateStatement(Object proxy, Method method, Object[] args, Object statement, long time) This method will be invoked after a successful statement creation.protected Constructor<?> getConstructor(int idx, Class<?> clazz) Creates a constructor for a proxy class, if one doesn't already existGets invoked each time an operation onConnectionis invoked.protected booleanReturns true if the method that is being invoked matches one of the execute types.protected booleanisStatement(Method method, boolean process) Returns true if the method that is being invoked matches one of the statement types.protected booleanReturns true if the method that is being invoked matches one of the method names passed invoidreset(ConnectionPool parent, PooledConnection con) no-op for this interceptor. no state is stored.Methods inherited from class JdbcInterceptor
compare, compare, disconnected, getNext, getProperties, isUseEquals, poolClosed, poolStarted, setNext, setProperties, setUseEquals
-
Field Details
-
CREATE_STATEMENT
-
CREATE_STATEMENT_IDX
protected static final int CREATE_STATEMENT_IDXIndex forCREATE_STATEMENTinSTATEMENT_TYPES- See Also:
-
PREPARE_STATEMENT
-
PREPARE_STATEMENT_IDX
protected static final int PREPARE_STATEMENT_IDXIndex forPREPARE_STATEMENTinSTATEMENT_TYPES- See Also:
-
PREPARE_CALL
-
PREPARE_CALL_IDX
-
GET_RESULTSET
-
GET_GENERATED_KEYS
-
GET_STATEMENT
-
RESULTSET_IDX
-
STATEMENT_TYPES
Array of statement type method names -
STATEMENT_TYPE_COUNT
protected static final int STATEMENT_TYPE_COUNTCount of statement types inSTATEMENT_TYPES -
EXECUTE
-
EXECUTE_QUERY
-
EXECUTE_UPDATE
-
EXECUTE_BATCH
-
EXECUTE_TYPES
Array of execute type method names -
constructors
the constructors that are used to create statement proxies
-
-
Constructor Details
-
AbstractCreateStatementInterceptor
public AbstractCreateStatementInterceptor()Default constructor
-
-
Method Details
-
invoke
Description copied from class:JdbcInterceptorGets invoked each time an operation onConnectionis invoked.- Specified by:
invokein interfaceInvocationHandler- Overrides:
invokein classJdbcInterceptor- Throws:
Throwable
-
getConstructor
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:
NoSuchMethodException- Constructor not found
-
createStatement
public abstract Object createStatement(Object proxy, Method method, Object[] args, 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,PreparedStatementorCallableStatement- Parameters:
proxy- the actual proxy objectmethod- the method that was called. It will be one of the methods defined inSTATEMENT_TYPESargs- the arguments to the methodstatement- the statement that the underlying connection createdtime- Elapsed time- Returns:
- a
Statementobject
-
closeInvoked
public abstract void closeInvoked()Method invoked when the operationConnection.close()is invoked. -
isStatement
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
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
Returns true if the method that is being invoked matches one of the method names passed in- Parameters:
names- list of method names that we want to interceptmethod- the method being invoked on the proxyprocess- boolean result used for recursion- Returns:
- returns true if the method name matched
-
reset
no-op for this interceptor. no state is stored.- Specified by:
resetin classJdbcInterceptor- Parameters:
parent- - the connection pool owning the connectioncon- - the pooled connection
-