Class ConnectionCustomizer

  • All Implemented Interfaces:
    Cloneable

    public abstract class ConnectionCustomizer
    extends Object
    implements Cloneable
    PUBLIC: The base class for connection customization. The extending class must not alter the attributes defined in this class. Consider implementing equals method on the extending class so that the two instances are consider equal if they apply exactly the same customizations. This allows to skip unnecessary work when overriding customizer defined by ServerSession by the one defined by ClientSession: in case the two customizers are equal the old (ServerSession's) customizer is kept. That may save considerable effort in internal connection pooling case: if both ServerSession and ClientSession have exactly the same proxy properties (that happens if ClientSession doesn't have any proxy properties at all and just "inherits" all the properties from its parent ServerSession) then without correct customizer equality check the proxy session opened by ServerSession would have been closed, only to be re-opened again by ClientSession customizer using exactly the same proxy properties (and then the same happens again when ClientSession releases connection).
    • Constructor Detail

      • ConnectionCustomizer

        public ConnectionCustomizer​(Accessor accessor,
                                    Session session)
        INTERNAL: Constructor accepts the accessor to which the customizer will be applied and the session that used for customization. The accessor and the session couldn't be altered during the connector's lifetime, the only exception is of the new accessor by DatasourceAccessor.clone method.
    • Method Detail

      • getAccessor

        public Accessor getAccessor()
        INTERNAL:
      • getSession

        public Session getSession()
        INTERNAL:
      • setPrevCustomizer

        public void setPrevCustomizer​(ConnectionCustomizer prevCustomizer)
        INTERNAL:
      • customize

        public abstract void customize()
        INTERNAL: Applies customization to connection. Called only if connection is not already customized (isActive()==false). The method may throw SQLException wrapped into DatabaseException. isActive method called after this method should return true only in case the connection was actually customized.
      • isActive

        public abstract boolean isActive()
        INTERNAL: Indicated whether the connection is currently customized.
      • clear

        public abstract void clear()
        INTERNAL: Clears customization from connection. Called only if connection is customized (isActive()==true). If the method fails due to SQLException it should "eat" it (just like DatasourceAccessor.closeConnection method). isActive method called after this method should always return false.