Skip to content

Commit 9dfe1c5

Browse files
committed
return "early" from jndi: configurations (no driver loading, url completion etc)
1 parent cd6d5f2 commit 9dfe1c5

File tree

10 files changed

+61
-26
lines changed

10 files changed

+61
-26
lines changed

lib/arjdbc/db2/connection_methods.rb

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
# @note Assumes DB2 driver (*db2jcc.jar*) is on class-path.
33
def db2_connection(config)
4+
config[:adapter_spec] ||= ::ArJdbc::DB2
5+
6+
return jndi_connection(config) if config[:jndi]
7+
48
config[:url] ||= begin
59
if config[:host] # Type 4 URL: jdbc:db2://server:port/database
610
config[:port] ||= 50000
@@ -10,14 +14,17 @@ def db2_connection(config)
1014
end
1115
end
1216
config[:driver] ||= ::ArJdbc::DB2::DRIVER_NAME
13-
config[:adapter_spec] ||= ::ArJdbc::DB2
1417
config[:connection_alive_sql] ||= 'SELECT 1 FROM syscat.tables FETCH FIRST 1 ROWS ONLY'
1518
jdbc_connection(config)
1619
end
1720
alias_method :jdbcdb2_connection, :db2_connection
1821

1922
# @note Assumes AS400 driver (*jt400.jar*) is on class-path.
2023
def as400_connection(config)
24+
config[:adapter_spec] ||= ::ArJdbc::AS400
25+
26+
return jndi_connection(config) if config[:jndi]
27+
2128
config[:url] ||= begin
2229
# jdbc:as400://[host]
2330
url = 'jdbc:as400://'
@@ -30,7 +37,6 @@ def as400_connection(config)
3037
end
3138
require 'arjdbc/db2/as400'
3239
config[:driver] ||= ::ArJdbc::AS400::DRIVER_NAME
33-
config[:adapter_spec] ||= ::ArJdbc::AS400
3440
config[:connection_alive_sql] ||= 'SELECT 1 FROM sysibm.tables FETCH FIRST 1 ROWS ONLY'
3541
jdbc_connection(config)
3642
end

lib/arjdbc/derby/connection_methods.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
def derby_connection(config)
3+
config[:adapter_spec] ||= ::ArJdbc::Derby
4+
5+
return jndi_connection(config) if config[:jndi]
6+
37
begin
48
require 'jdbc/derby'
59
::Jdbc::Derby.load_driver(:require) if defined?(::Jdbc::Derby.load_driver)
@@ -9,7 +13,6 @@ def derby_connection(config)
913
config[:url] ||= "jdbc:derby:#{config[:database]};create=true"
1014
config[:driver] ||= defined?(::Jdbc::Derby.driver_name) ?
1115
::Jdbc::Derby.driver_name : 'org.apache.derby.jdbc.EmbeddedDriver'
12-
config[:adapter_spec] ||= ::ArJdbc::Derby
1316

1417
embedded_driver(config)
1518
end

lib/arjdbc/firebird/connection_methods.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
def firebird_connection(config)
3+
config[:adapter_spec] ||= ::ArJdbc::Firebird
4+
5+
return jndi_connection(config) if config[:jndi]
6+
37
begin
48
require 'jdbc/firebird'
59
::Jdbc::Firebird.load_driver(:require)
@@ -12,7 +16,6 @@ def firebird_connection(config)
1216
"jdbc:firebirdsql://#{config[:host]}:#{config[:port]}/#{config[:database]}"
1317
end
1418
config[:driver] ||= ::Jdbc::Firebird.driver_name
15-
config[:adapter_spec] ||= ::ArJdbc::Firebird
1619

1720
jdbc_connection(config)
1821
end

lib/arjdbc/h2/connection_methods.rb

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
def h2_connection(config)
3+
config[:adapter_spec] ||= ::ArJdbc::H2
4+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::H2Adapter unless config.key?(:adapter_class)
5+
6+
return jndi_connection(config) if config[:jndi]
7+
38
begin
49
require 'jdbc/h2'
510
::Jdbc::H2.load_driver(:require) if defined?(::Jdbc::H2.load_driver)
611
rescue LoadError # assuming driver.jar is on the class-path
712
end
8-
13+
914
config[:url] ||= begin
1015
db = config[:database]
1116
if db[0, 4] == 'mem:' || db[0, 5] == 'file:' || db[0, 5] == 'hsql:'
@@ -15,9 +20,7 @@ def h2_connection(config)
1520
end
1621
end
1722
config[:driver] ||= defined?(::Jdbc::H2.driver_name) ? ::Jdbc::H2.driver_name : 'org.h2.Driver'
18-
config[:adapter_spec] ||= ::ArJdbc::H2
19-
config[:adapter_class] = ActiveRecord::ConnectionAdapters::H2Adapter unless config.key?(:adapter_class)
20-
23+
2124
embedded_driver(config)
2225
end
2326
alias_method :jdbch2_connection, :h2_connection

lib/arjdbc/hsqldb/connection_methods.rb

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
def hsqldb_connection(config)
3+
config[:adapter_spec] ||= ::ArJdbc::HSQLDB
4+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::HsqldbAdapter unless config.key?(:adapter_class)
5+
6+
return jndi_connection(config) if config[:jndi]
7+
38
begin
49
require 'jdbc/hsqldb'
510
::Jdbc::HSQLDB.load_driver(:require) if defined?(::Jdbc::HSQLDB.load_driver)
611
rescue LoadError # assuming driver.jar is on the class-path
712
end
8-
13+
914
config[:url] ||= begin
1015
db = config[:database]
1116
if db[0, 4] == 'mem:' || db[0, 5] == 'file:' || db[0, 5] == 'hsql:'
@@ -15,10 +20,8 @@ def hsqldb_connection(config)
1520
end
1621
end
1722
config[:driver] ||= defined?(::Jdbc::HSQLDB.driver_name) ? ::Jdbc::HSQLDB.driver_name : 'org.hsqldb.jdbcDriver'
18-
config[:adapter_spec] ||= ::ArJdbc::HSQLDB
19-
config[:adapter_class] = ActiveRecord::ConnectionAdapters::HsqldbAdapter unless config.key?(:adapter_class)
2023
config[:connection_alive_sql] ||= 'CALL PI()' # does not like 'SELECT 1'
21-
24+
2225
embedded_driver(config)
2326
end
2427
alias_method :jdbchsqldb_connection, :hsqldb_connection

lib/arjdbc/mssql/connection_methods.rb

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ def mssql_connection(config)
1010
if config[:driver] =~ /SQLServerDriver$/ || config[:url] =~ /^jdbc:sqlserver:/
1111
return sqlserver_connection(config)
1212
end
13+
14+
config[:adapter_spec] ||= ::ArJdbc::MSSQL
15+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::MSSQLAdapter unless config.key?(:adapter_class)
16+
17+
return jndi_connection(config) if config[:jndi]
1318

1419
begin
1520
require 'jdbc/jtds'
@@ -23,8 +28,6 @@ def mssql_connection(config)
2328
config[:host] ||= 'localhost'
2429
config[:port] ||= 1433
2530
config[:driver] ||= defined?(::Jdbc::JTDS.driver_name) ? ::Jdbc::JTDS.driver_name : 'net.sourceforge.jtds.jdbc.Driver'
26-
config[:adapter_spec] ||= ::ArJdbc::MSSQL
27-
config[:adapter_class] = ActiveRecord::ConnectionAdapters::MSSQLAdapter unless config.key?(:adapter_class)
2831
config[:connection_alive_sql] ||= 'SELECT 1'
2932

3033
config[:url] ||= begin
@@ -49,10 +52,13 @@ def mssql_connection(config)
4952

5053
# @note Assumes SQLServer SQL-JDBC driver on the class-path.
5154
def sqlserver_connection(config)
52-
config[:host] ||= 'localhost'
53-
config[:driver] ||= 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
5455
config[:adapter_spec] ||= ::ArJdbc::MSSQL
5556
config[:adapter_class] = ActiveRecord::ConnectionAdapters::MSSQLAdapter unless config.key?(:adapter_class)
57+
58+
return jndi_connection(config) if config[:jndi]
59+
60+
config[:host] ||= 'localhost'
61+
config[:driver] ||= 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
5662
config[:connection_alive_sql] ||= 'SELECT 1'
5763

5864
config[:url] ||= begin

lib/arjdbc/mysql/connection_methods.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
def mysql_connection(config)
3+
config[:adapter_spec] ||= ::ArJdbc::MySQL
4+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::MysqlAdapter unless config.key?(:adapter_class)
5+
6+
return jndi_connection(config) if config[:jndi]
7+
38
begin
49
require 'jdbc/mysql'
510
::Jdbc::MySQL.load_driver(:require) if defined?(::Jdbc::MySQL.load_driver)
@@ -19,8 +24,6 @@ def mysql_connection(config)
1924
config[:url] = url
2025
end
2126
config[:driver] ||= defined?(::Jdbc::MySQL.driver_name) ? ::Jdbc::MySQL.driver_name : 'com.mysql.jdbc.Driver'
22-
config[:adapter_spec] ||= ::ArJdbc::MySQL
23-
config[:adapter_class] = ActiveRecord::ConnectionAdapters::MysqlAdapter unless config.key?(:adapter_class)
2427

2528
properties = ( config[:properties] ||= {} )
2629
properties['zeroDateTimeBehavior'] ||= 'convertToNull'

lib/arjdbc/oracle/connection_methods.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
# *thin* method to connect to the Oracle DB.
44
# @note Oracle's JDBC driver should be on the class-path.
55
def oracle_connection(config)
6+
config[:adapter_spec] ||= ::ArJdbc::Oracle
7+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::OracleAdapter unless config.key?(:adapter_class)
8+
9+
return jndi_connection(config) if config[:jndi]
10+
611
config[:port] ||= 1521
712
config[:url] ||= "jdbc:oracle:thin:@#{config[:host]}:#{config[:port]}:#{config[:database]}"
813
config[:driver] ||= "oracle.jdbc.driver.OracleDriver"
9-
config[:adapter_spec] ||= ::ArJdbc::Oracle
10-
config[:adapter_class] = ActiveRecord::ConnectionAdapters::OracleAdapter unless config.key?(:adapter_class)
1114
config[:connection_alive_sql] ||= 'SELECT 1 FROM DUAL'
1215
jdbc_connection(config)
1316
end

lib/arjdbc/postgresql/connection_methods.rb

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
def postgresql_connection(config)
3+
config[:adapter_spec] ||= ::ArJdbc::PostgreSQL
4+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::PostgreSQLAdapter unless config.key?(:adapter_class)
5+
6+
return jndi_connection(config) if config[:jndi]
7+
38
begin
49
require 'jdbc/postgres'
510
::Jdbc::Postgres.load_driver(:require) if defined?(::Jdbc::Postgres.load_driver)
611
rescue LoadError # assuming driver.jar is on the class-path
712
end
13+
config[:driver] ||= defined?(::Jdbc::Postgres.driver_name) ? ::Jdbc::Postgres.driver_name : 'org.postgresql.Driver'
814

915
host = config[:host] ||= ( config[:hostaddr] || ENV['PGHOST'] || 'localhost' )
1016
port = config[:port] ||= ( ENV['PGPORT'] || 5432 )
@@ -36,10 +42,6 @@ def postgresql_connection(config)
3642
properties['tcpKeepAlive'] ||= config[:keepalives] if config.key?(:keepalives)
3743
properties['kerberosServerName'] ||= config[:krbsrvname] if config[:krbsrvname]
3844

39-
config[:driver] ||= defined?(::Jdbc::Postgres.driver_name) ? ::Jdbc::Postgres.driver_name : 'org.postgresql.Driver'
40-
config[:adapter_spec] ||= ::ArJdbc::PostgreSQL
41-
config[:adapter_class] = ActiveRecord::ConnectionAdapters::PostgreSQLAdapter unless config.key?(:adapter_class)
42-
4345
jdbc_connection(config)
4446
end
4547
alias_method :jdbcpostgresql_connection, :postgresql_connection

lib/arjdbc/sqlite3/connection_methods.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
ArJdbc::ConnectionMethods.module_eval do
22
def sqlite3_connection(config)
3+
config[:adapter_spec] ||= ::ArJdbc::SQLite3
4+
config[:adapter_class] = ActiveRecord::ConnectionAdapters::SQLite3Adapter unless config.key?(:adapter_class)
5+
6+
return jndi_connection(config) if config[:jndi]
7+
38
begin
49
require 'jdbc/sqlite3'
510
::Jdbc::SQLite3.load_driver(:require) if defined?(::Jdbc::SQLite3.load_driver)
@@ -10,8 +15,6 @@ def sqlite3_connection(config)
1015
database = config[:database] # NOTE: "jdbc:sqlite::memory:" syntax is supported
1116
config[:url] ||= "jdbc:sqlite:#{database == ':memory:' ? '' : database}"
1217
config[:driver] ||= defined?(::Jdbc::SQLite3.driver_name) ? ::Jdbc::SQLite3.driver_name : 'org.sqlite.JDBC'
13-
config[:adapter_spec] ||= ::ArJdbc::SQLite3
14-
config[:adapter_class] = ActiveRecord::ConnectionAdapters::SQLite3Adapter unless config.key?(:adapter_class)
1518
config[:connection_alive_sql] ||= 'SELECT 1'
1619

1720
options = ( config[:properties] ||= {} )

0 commit comments

Comments
 (0)