# Class ProxyConnection

java.lang.Object
org.apache.tomcat.jdbc.pool.JdbcInterceptor
org.apache.tomcat.jdbc.pool.ProxyConnection

All Implemented Interfaces:
  `InvocationHandler`

public class ProxyConnection extends JdbcInterceptor
A ProxyConnection object is the bottom most interceptor that wraps an object of type `PooledConnection`. The ProxyConnection intercepts three methods:

- `Connection.close()` - returns the connection to the pool. May be called multiple times.
- `Object.toString()` - returns a custom string for this object
- `PooledConnection.getConnection()` - returns the underlying connection

By default method comparisons is done on a String reference level, unless the `PoolConfiguration.setUseEquals(boolean)` has been called with a `true` argument.

## Field Summary

Fields
Modifier and Type
Field
Description
`protected PooledConnection`
`connection`
`protected ConnectionPool`
`pool`

### Fields inherited from class JdbcInterceptor

`CLOSE_VAL, EQUALS_VAL, GETCONNECTION_VAL, HASHCODE_VAL, ISCLOSED_VAL, ISVALID_VAL, ISWRAPPERFOR_VAL, properties, TOSTRING_VAL, UNWRAP_VAL`

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`ProxyConnection(ConnectionPool parent, PooledConnection con, boolean useEquals)`

## Method Summary

Modifier and Type
Method
Description
`PooledConnection`
`getConnection()`
`PooledConnection`
`getDelegateConnection()`
`ConnectionPool`
`getParentPool()`
`ConnectionPool`
`getPool()`
`Object`
`invoke(Object proxy, Method method, Object[] args)`
Gets invoked each time an operation on `Connection` is invoked.
`boolean`
`isClosed()`
`boolean`
`isWrapperFor(Class<?> iface)`
`void`
`reset(ConnectionPool parent, PooledConnection con)`
Gets called each time the connection is borrowed from the pool This means that if an interceptor holds a reference to the connection the interceptor can be reused for another connection.
`void`
`setConnection(PooledConnection connection)`
`void`
`setPool(ConnectionPool pool)`
`String`
`toString()`
`Object`
`unwrap(Class<?> iface)`

### Methods inherited from class JdbcInterceptor

`compare, compare, disconnected, getNext, getProperties, isUseEquals, poolClosed, poolStarted, setNext, setProperties, setUseEquals`

### Methods inherited from class Object

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

## Field Details

### connection

protected PooledConnection connection

### pool

protected ConnectionPool pool

## Constructor Details

### ProxyConnection

protected ProxyConnection(ConnectionPool parent, PooledConnection con, boolean useEquals)

## Method Details

### getConnection

public PooledConnection getConnection()

### setConnection

public void setConnection(PooledConnection connection)

### getPool

public ConnectionPool getPool()

### setPool

public void setPool(ConnectionPool pool)

### reset

public void reset(ConnectionPool parent, PooledConnection con)
Description copied from class: `JdbcInterceptor`
Gets called each time the connection is borrowed from the pool This means that if an interceptor holds a reference to the connection the interceptor can be reused for another connection.
This method may be called with null as both arguments when we are closing down the connection.

Specified by:
  `reset` in class `JdbcInterceptor`
Parameters:
  `parent` - - the connection pool owning the connection
  `con` - - the pooled connection

### isWrapperFor

public boolean isWrapperFor(Class<?> iface)

### unwrap

public Object unwrap(Class<?> iface) throws SQLException

Throws:
  `SQLException`

### invoke

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
Description copied from class: `JdbcInterceptor`
Gets invoked each time an operation on `Connection` is invoked.

Specified by:
  `invoke` in interface `InvocationHandler`
Overrides:
  `invoke` in class `JdbcInterceptor`
Throws:
  `Throwable`

### isClosed

public boolean isClosed()

### getDelegateConnection

public PooledConnection getDelegateConnection()

### getParentPool

public ConnectionPool getParentPool()

### toString

public String toString()

Overrides:
  `toString` in class `Object`