Title: [800] trunk/activerecord-jdbc: Add a proper disconnect! method to jdbc adapter
Revision
800
Author
nicksieger
Date
2007-11-13 17:02:26 -0500 (Tue, 13 Nov 2007)

Log Message

Add a proper disconnect! method to jdbc adapter

Modified Paths


Diff

Modified: trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb (799 => 800)


--- trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-11-13 21:45:09 UTC (rev 799)
+++ trunk/activerecord-jdbc/lib/active_record/connection_adapters/jdbc_adapter.rb	2007-11-13 22:02:26 UTC (rev 800)
@@ -468,6 +468,10 @@
         @connection.reconnect!
         @connection
       end
+      
+      def disconnect!
+	@connection.disconnect!
+      end
 
       def select_all(sql, name = nil)
         select(sql, name)

Modified: trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcAdapterInternalService.java (799 => 800)


--- trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcAdapterInternalService.java	2007-11-13 21:45:09 UTC (rev 799)
+++ trunk/activerecord-jdbc/src/java/jdbc_adapter/JdbcAdapterInternalService.java	2007-11-13 22:02:26 UTC (rev 800)
@@ -80,6 +80,7 @@
         cJdbcConn.defineMethod("with_connection_retry_guard",cf.getSingletonMethod("with_connection_retry_guard"));
         cJdbcConn.defineFastMethod("connection",cf.getFastSingletonMethod("connection"));
         cJdbcConn.defineFastMethod("reconnect!",cf.getFastSingletonMethod("reconnect"));
+        cJdbcConn.defineFastMethod("disconnect!",cf.getFastSingletonMethod("disconnect"));
         cJdbcConn.defineFastMethod("execute_update",cf.getFastSingletonMethod("execute_update", IRubyObject.class));
         cJdbcConn.defineFastMethod("execute_query",cf.getFastOptSingletonMethod("execute_query")); 
         cJdbcConn.defineFastMethod("execute_insert",cf.getFastSingletonMethod("execute_insert", IRubyObject.class));
@@ -227,6 +228,11 @@
         return recv.getInstanceVariable("@connection");
     }
 
+    public static IRubyObject disconnect(IRubyObject recv) {
+        setConnection(recv, null);
+        return recv;
+    }
+
     public static IRubyObject reconnect(IRubyObject recv) {
         setConnection(recv, getConnectionFactory(recv).newConnection());
         return recv;
@@ -1033,7 +1039,11 @@
                 prev.close();
             } catch(Exception e) {}
         }
-        recv.setInstanceVariable("@connection", wrappedConnection(recv,c));
+        IRubyObject rubyconn = recv.getRuntime().getNil();
+        if (c != null) {
+            rubyconn = wrappedConnection(recv,c);
+        }
+        recv.setInstanceVariable("@connection", rubyconn);
         recv.dataWrapStruct(c);
         return recv;
     }

Modified: trunk/activerecord-jdbc/test/simple.rb (799 => 800)


--- trunk/activerecord-jdbc/test/simple.rb	2007-11-13 21:45:09 UTC (rev 799)
+++ trunk/activerecord-jdbc/test/simple.rb	2007-11-13 22:02:26 UTC (rev 800)
@@ -132,6 +132,11 @@
       end
     end
   end
+
+  def test_disconnect
+    ActiveRecord::Base.clear_active_connections!
+    assert !ActiveRecord::Base.connected?
+  end
 end
 
 module MultibyteTestMethods
_______________________________________________
Jruby-extras-devel mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/jruby-extras-devel

Reply via email to