Package org.apache.tomcat.jdbc.pool

## Class ProxyConnection

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

- All Implemented Interfaces:
    `java.lang.reflect.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 org.apache.tomcat.jdbc.pool.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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `PooledConnection` | `getConnection()` |
    `PooledConnection` | `getDelegateConnection()` |
    `ConnectionPool` | `getParentPool()` |
    `ConnectionPool` | `getPool()` |
    `java.lang.Object` | `invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)` | Gets invoked each time an operation on `Connection` is invoked.
    `boolean` | `isClosed()` |
    `boolean` | `isWrapperFor​(java.lang.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)` |
    `java.lang.String` | `toString()` |
    `java.lang.Object` | `unwrap​(java.lang.Class<?> iface)` |

    - ### Methods inherited from class org.apache.tomcat.jdbc.pool.JdbcInterceptor

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

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

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

- - ### Field Detail

    - #### connection

          protected PooledConnection connection

    - #### pool

          protected ConnectionPool pool

  - ### Constructor Detail

    - #### ProxyConnection

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

  - ### Method Detail

    - #### 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​(java.lang.Class<?> iface)

    - #### unwrap

          public java.lang.Object unwrap​(java.lang.Class<?> iface)
                                  throws java.sql.SQLException

      Throws:
        `java.sql.SQLException`

    - #### invoke

          public java.lang.Object invoke​(java.lang.Object proxy,
                                         java.lang.reflect.Method method,
                                         java.lang.Object[] args)
                                  throws java.lang.Throwable

      Description copied from class: `JdbcInterceptor`
      Gets invoked each time an operation on `Connection` is invoked.
      Specified by:
        `invoke` in interface `java.lang.reflect.InvocationHandler`
      Overrides:
        `invoke` in class `JdbcInterceptor`
      Throws:
        `java.lang.Throwable`

    - #### isClosed

          public boolean isClosed()

    - #### getDelegateConnection

          public PooledConnection getDelegateConnection()

    - #### getParentPool

          public ConnectionPool getParentPool()

    - #### toString

          public java.lang.String toString()

      Overrides:
        `toString` in class `java.lang.Object`