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