AbstractConnectionTester (c3p0-0.9.5.5 API Documentation)
Date: 2019-12-11

com.mchange.v2.c3p0

## Class AbstractConnectionTester

- java.lang.Object
- - com.mchange.v2.c3p0.AbstractConnectionTester

- All Implemented Interfaces:
    ConnectionTester, FullQueryConnectionTester, QueryConnectionTester, UnifiedConnectionTester, java.io.Serializable
  Direct Known Subclasses:
    DefaultConnectionTester, IsValidOnlyConnectionTester

      public abstract class AbstractConnectionTester
      extends java.lang.Object
      implements UnifiedConnectionTester

  Having expanded the once-simple ConnectionTester interface to support both user-specified queries and return of root cause Exceptions (via an out-param), this interface has grown unnecessarily complex.

  If you wish to implement a custom Connection tester, here is the simple way to do it

  1. Extend `AbstractConnectionTester`
  2. Override only the two abstract methods
  - `public int activeCheckConnection(Connection c, String preferredTestQuery, Throwable[] rootCauseOutParamHolder)`
  - `public int statusOnException(Connection c, Throwable t, String preferredTestQuery, Throwable[] rootCauseOutParamHolder)`
  3. Take care to ensure that your methods are defined to allow `preferredTestQuery` and `rootCauseOutParamHolder` to be `null`.

  Parameter `rootCauseOutParamHolder` is an optional parameter, which if supplied, will be a Throwable array whose size it at least one. If a Connection test fails because of some Exception, the Connection tester may set this Exception as the zero-th element of the array to provide information about why and how the test failed.

  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from interface com.mchange.v2.c3p0.UnifiedConnectionTester

      `CONNECTION_IS_INVALID, CONNECTION_IS_OKAY, DATABASE_IS_INVALID`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractConnectionTester()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `activeCheckConnection(java.sql.Connection c)`
    `int` | `activeCheckConnection(java.sql.Connection c, java.lang.String preferredTestQuery)`
    `abstract int` | `activeCheckConnection(java.sql.Connection c, java.lang.String preferredTestQuery, java.lang.Throwable[] rootCauseOutParamHolder)` Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.
    `int` | `activeCheckConnection(java.sql.Connection c, java.lang.Throwable[] rootCauseOutParamHolder)`
    `int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t)`
    `int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t, java.lang.String preferredTestQuery)`
    `abstract int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t, java.lang.String preferredTestQuery, java.lang.Throwable[] rootCauseOutParamHolder)` Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.
    `int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t, java.lang.Throwable[] rootCauseOutParamHolder)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface com.mchange.v2.c3p0.UnifiedConnectionTester

      `equals, hashCode`

- - ### Constructor Detail

    - #### AbstractConnectionTester

          public AbstractConnectionTester()

  - ### Method Detail

    - #### activeCheckConnection

          public abstract int activeCheckConnection(java.sql.Connection c,
                                                    java.lang.String preferredTestQuery,
                                                    java.lang.Throwable[] rootCauseOutParamHolder)

      Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.
      Specified by:
        `activeCheckConnection` in interface `UnifiedConnectionTester`

    - #### statusOnException

          public abstract int statusOnException(java.sql.Connection c,
                                                java.lang.Throwable t,
                                                java.lang.String preferredTestQuery,
                                                java.lang.Throwable[] rootCauseOutParamHolder)

      Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.
      Specified by:
        `statusOnException` in interface `UnifiedConnectionTester`

    - #### activeCheckConnection

          public int activeCheckConnection(java.sql.Connection c)

      Specified by:
        `activeCheckConnection` in interface `ConnectionTester`
      Specified by:
        `activeCheckConnection` in interface `UnifiedConnectionTester`

    - #### activeCheckConnection

          public int activeCheckConnection(java.sql.Connection c,
                                           java.lang.Throwable[] rootCauseOutParamHolder)

      Specified by:
        `activeCheckConnection` in interface `UnifiedConnectionTester`

    - #### activeCheckConnection

          public int activeCheckConnection(java.sql.Connection c,
                                           java.lang.String preferredTestQuery)

      Specified by:
        `activeCheckConnection` in interface `QueryConnectionTester`
      Specified by:
        `activeCheckConnection` in interface `UnifiedConnectionTester`

    - #### statusOnException

          public int statusOnException(java.sql.Connection c,
                                       java.lang.Throwable t)

      Specified by:
        `statusOnException` in interface `ConnectionTester`
      Specified by:
        `statusOnException` in interface `UnifiedConnectionTester`

    - #### statusOnException

          public int statusOnException(java.sql.Connection c,
                                       java.lang.Throwable t,
                                       java.lang.Throwable[] rootCauseOutParamHolder)

      Specified by:
        `statusOnException` in interface `UnifiedConnectionTester`

    - #### statusOnException

          public int statusOnException(java.sql.Connection c,
                                       java.lang.Throwable t,
                                       java.lang.String preferredTestQuery)

      Specified by:
        `statusOnException` in interface `FullQueryConnectionTester`
      Specified by:
        `statusOnException` in interface `UnifiedConnectionTester`