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

    • threshold

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

    • AbstractQueryReport

      public AbstractQueryReport()
  • Method Details

    • prepareStatement

      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

      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

      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

      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

      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

      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

      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

      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