Apache Tomcat 7.0.37

org.apache.tomcat.jdbc.pool.interceptor
Class StatementDecoratorInterceptor

java.lang.Object
  extended by org.apache.tomcat.jdbc.pool.JdbcInterceptor
      extended by org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
          extended by org.apache.tomcat.jdbc.pool.interceptor.StatementDecoratorInterceptor
All Implemented Interfaces:
InvocationHandler
Direct Known Subclasses:
StatementCache

public class StatementDecoratorInterceptor
extends AbstractCreateStatementInterceptor

Implementation of JdbcInterceptor that proxies resultSets and statements.

Author:
Guillermo Fernandes

Nested Class Summary
protected  class StatementDecoratorInterceptor.ResultSetProxy
           
protected  class StatementDecoratorInterceptor.StatementProxy<T extends Statement>
          Class to measure query execute time
 
Field Summary
protected static Constructor<?>[] constructors
          the constructors that are used to create statement proxies
protected static Constructor<?> resultSetConstructor
          the constructor to create the resultSet proxies
 
Fields inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
CREATE_STATEMENT, CREATE_STATEMENT_IDX, EXECUTE, EXECUTE_BATCH, EXECUTE_QUERY, 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
StatementDecoratorInterceptor()
           
 
Method Summary
 void closeInvoked()
          Method invoked when the operation Connection.close() is invoked.
protected  Object createDecorator(Object proxy, Method method, Object[] args, Object statement, Constructor<?> constructor, String sql)
          Creates a proxy for a Statement.
 Object createStatement(Object proxy, Method method, Object[] args, Object statement, long time)
          Creates a statement interceptor to monitor query response times
protected  Constructor<?> getConstructor(int idx, Class<?> clazz)
          Creates a constructor for a proxy class, if one doesn't already exist
protected  Constructor<?> getResultSetConstructor()
           
protected  boolean isExecuteQuery(Method method)
           
protected  boolean isExecuteQuery(String methodName)
           
 
Methods inherited from class org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor
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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

constructors

protected static final Constructor<?>[] constructors
the constructors that are used to create statement proxies


resultSetConstructor

protected static Constructor<?> resultSetConstructor
the constructor to create the resultSet proxies

Constructor Detail

StatementDecoratorInterceptor

public StatementDecoratorInterceptor()
Method Detail

closeInvoked

public void closeInvoked()
Description copied from class: AbstractCreateStatementInterceptor
Method invoked when the operation Connection.close() is invoked.

Specified by:
closeInvoked in class AbstractCreateStatementInterceptor

getConstructor

protected Constructor<?> getConstructor(int idx,
                                        Class<?> clazz)
                                 throws NoSuchMethodException
Creates a constructor for a proxy class, if one doesn't already exist

Parameters:
idx - - the index of the constructor
clazz - - the interface that the proxy will implement
Returns:
- returns a constructor used to create new instances
Throws:
NoSuchMethodException

getResultSetConstructor

protected Constructor<?> getResultSetConstructor()
                                          throws NoSuchMethodException
Throws:
NoSuchMethodException

createStatement

public Object createStatement(Object proxy,
                              Method method,
                              Object[] args,
                              Object statement,
                              long time)
Creates a statement interceptor to monitor query response times

Specified by:
createStatement in class AbstractCreateStatementInterceptor
Parameters:
proxy - the actual proxy object
method - the method that was called. It will be one of the methods defined in AbstractCreateStatementInterceptor.STATEMENT_TYPES
args - the arguments to the method
statement - the statement that the underlying connection created
Returns:
a Statement object

createDecorator

protected Object createDecorator(Object proxy,
                                 Method method,
                                 Object[] args,
                                 Object statement,
                                 Constructor<?> constructor,
                                 String sql)
                          throws InstantiationException,
                                 IllegalAccessException,
                                 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 proxy
args - The arguments passed as part of the method call to the proxy
statement - The statement object that is to be proxied
constructor - The constructor for the desired proxy
sql - The sql of of the statement
Returns:
A new proxy for the Statement
Throws:
InstantiationException
IllegalAccessException
InvocationTargetException

isExecuteQuery

protected boolean isExecuteQuery(String methodName)

isExecuteQuery

protected boolean isExecuteQuery(Method method)

Apache Tomcat 7.0.37

Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.