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

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 the createStatement(Object, Method, Object[], Object, long) method.
  • Field Details

  • Constructor Details

    • AbstractCreateStatementInterceptor

      public AbstractCreateStatementInterceptor()
  • Method Details

    • invoke

      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
      Description copied from class: JdbcInterceptor
      Gets invoked each time an operation on Connection is invoked.
      Specified by:
      invoke in interface InvocationHandler
      Overrides:
      invoke in class JdbcInterceptor
      Throws:
      Throwable
    • 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 - 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, PreparedStatement or CallableStatement
      Parameters:
      proxy - the actual proxy object
      method - the method that was called. It will be one of the methods defined in STATEMENT_TYPES
      args - the arguments to the method
      statement - the statement that the underlying connection created
      time - Elapsed time
      Returns:
      a Statement object
    • closeInvoked

      public abstract void closeInvoked()
      Method invoked when the operation Connection.close() is invoked.
    • isStatement

      protected boolean isStatement(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 proxy
      process - boolean result used for recursion
      Returns:
      returns true if the method name matched
    • isExecute

      protected boolean isExecute(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 proxy
      process - boolean result used for recursion
      Returns:
      returns true if the method name matched
    • process

      protected boolean process(String[] names, 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 class JdbcInterceptor
      Parameters:
      parent - - the connection pool owning the connection
      con - - the pooled connection