Class AttributeRestoringConnectionInvocationHandler

  • All Implemented Interfaces:
    java.lang.reflect.InvocationHandler

    public class AttributeRestoringConnectionInvocationHandler
    extends java.lang.Object
    implements java.lang.reflect.InvocationHandler

    Protects a Connection's attributes from being permanently modfied.

    Wraps a provided Connection such that its auto commit and transaction isolation attributes can be overwritten, but will automatically restored to their original values when the connection is actually closed (and potentially returned to a pool for reuse).

    See Also:
    JobStoreSupport.getConnection(), JobStoreCMT.getNonManagedTXConnection()
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Attempts to restore the auto commit and transaction isolation connection attributes of the wrapped connection to their original values (if they were overwritten), before finally actually closing the wrapped connection.
      protected org.slf4j.Logger getLog()  
      java.sql.Connection getWrappedConnection()
      Gets the underlying connection to which all operations ultimately defer.
      java.lang.Object invoke​(java.lang.Object proxy, java.lang.reflect.Method method, java.lang.Object[] args)  
      void restoreOriginalAtributes()
      Attempts to restore the auto commit and transaction isolation connection attributes of the wrapped connection to their original values (if they were overwritten).
      void setAutoCommit​(boolean autoCommit)
      Sets this connection's auto-commit mode to the given state, saving the original mode.
      void setTransactionIsolation​(int level)
      Attempts to change the transaction isolation level to the given level, saving the original level.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • AttributeRestoringConnectionInvocationHandler

        public AttributeRestoringConnectionInvocationHandler​(java.sql.Connection conn)
    • Method Detail

      • getLog

        protected org.slf4j.Logger getLog()
      • invoke

        public java.lang.Object invoke​(java.lang.Object proxy,
                                       java.lang.reflect.Method method,
                                       java.lang.Object[] args)
                                throws java.lang.Throwable
        Specified by:
        invoke in interface java.lang.reflect.InvocationHandler
        Throws:
        java.lang.Throwable
      • setAutoCommit

        public void setAutoCommit​(boolean autoCommit)
                           throws java.sql.SQLException
        Sets this connection's auto-commit mode to the given state, saving the original mode. The connection's original auto commit mode is restored when the connection is closed.
        Throws:
        java.sql.SQLException
      • setTransactionIsolation

        public void setTransactionIsolation​(int level)
                                     throws java.sql.SQLException
        Attempts to change the transaction isolation level to the given level, saving the original level. The connection's original transaction isolation level is restored when the connection is closed.
        Throws:
        java.sql.SQLException
      • getWrappedConnection

        public java.sql.Connection getWrappedConnection()
        Gets the underlying connection to which all operations ultimately defer. This is provided in case a user ever needs to punch through the wrapper to access vendor specific methods outside of the standard java.sql.Connection interface.
        Returns:
        The underlying connection to which all operations ultimately defer.
      • restoreOriginalAtributes

        public void restoreOriginalAtributes()
        Attempts to restore the auto commit and transaction isolation connection attributes of the wrapped connection to their original values (if they were overwritten).
      • close

        public void close()
                   throws java.sql.SQLException
        Attempts to restore the auto commit and transaction isolation connection attributes of the wrapped connection to their original values (if they were overwritten), before finally actually closing the wrapped connection.
        Throws:
        java.sql.SQLException