Apache Tomcat 7.0.27

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:
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
protected  class StatementDecoratorInterceptor.ResultSetProxy
           
protected  class StatementDecoratorInterceptor.StatementProxy<T extends java.sql.Statement>
          Class to measure query execute time
 
Field Summary
protected static java.lang.reflect.Constructor<?>[] constructors
          the constructors that are used to create statement proxies
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
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, GETCONNECTION_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  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)
           
 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
protected  java.lang.reflect.Constructor<?> getConstructor(int idx, java.lang.Class<?> clazz)
          Creates a constructor for a proxy class, if one doesn't already exist
protected  java.lang.reflect.Constructor<?> getResultSetConstructor()
           
protected  boolean isExecuteQuery(java.lang.reflect.Method method)
           
protected  boolean isExecuteQuery(java.lang.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 java.lang.reflect.Constructor<?>[] constructors
the constructors that are used to create statement proxies


resultSetConstructor

protected static java.lang.reflect.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 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 constructor
clazz - - the interface that the proxy will implement
Returns:
- returns a constructor used to create new instances
Throws:
java.lang.NoSuchMethodException

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 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 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
Throws:
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException

isExecuteQuery

protected boolean isExecuteQuery(java.lang.String methodName)

isExecuteQuery

protected boolean isExecuteQuery(java.lang.reflect.Method method)

Apache Tomcat 7.0.27

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