You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by rh...@apache.org on 2006/05/13 15:51:41 UTC
svn commit: r406101 - in /db/derby/code/trunk/java:
client/org/apache/derby/client/am/LogicalConnection40.java
engine/org/apache/derby/iapi/jdbc/BrokeredConnection40.java
testing/org/apache/derbyTesting/functionTests/tests/jdbc4/ConnectionTest.java
Author: rhillegas
Date: Sat May 13 06:51:40 2006
New Revision: 406101
URL: http://svn.apache.org/viewcvs?rev=406101&view=rev
Log:
DERBY-1090: Commit Olav's brokeredlogical1090.diff patch, which forwards missing Connection calls for pooled and xa connections.
Modified:
db/derby/code/trunk/java/client/org/apache/derby/client/am/LogicalConnection40.java
db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection40.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/ConnectionTest.java
Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/LogicalConnection40.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/LogicalConnection40.java?rev=406101&r1=406100&r2=406101&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/LogicalConnection40.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/LogicalConnection40.java Sat May 13 06:51:40 2006
@@ -96,11 +96,30 @@
throw SQLExceptionFactory.notImplemented("getClientInfo(String)");
}
- public boolean isValid(int timeout)
- throws SQLException {
- throw SQLExceptionFactory.notImplemented("isValid(int)");
+
+ /**
+ * Checks if the connection has not been closed and is still valid.
+ * The validity is checked by running a simple query against the
+ * database.
+ *
+ * @param timeout The time in seconds to wait for the database
+ * operation used to validate the connection to complete. If the
+ * timeout period expires before the operation completes, this
+ * method returns false. A value of 0 indicates a timeout is not
+ * applied to the database operation.
+ * @return true if the connection is valid, false otherwise
+ * @throws SQLException if the call on the physical connection throws an
+ * exception.
+ */
+ synchronized public boolean isValid(int timeout) throws SQLException {
+ // Check if we have a underlying physical connection
+ if (physicalConnection_ == null) {
+ return false;
+ }
+ return physicalConnection_.isValid(timeout);
}
+
public boolean isWrapperFor(Class<?> interfaces)
throws SQLException {
checkForNullPhysicalConnection();
Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection40.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection40.java?rev=406101&r1=406100&r2=406101&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection40.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/jdbc/BrokeredConnection40.java Sat May 13 06:51:40 2006
@@ -68,8 +68,34 @@
throw Util.notImplemented();
}
- public boolean isValid(int timeout) throws SQLException{
- throw Util.notImplemented();
+
+ /**
+ * Checks if the connection has not been closed and is still valid.
+ * The validity is checked by running a simple query against the
+ * database.
+ *
+ * @param timeout The time in seconds to wait for the database
+ * operation used to validate the connection to complete. If the
+ * timeout period expires before the operation completes, this
+ * method returns false. A value of 0 indicates a timeout is not
+ * applied to the database operation.
+ * @return true if the connection is valid, false otherwise
+ * @throws SQLException if the call on the physical connection throws an
+ * exception.
+ */
+ public final boolean isValid(int timeout) throws SQLException{
+ // Check first if the Brokered connection is closed
+ if (isClosed()) {
+ return false;
+ }
+
+ // Forward the isValid call to the physical connection
+ try {
+ return getRealConnection().isValid(timeout);
+ } catch (SQLException sqle) {
+ notifyException(sqle);
+ throw sqle;
+ }
}
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/ConnectionTest.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/ConnectionTest.java?rev=406101&r1=406100&r2=406101&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/ConnectionTest.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbc4/ConnectionTest.java Sat May 13 06:51:40 2006
@@ -172,6 +172,29 @@
}
/**
+ * Tests that <code>isValid</code> is implemented and returns true
+ * for the connection. This test is very limited but is tested
+ * for all connection types. A more complete test of isValid is
+ * found in the TestConnectionMethods.java test that is run for
+ * for embedded and network client connections.
+ */
+ public void testIsValidImplemented() throws SQLException {
+ // Test with an infinite (0) timeout
+ assertTrue(con.isValid(0));
+
+ // Test with a 1 second timeout
+ assertTrue(con.isValid(1));
+
+ // Test with an illegal timeout
+ try {
+ con.isValid(-1);
+ } catch (SQLException sqle) {
+ assertSQLState("Incorrect SQL state when calling isValid(-1)",
+ "XJ081", sqle);
+ }
+ }
+
+ /**
* Tests that <code>getTypeMap()</code> returns an empty map when
* no type map has been installed.
* @exception SQLException if an error occurs