Sha256: 00834a8778bf91b34570ae7822759aaea94458f8f7dd44209d26f18c38f87269

Contents?: true

Size: 1.75 KB

Versions: 32

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

module ActiveRecord::ConnectionAdapters
  module Jdbc
    # ActiveRecord connection pool callbacks for JDBC.
    # @see ActiveRecord::ConnectionAdapters::Jdbc::JndiConnectionPoolCallbacks
    module ConnectionPoolCallbacks

      def self.included(base)
        base.set_callback :checkin, :after, :on_checkin
        base.set_callback :checkout, :before, :on_checkout
        base.class_eval do
          def self.new(*args)
            adapter = super # extend with JndiConnectionPoolCallbacks if a JNDI connection :
            Jdbc::JndiConnectionPoolCallbacks.prepare(adapter, adapter.instance_variable_get(:@connection))
            adapter
          end
        end
      end

      def on_checkin
        # default implementation does nothing
      end

      def on_checkout
        # default implementation does nothing
      end

    end
    # JNDI specific connection pool callbacks that make sure the JNDI connection
    # is disconnected on check-in and looked up (re-connected) on-checkout.
    module JndiConnectionPoolCallbacks

      def self.prepare(adapter, connection)
        if adapter.is_a?(ConnectionPoolCallbacks) && connection.jndi?
          adapter.extend self # extend JndiConnectionPoolCallbacks
          connection.disconnect! # if connection.open? - close initial (JNDI) connection
        end
      end

      def on_checkin
        disconnect!
      end

      def on_checkout
        reconnect!
      end
    end

  end
  # @deprecated use {ActiveRecord::ConnectionAdapters::Jdbc::ConnectionPoolCallbacks}
  JdbcConnectionPoolCallbacks = Jdbc::ConnectionPoolCallbacks
  # @deprecated use {ActiveRecord::ConnectionAdapters::Jdbc::JndiConnectionPoolCallbacks}
  JndiConnectionPoolCallbacks = Jdbc::JndiConnectionPoolCallbacks
end

Version data entries

32 entries across 32 versions & 2 rubygems

Version Path
activerecord-jdbc-alt-adapter-72.0.0.alpha1-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-71.0.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-adapter-71.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-61.3.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-71.0.0.alpha2-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-71.0.0.alpha1-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-70.2.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-adapter-70.2-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-adapter-61.3-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-70.1.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-70.0.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-adapter-70.1-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-70.0.0.rc2-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-60.3.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-61.2.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-70.0.0.rc1-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-adapter-70.0-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-adapter-70.0.pre-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-adapter-61.2-java lib/arjdbc/jdbc/callbacks.rb
activerecord-jdbc-alt-adapter-60.2.0-java lib/arjdbc/jdbc/callbacks.rb