java.lang.Object
org.eclipse.persistence.internal.databaseaccess.ConnectionCustomizer
All Implemented Interfaces:
Cloneable
Direct Known Subclasses:
OracleJDBC_10_1_0_2ProxyConnectionCustomizer

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).
  • Field Details

    • accessor

      protected Accessor accessor
    • session

      protected Session session
  • Constructor Details

    • ConnectionCustomizer

      protected 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 Details

    • getAccessor

      public Accessor getAccessor()
      INTERNAL:
    • getSession

      public Session getSession()
      INTERNAL:
    • getPrevCustomizer

      public ConnectionCustomizer getPrevCustomizer()
      INTERNAL:
    • setPrevCustomizer

      public void setPrevCustomizer(ConnectionCustomizer prevCustomizer)
      INTERNAL:
    • createEmptyCustomizer

      public static ConnectionCustomizer createEmptyCustomizer(Session session)
    • 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.