Title: [737] trunk/activerecord-jdbc: - Import drivers for derby, hsqldb, mysql, and postgres
Revision
737
Author
nicksieger
Date
2007-09-11 01:52:52 -0400 (Tue, 11 Sep 2007)

Log Message

- Import drivers for derby, hsqldb, mysql, and postgres
- Prepare to generate separate gems for individual drivers

Modified Paths

Added Paths

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
 
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to