# Class AbstractConnectionTester

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

All Implemented Interfaces:
  `ConnectionTester, FullQueryConnectionTester, QueryConnectionTester, UnifiedConnectionTester, Serializable`

public abstract class AbstractConnectionTester extends 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 UnifiedConnectionTester

`CONNECTION_IS_INVALID, CONNECTION_IS_OKAY, DATABASE_IS_INVALID`

## Constructor Summary

Constructors
Constructor
Description
`AbstractConnectionTester()`

## Method Summary

Modifier and Type
Method
Description
`int`
`activeCheckConnection(Connection c)`
`int`
`activeCheckConnection(Connection c, String preferredTestQuery)`
`abstract int`
`activeCheckConnection(Connection c, String preferredTestQuery, Throwable[] rootCauseOutParamHolder)`
Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.
`int`
`activeCheckConnection(Connection c, Throwable[] rootCauseOutParamHolder)`
`int`
`statusOnException(Connection c, Throwable t)`
`int`
`statusOnException(Connection c, Throwable t, String preferredTestQuery)`
`abstract int`
`statusOnException(Connection c, Throwable t, String preferredTestQuery, Throwable[] rootCauseOutParamHolder)`
Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.
`int`
`statusOnException(Connection c, Throwable t, Throwable[] rootCauseOutParamHolder)`

### Methods inherited from class Object

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

### Methods inherited from interface UnifiedConnectionTester

`equals, hashCode`

## Constructor Details

### AbstractConnectionTester

public AbstractConnectionTester()

## Method Details

### activeCheckConnection

public abstract int activeCheckConnection(Connection c, String preferredTestQuery, Throwable[] rootCauseOutParamHolder)
Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.

Specified by:
  `activeCheckConnection` in interface `UnifiedConnectionTester`

### statusOnException

public abstract int statusOnException(Connection c, Throwable t, String preferredTestQuery, Throwable[] rootCauseOutParamHolder)
Override, but remember that `preferredTestQuery` and `rootCauseOutParamHolder` can be null.

Specified by:
  `statusOnException` in interface `UnifiedConnectionTester`

### activeCheckConnection

public int activeCheckConnection(Connection c)

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

### activeCheckConnection

public int activeCheckConnection(Connection c, Throwable[] rootCauseOutParamHolder)

Specified by:
  `activeCheckConnection` in interface `UnifiedConnectionTester`

### activeCheckConnection

public int activeCheckConnection(Connection c, String preferredTestQuery)

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

### statusOnException

public int statusOnException(Connection c, Throwable t)

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

### statusOnException

public int statusOnException(Connection c, Throwable t, Throwable[] rootCauseOutParamHolder)

Specified by:
  `statusOnException` in interface `UnifiedConnectionTester`

### statusOnException

public int statusOnException(Connection c, Throwable t, String preferredTestQuery)

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