Class 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.
    • Constructor Detail

      • ProxyConnection

        protected ProxyConnection​(ConnectionPool parent,
                                  PooledConnection con,
                                  boolean useEquals)
        Creates a new ProxyConnection wrapping the given pooled connection.
        Parameters:
        parent - the parent connection pool
        con - the pooled connection
        useEquals - whether to use equals for method comparison
    • Method Detail

      • getConnection

        public PooledConnection getConnection()
        Returns the underlying pooled connection.
        Returns:
        the pooled connection
      • setConnection

        public void setConnection​(PooledConnection connection)
        Sets the underlying pooled connection.
        Parameters:
        connection - the pooled connection
      • getPool

        public ConnectionPool getPool()
        Returns the parent connection pool.
        Returns:
        the connection pool
      • setPool

        public void setPool​(ConnectionPool pool)
        Sets the parent connection pool.
        Parameters:
        pool - the connection 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)
        Checks whether this proxy wraps the given interface.
        Parameters:
        iface - the interface to check
        Returns:
        true if this proxy wraps the given interface
      • unwrap

        public java.lang.Object unwrap​(java.lang.Class<?> iface)
                                throws java.sql.SQLException
        Unwraps the connection to the given interface.
        Parameters:
        iface - the interface to unwrap to
        Returns:
        the unwrapped connection
        Throws:
        java.sql.SQLException - if the connection does not wrap the given interface
      • 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()
        Returns true if the underlying connection has been closed or discarded.
        Returns:
        true if closed or discarded
      • getDelegateConnection

        public PooledConnection getDelegateConnection()
        Returns the delegate pooled connection.
        Returns:
        the delegate pooled connection
      • getParentPool

        public ConnectionPool getParentPool()
        Returns the parent connection pool.
        Returns:
        the parent connection pool
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object