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

com.mchange.v2.c3p0

## Interface UnifiedConnectionTester

- All Superinterfaces:
    ConnectionTester, FullQueryConnectionTester, QueryConnectionTester, java.io.Serializable
  All Known Implementing Classes:
    AbstractConnectionTester, DefaultConnectionTester, IsValidOnlyConnectionTester, IsValidOnlyConnectionTester30

      public interface UnifiedConnectionTester
      extends FullQueryConnectionTester

  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.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `CONNECTION_IS_INVALID`
    `static int` | `CONNECTION_IS_OKAY`
    `static int` | `DATABASE_IS_INVALID`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `activeCheckConnection(java.sql.Connection c)`
    `int` | `activeCheckConnection(java.sql.Connection c, java.lang.String preferredTestQuery)`
    `int` | `activeCheckConnection(java.sql.Connection c, java.lang.String preferredTestQuery, java.lang.Throwable[] rootCauseOutParamHolder)`
    `int` | `activeCheckConnection(java.sql.Connection c, java.lang.Throwable[] rootCauseOutParamHolder)`
    `boolean` | `equals(java.lang.Object o)` Multiple testers that are of the same class and use the same criteria for determining fatality should test as equals().
    `int` | `hashCode()` keep consistent with equals()
    `int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t)`
    `int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t, java.lang.String preferredTestQuery)`
    `int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t, java.lang.String preferredTestQuery, java.lang.Throwable[] rootCauseOutParamHolder)`
    `int` | `statusOnException(java.sql.Connection c, java.lang.Throwable t, java.lang.Throwable[] rootCauseOutParamHolder)`

- - ### Field Detail

    - #### CONNECTION_IS_OKAY

          static final int CONNECTION_IS_OKAY

      See Also:
        Constant Field Values

    - #### CONNECTION_IS_INVALID

          static final int CONNECTION_IS_INVALID

      See Also:
        Constant Field Values

    - #### DATABASE_IS_INVALID

          static final int DATABASE_IS_INVALID

      See Also:
        Constant Field Values

  - ### Method Detail

    - #### activeCheckConnection

          int activeCheckConnection(java.sql.Connection c)

      Specified by:
        `activeCheckConnection` in interface `ConnectionTester`

    - #### activeCheckConnection

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

    - #### activeCheckConnection

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

      Specified by:
        `activeCheckConnection` in interface `QueryConnectionTester`

    - #### activeCheckConnection

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

    - #### statusOnException

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

      Specified by:
        `statusOnException` in interface `ConnectionTester`

    - #### statusOnException

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

    - #### statusOnException

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

      Specified by:
        `statusOnException` in interface `FullQueryConnectionTester`

    - #### statusOnException

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

    - #### equals

          boolean equals(java.lang.Object o)

      Description copied from interface: `ConnectionTester`
      Multiple testers that are of the same class and use the same criteria for determining fatality should test as equals().
      Specified by:
        `equals` in interface `ConnectionTester`
      Overrides:
        `equals` in class `java.lang.Object`

    - #### hashCode

          int hashCode()

      Description copied from interface: `ConnectionTester`
      keep consistent with equals()
      Specified by:
        `hashCode` in interface `ConnectionTester`
      Overrides:
        `hashCode` in class `java.lang.Object`