Top Description Fields Constructors Methods
org.apache.tomcat.jdbc.pool.interceptor

public abstract Class AbstractCreateStatementInterceptor

extends JdbcInterceptor
Class Inheritance
Known Direct Subclasses
org.apache.tomcat.jdbc.pool.interceptor.AbstractQueryReport, org.apache.tomcat.jdbc.pool.interceptor.QueryTimeoutInterceptor, org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor, org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer, org.apache.tomcat.jdbc.pool.StatementFacade
Imports
java.lang.reflect.Constructor, .InvocationHandler, .Method, .Proxy, org.apache.tomcat.jdbc.pool.ConnectionPool, .JdbcInterceptor, .PooledConnection

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

Modifier and TypeField and Description
protected static final Constructor<?>[]
constructors

the constructors that are used to create statement proxies

protected static final String
protected static final int
protected static final String
protected static final String
protected static final String
protected static final String[]
protected static final String
protected static final String
protected static final int
protected static final String
protected static final int
protected static final int
protected static final String[]
Inherited from org.apache.tomcat.jdbc.pool.JdbcInterceptor:
CLOSE_VALEQUALS_VALGETCONNECTION_VALHASHCODE_VALISCLOSED_VALISVALID_VALISWRAPPERFOR_VALpropertiesTOSTRING_VALUNWRAP_VAL

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public abstract void
closeInvoked()

Method invoked when the operation java.sql.Connection#close() is invoked.

public abstract Object

Returns:

a java.sql.Statement object
createStatement
(Object
the actual proxy object
proxy
,
Method
the method that was called. It will be one of the methods defined in STATEMENT_TYPES
method
,
Object[]
the arguments to the method
args
,
Object
the statement that the underlying connection created
statement
,
long
Elapsed time
time
)

This method will be invoked after a successful statement creation.

protected Constructor<?>

Returns:

- returns a constructor used to create new instances
getConstructor
(int
- the index of the constructor
idx
,
Class<?>
- the interface that the proxy will implement
clazz
)

Creates a constructor for a proxy class, if one doesn't already exist

public Object
invoke(Object
the proxy instance that the method was invoked on
proxy
,
Method
the Method instance corresponding to the interface method invoked on the proxy instance. The declaring class of the Method object will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.
method
,
Object[]
an array of objects containing the values of the arguments passed in the method invocation on the proxy instance, or null if interface method takes no arguments. Arguments of primitive types are wrapped in instances of the appropriate primitive wrapper class, such as java.lang.Integer or java.lang.Boolean.
args
)

Overrides org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke.

Implements java.lang.reflect.InvocationHandler.invoke.

Gets invoked each time an operation on java.sql.Connection is invoked.

protected boolean

Returns:

returns true if the method name matched
isExecute
(Method
the method being invoked on the proxy
method
,
boolean
boolean result used for recursion
process
)

Returns true if the method that is being invoked matches one of the execute types.

protected boolean

Returns:

returns true if the method name matched
isStatement
(Method
the method being invoked on the proxy
method
,
boolean
boolean result used for recursion
process
)

Returns true if the method that is being invoked matches one of the statement types.

protected boolean
process(String[] names, Method method, boolean process)

public void
reset(ConnectionPool
- the connection pool owning the connection
parent
,
PooledConnection
- the pooled connection
con
)

Implements abstract org.apache.tomcat.jdbc.pool.JdbcInterceptor.reset.

no-op for this interceptor.

Inherited from org.apache.tomcat.jdbc.pool.JdbcInterceptor:
comparecomparedisconnectedgetNextgetPropertiesisUseEqualspoolClosedpoolStartedsetNextsetPropertiessetUseEquals

Field Detail

constructorsback to summary
protected static final Constructor<?>[] constructors

the constructors that are used to create statement proxies

CREATE_STATEMENTback to summary
protected static final String CREATE_STATEMENT
CREATE_STATEMENT_IDXback to summary
protected static final int CREATE_STATEMENT_IDX
EXECUTEback to summary
protected static final String EXECUTE
EXECUTE_BATCHback to summary
protected static final String EXECUTE_BATCH
EXECUTE_QUERYback to summary
protected static final String EXECUTE_QUERY
EXECUTE_TYPESback to summary
protected static final String[] EXECUTE_TYPES
EXECUTE_UPDATEback to summary
protected static final String EXECUTE_UPDATE
PREPARE_CALLback to summary
protected static final String PREPARE_CALL
PREPARE_CALL_IDXback to summary
protected static final int PREPARE_CALL_IDX
PREPARE_STATEMENTback to summary
protected static final String PREPARE_STATEMENT
PREPARE_STATEMENT_IDXback to summary
protected static final int PREPARE_STATEMENT_IDX
STATEMENT_TYPE_COUNTback to summary
protected static final int STATEMENT_TYPE_COUNT
STATEMENT_TYPESback to summary
protected static final String[] STATEMENT_TYPES

Constructor Detail

AbstractCreateStatementInterceptorback to summary
public AbstractCreateStatementInterceptor()

Method Detail

closeInvokedback to summary
public abstract void closeInvoked()

Method invoked when the operation java.sql.Connection#close() is invoked.

createStatementback to summary
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. java.sql.Statement, java.sql.PreparedStatement or java.sql.CallableStatement

Parameters
proxy:Object

the actual proxy object

method:Method

the method that was called. It will be one of the methods defined in STATEMENT_TYPES

args:Object[]

the arguments to the method

statement:Object

the statement that the underlying connection created

time:long

Elapsed time

Returns:Object

a java.sql.Statement object

getConstructorback to summary
protected Constructor<?> getConstructor(int idx, Class<?> clazz) throws NoSuchMethodException

Creates a constructor for a proxy class, if one doesn't already exist

Parameters
idx:int

- the index of the constructor

clazz:Class<?>

- the interface that the proxy will implement

Returns:Constructor<?>

- returns a constructor used to create new instances

Annotations
@SuppressWarnings:deprecation
Exceptions
NoSuchMethodException:
Constructor not found
invokeback to summary
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable

Overrides org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke.

Implements java.lang.reflect.InvocationHandler.invoke.

Doc from org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke.

Gets invoked each time an operation on java.sql.Connection is invoked. Processes a method invocation on a proxy instance and returns the result. This method will be invoked on an invocation handler when a method is invoked on a proxy instance that it is associated with.

Parameters
proxy:Object

Doc from java.lang.reflect.InvocationHandler.invoke.

the proxy instance that the method was invoked on

method:Method

Doc from java.lang.reflect.InvocationHandler.invoke.

the Method instance corresponding to the interface method invoked on the proxy instance. The declaring class of the Method object will be the interface that the method was declared in, which may be a superinterface of the proxy interface that the proxy class inherits the method through.

args:Object[]

Doc from java.lang.reflect.InvocationHandler.invoke.

an array of objects containing the values of the arguments passed in the method invocation on the proxy instance, or null if interface method takes no arguments. Arguments of primitive types are wrapped in instances of the appropriate primitive wrapper class, such as java.lang.Integer or java.lang.Boolean.

Returns:Object

Doc from java.lang.reflect.InvocationHandler.invoke.

the value to return from the method invocation on the proxy instance. If the declared return type of the interface method is a primitive type, then the value returned by this method must be an instance of the corresponding primitive wrapper class; otherwise, it must be a type assignable to the declared return type. If the value returned by this method is null and the interface method's return type is primitive, then a NullPointerException will be thrown by the method invocation on the proxy instance. If the value returned by this method is otherwise not compatible with the interface method's declared return type as described above, a ClassCastException will be thrown by the method invocation on the proxy instance.

Annotations
@Override
Exceptions
Throwable:

Doc from java.lang.reflect.InvocationHandler.invoke.

the exception to throw from the method invocation on the proxy instance. The exception's type must be assignable either to any of the exception types declared in the throws clause of the interface method or to the unchecked exception types java.lang.RuntimeException or java.lang.Error. If a checked exception is thrown by this method that is not assignable to any of the exception types declared in the throws clause of the interface method, then an UndeclaredThrowableException containing the exception that was thrown by this method will be thrown by the method invocation on the proxy instance.

isExecuteback to summary
protected boolean isExecute(Method method, boolean process)

Returns true if the method that is being invoked matches one of the execute types.

Parameters
method:Method

the method being invoked on the proxy

process:boolean

boolean result used for recursion

Returns:boolean

returns true if the method name matched

isStatementback to summary
protected boolean isStatement(Method method, boolean process)

Returns true if the method that is being invoked matches one of the statement types.

Parameters
method:Method

the method being invoked on the proxy

process:boolean

boolean result used for recursion

Returns:boolean

returns true if the method name matched

processback to summary
protected boolean process(String[] names, Method method, boolean process)
resetback to summary
public void reset(ConnectionPool parent, PooledConnection con)

Implements abstract org.apache.tomcat.jdbc.pool.JdbcInterceptor.reset.

no-op for this interceptor. no state is stored.

Parameters
parent:ConnectionPool

Doc from org.apache.tomcat.jdbc.pool.JdbcInterceptor.reset.

- the connection pool owning the connection

con:PooledConnection

Doc from org.apache.tomcat.jdbc.pool.JdbcInterceptor.reset.

- the pooled connection

Annotations
@Override