Class AbstractQueryReport

All Implemented Interfaces:
InvocationHandler
Direct Known Subclasses:
ResetAbandonedTimer, SlowQueryReport

public abstract class AbstractQueryReport extends AbstractCreateStatementInterceptor
Abstract class that wraps statements and intercepts query executions.
  • Field Details Link icon

    • threshold Link icon

      protected long threshold
      The threshold in milliseconds. If the query is faster than this, we don't measure it
  • Constructor Details Link icon

    • AbstractQueryReport Link icon

      public AbstractQueryReport()
  • Method Details Link icon

    • prepareStatement Link icon

      protected abstract void prepareStatement(String sql, long time)
      Invoked when prepareStatement has been called and completed.
      Parameters:
      sql - - the string used to prepare the statement with
      time - - the time it took to invoke prepare
    • prepareCall Link icon

      protected abstract void prepareCall(String query, long time)
      Invoked when prepareCall has been called and completed.
      Parameters:
      query - - the string used to prepare the statement with
      time - - the time it took to invoke prepare
    • reportFailedQuery Link icon

      protected String reportFailedQuery(String query, Object[] args, String name, long start, Throwable t)
      Invoked when a query execution, a call to execute/executeQuery or executeBatch failed.
      Parameters:
      query - the query that was executed and failed
      args - the arguments to the execution
      name - the name of the method used to execute AbstractCreateStatementInterceptor.isExecute(Method, boolean)
      start - the time the query execution started
      t - the exception that happened
      Returns:
      - the SQL that was executed or the string "batch" if it was a batch execution
    • reportQuery Link icon

      protected String reportQuery(String query, Object[] args, String name, long start, long delta)
      Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was within the timing threshold
      Parameters:
      query - the query that was executed and failed
      args - the arguments to the execution
      name - the name of the method used to execute AbstractCreateStatementInterceptor.isExecute(Method, boolean)
      start - the time the query execution started
      delta - the time the execution took
      Returns:
      - the SQL that was executed or the string "batch" if it was a batch execution
    • reportSlowQuery Link icon

      protected String reportSlowQuery(String query, Object[] args, String name, long start, long delta)
      Invoked when a query execution, a call to execute/executeQuery or executeBatch succeeded and was exceeded the timing threshold
      Parameters:
      query - the query that was executed and failed
      args - the arguments to the execution
      name - the name of the method used to execute AbstractCreateStatementInterceptor.isExecute(Method, boolean)
      start - the time the query execution started
      delta - the time the execution took
      Returns:
      - the SQL that was executed or the string "batch" if it was a batch execution
    • getThreshold Link icon

      public long getThreshold()
      returns the query measure threshold. This value is in milliseconds. If the query is faster than this threshold than it won't be accounted for
      Returns:
      the threshold in milliseconds
    • setThreshold Link icon

      public void setThreshold(long threshold)
      Sets the query measurement threshold. The value is in milliseconds. If the query goes faster than this threshold it will not be recorded.
      Parameters:
      threshold - set to -1 to record every query. Value is in milliseconds.
    • createStatement Link icon

      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
      time - Elapsed time
      Returns:
      a Statement object