Diff
Modified: trunk/activerecord-jdbc/Rakefile (736 => 737)
--- trunk/activerecord-jdbc/Rakefile 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/Rakefile 2007-09-11 05:52:52 UTC (rev 737)
@@ -45,42 +45,36 @@
task :test => [:test_mysql]
end
-Rake::TestTask.new(:test_mysql) do |t|
- t.test_files = FileList['test/mysql_*_test.rb']
- t.libs << 'test'
+FileList['drivers/*'].each do |d|
+ next unless File.directory?(d)
+ driver = File.basename(d)
+ Rake::TestTask.new("test_#{driver}") do |t|
+ files = FileList["test/#{driver}*test.rb"]
+ if driver == "derby"
+ files << 'test/activerecord/connection_adapters/type_conversion_test.rb'
+ end
+ t.ruby_opts << "-r#{driver}"
+ t.test_files = files
+ t.libs << "test" << "#{d}/lib"
+ end
end
Rake::TestTask.new(:test_jdbc) do |t|
t.test_files = FileList['test/generic_jdbc_connection_test.rb']
- t.libs << 'test'
+ t.libs << 'test' << 'drivers/mysql/lib'
end
-Rake::TestTask.new(:test_hsqldb) do |t|
- t.test_files = FileList['test/hsqldb_simple_test.rb']
- t.libs << 'test'
-end
-
-Rake::TestTask.new(:test_derby) do |t|
- t.test_files = FileList['test/derby_*_test.rb',
- 'test/activerecord/connection_adapters/type_conversion_test.rb']
- t.libs << 'test'
-end
-
-Rake::TestTask.new(:test_postgresql) do |t|
- t.test_files = FileList['test/postgres_*_test.rb']
- t.libs << 'test'
-end
-
-task :test_pgsql => [:test_postgresql]
-
Rake::TestTask.new(:test_jndi) do |t|
t.test_files = FileList['test/jndi_test.rb']
- t.libs << 'test'
+ t.libs << 'test' << 'drivers/derby/lib'
end
+task :test_postgresql => [:test_postgres]
+task :test_pgsql => [:test_postgres]
+
MANIFEST = FileList["History.txt", "Manifest.txt", "README.txt",
- "Rakefile", "LICENSE", "lib/**/*.rb", "lib/jdbc_adapter_internal.jar", "test/**/*.rb", "lib/**/*.rake",
- "src/**/*.java"]
+ "Rakefile", "LICENSE", "lib/**/*.rb", "lib/jdbc_adapter_internal.jar", "test/**/*.rb",
+ "lib/**/*.rake", "src/**/*.java"]
file "Manifest.txt" => :manifest
task :manifest do
@@ -90,7 +84,8 @@
begin
require 'hoe'
- Hoe.new("ActiveRecord-JDBC", "0.5") do |p|
+ require File.dirname(__FILE__) + "/lib/jdbc_adapter/version"
+ Hoe.new("ActiveRecord-JDBC", JdbcAdapter::Version::VERSION) do |p|
p.rubyforge_name = "jruby-extras"
p.url = ""
p.author = "Nick Sieger, Ola Bini and JRuby contributors"
Added: trunk/activerecord-jdbc/drivers/derby/lib/derby-10.2.2.0.jar
(Binary files differ)
Property changes on: trunk/activerecord-jdbc/drivers/derby/lib/derby-10.2.2.0.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/activerecord-jdbc/drivers/derby/lib/derby.rb (0 => 737)
--- trunk/activerecord-jdbc/drivers/derby/lib/derby.rb (rev 0)
+++ trunk/activerecord-jdbc/drivers/derby/lib/derby.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -0,0 +1 @@
+require 'derby-10.2.2.0.jar'
\ No newline at end of file
Added: trunk/activerecord-jdbc/drivers/hsqldb/lib/hsqldb-1.8.0.7.jar
(Binary files differ)
Property changes on: trunk/activerecord-jdbc/drivers/hsqldb/lib/hsqldb-1.8.0.7.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/activerecord-jdbc/drivers/hsqldb/lib/hsqldb.rb (0 => 737)
--- trunk/activerecord-jdbc/drivers/hsqldb/lib/hsqldb.rb (rev 0)
+++ trunk/activerecord-jdbc/drivers/hsqldb/lib/hsqldb.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -0,0 +1 @@
+require 'hsqldb-1.8.0.7.jar'
\ No newline at end of file
Added: trunk/activerecord-jdbc/drivers/mysql/Rakefile (0 => 737)
--- trunk/activerecord-jdbc/drivers/mysql/Rakefile (rev 0)
+++ trunk/activerecord-jdbc/drivers/mysql/Rakefile 2007-09-11 05:52:52 UTC (rev 737)
@@ -0,0 +1,99 @@
+require 'rake'
+require 'rake/testtask'
+
+task :default => [:java_compile, :test]
+
+def java_classpath_arg # myriad of ways to discover JRuby classpath
+ begin
+ require 'java' # already running in a JRuby JVM
+ jruby_cpath = Java::java.lang.System.getProperty('java.class.path')
+ rescue LoadError
+ end
+ unless jruby_cpath
+ jruby_cpath = ENV['JRUBY_PARENT_CLASSPATH'] || ENV['JRUBY_HOME'] &&
+ FileList["#{ENV['JRUBY_HOME']}/lib/*.jar"].join(File::PATH_SEPARATOR)
+ end
+ cpath_arg = jruby_cpath ? "-cp #{jruby_cpath}" : ""
+end
+
+desc "Compile the native Java code."
+task :java_compile do
+ mkdir_p "pkg/classes"
+ sh "javac -target 1.4 -source 1.4 -d pkg/classes #{java_classpath_arg} #{FileList['src/java/**/*.java'].join(' ')}"
+ sh "jar cf lib/jdbc_adapter_internal.jar -C pkg/classes/ ."
+end
+file "lib/jdbc_adapter_internal.jar" => :java_compile
+
+task :more_clean do
+ rm_rf FileList['derby*']
+ rm_rf FileList['test.db.*']
+ rm_rf "test/reports"
+ rm_f FileList['lib/*.jar']
+end
+
+task :clean => :more_clean
+
+task :filelist do
+ puts FileList['pkg/**/*'].inspect
+end
+
+desc "Run AR-JDBC tests"
+if RUBY_PLATFORM =~ /java/
+ # TODO: add more databases into the standard tests here.
+ task :test => [:test_mysql, :test_jdbc, :test_derby, :test_hsqldb]
+else
+ task :test => [:test_mysql]
+end
+
+%w(mysql postgres derby).each do |driver|
+ Rake::TestTask.new("test_#{driver}") do |t|
+ t.test_files = FileList["test/#{driver}_*_test.rb"]
+ t.test_files << 'test/activerecord/connection_adapters/type_conversion_test.rb' if driver == "derby"
+ t.libs << 'test' << "driver/#{driver}/test"
+ end
+end
+
+Rake::TestTask.new(:test_jdbc) do |t|
+ t.test_files = FileList['test/generic_jdbc_connection_test.rb']
+ t.libs << 'test' << "driver/mysql/test"
+end
+
+Rake::TestTask.new(:test_hsqldb) do |t|
+ t.test_files = FileList['test/hsqldb_simple_test.rb']
+ t.libs << 'test'
+end
+
+task :test_pgsql => :test_postgresql
+
+Rake::TestTask.new(:test_jndi) do |t|
+ t.test_files = FileList['test/jndi_test.rb']
+ t.libs << 'test'
+end
+
+MANIFEST = FileList["History.txt", "Manifest.txt", "README.txt",
+ "Rakefile", "LICENSE", "lib/**/*.rb", "lib/jdbc_adapter_internal.jar", "test/**/*.rb", "lib/**/*.rake",
+ "src/**/*.java"]
+
+file "Manifest.txt" => :manifest
+task :manifest do
+ File.open("Manifest.txt", "w") {|f| MANIFEST.each {|n| f << "#{n}\n"} }
+end
+Rake::Task['manifest'].invoke # Always regen manifest, so Hoe has up-to-date list of files
+
+begin
+ require 'hoe'
+ require File.dirname(__FILE__) + "/lib/jdbc_adapter/version"
+ Hoe.new("ActiveRecord-JDBC", JdbcAdapter::Version::VERSION) do |p|
+ p.rubyforge_name = "jruby-extras"
+ p.url = ""
+ p.author = "Nick Sieger, Ola Bini and JRuby contributors"
+ p.email = "[EMAIL PROTECTED], [EMAIL PROTECTED]"
+ p.summary = "JDBC adapter for ActiveRecord, for use within JRuby on Rails."
+ p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
+ p.description = p.paragraphs_of('README.txt', 0...1).join("\n\n")
+ end.spec.dependencies.delete_if { |dep| dep.name == "hoe" }
+rescue LoadError
+ puts "You really need Hoe installed to be able to package this gem"
+rescue => e
+ puts "ignoring error while loading hoe: #{e.to_s}"
+end
Added: trunk/activerecord-jdbc/drivers/mysql/lib/mysql-connector-java-5.0.4-bin.jar
(Binary files differ)
Property changes on: trunk/activerecord-jdbc/drivers/mysql/lib/mysql-connector-java-5.0.4-bin.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/activerecord-jdbc/drivers/mysql/lib/mysql.rb (0 => 737)
--- trunk/activerecord-jdbc/drivers/mysql/lib/mysql.rb (rev 0)
+++ trunk/activerecord-jdbc/drivers/mysql/lib/mysql.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -0,0 +1 @@
+require 'mysql-connector-java-5.0.4-bin.jar'
\ No newline at end of file
Added: trunk/activerecord-jdbc/drivers/postgres/lib/postgres.rb (0 => 737)
--- trunk/activerecord-jdbc/drivers/postgres/lib/postgres.rb (rev 0)
+++ trunk/activerecord-jdbc/drivers/postgres/lib/postgres.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -0,0 +1 @@
+require 'postgresql-8.2-504.jdbc3.jar'
\ No newline at end of file
Added: trunk/activerecord-jdbc/drivers/postgres/lib/postgresql-8.2-504.jdbc3.jar
(Binary files differ)
Property changes on: trunk/activerecord-jdbc/drivers/postgres/lib/postgresql-8.2-504.jdbc3.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/derby_adapter.rb (736 => 737)
--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/derby_adapter.rb 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/derby_adapter.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -1 +1,6 @@
+begin
+ require 'derby'
+rescue LoadError
+ # hope that the derby jar is already present
+end
require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file
Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/hsqldb_adapter.rb (736 => 737)
--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/hsqldb_adapter.rb 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/hsqldb_adapter.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -1 +1,6 @@
+begin
+ require 'hsqldb'
+rescue LoadError
+ # hope that the hsqldb jar is already present
+end
require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file
Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb (736 => 737)
--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -216,6 +216,16 @@
Jdbc::DriverManager.registerDriver(create)
end
+ def connection(url, user, pass)
+ Jdbc::DriverManager.getConnection(url, user, pass)
+ rescue
+ # bypass DriverManager to get around problem with dynamically loaded jdbc drivers
+ props = java.util.Properties.new
+ props.setProperty("user", user)
+ props.setProperty("password", pass)
+ create.connect(url, props)
+ end
+
def create
driver_class.new
end
@@ -362,15 +372,7 @@
jdbc_driver = JdbcDriver.new(driver)
jdbc_driver.load
- connection = begin
- Jdbc::DriverManager.getConnection(url, user, pass)
- rescue
- # bypass DriverManager to get around problem with dynamically loaded jdbc drivers
- props = java.util.Properties.new
- props.setProperty("user", user)
- props.setProperty("password", pass)
- jdbc_driver.create.connect(url, props)
- end
+ connection = jdbc_driver.connection(url, user, pass)
set_connection connection
end
Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/mysql_adapter.rb (736 => 737)
--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/mysql_adapter.rb 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/mysql_adapter.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -1 +1,6 @@
+begin
+ require 'mysql'
+rescue LoadError
+ # hope that the mysql jar is already present
+end
require 'active_record/connection_adapters/jdbc_adapter'
Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/postgresql_adapter.rb (736 => 737)
--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/postgresql_adapter.rb 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/postgresql_adapter.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -1 +1,6 @@
+begin
+ require 'postgres'
+rescue LoadError
+ # hope that the postgres jar is already present
+end
require 'active_record/connection_adapters/jdbc_adapter'
\ No newline at end of file
Modified: trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mssql.rb (736 => 737)
--- trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mssql.rb 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/jdbc_mssql.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -31,8 +31,8 @@
case type
when :string then unquote value
when :integer then unquote(value).to_i rescue value ? 1 : 0
- when :primary_key then value == true || value == false ? value == true ? 1 : 0 : value.to_i
- when :decimal then self.class.value_to_decimal(unquote value)
+ when :primary_key then value == true || value == false ? value == true ? 1 : 0 : value.to_i
+ when :decimal then self.class.value_to_decimal(unquote(value))
when :datetime then cast_to_datetime(value)
when :timestamp then cast_to_time(value)
when :time then cast_to_time(value)
Added: trunk/activerecord-jdbc/lib/jdbc_adapter/version.rb (0 => 737)
--- trunk/activerecord-jdbc/lib/jdbc_adapter/version.rb (rev 0)
+++ trunk/activerecord-jdbc/lib/jdbc_adapter/version.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -0,0 +1,5 @@
+module JdbcAdapter
+ module Version
+ VERSION = "0.6"
+ end
+end
\ No newline at end of file
Modified: trunk/activerecord-jdbc/test/simple.rb (736 => 737)
--- trunk/activerecord-jdbc/test/simple.rb 2007-09-09 23:39:57 UTC (rev 736)
+++ trunk/activerecord-jdbc/test/simple.rb 2007-09-11 05:52:52 UTC (rev 737)
@@ -121,10 +121,9 @@
def setup
super
config = ActiveRecord::Base.connection.config
- props = java.util.Properties.new
- props.setProperty("user", config[:username])
- props.setProperty("password", config[:password])
- @java_con = java.sql.DriverManager.getConnection(config[:url], props)
+ jdbc_driver = ActiveRecord::ConnectionAdapters::JdbcDriver.new(config[:driver])
+ jdbc_driver.load
+ @java_con = jdbc_driver.connection(config[:url], config[:username], config[:password])
@java_con.setAutoCommit(true)
end