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 dj...@apache.org on 2006/08/06 18:54:04 UTC

svn commit: r429154 - in /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util: JDBC.java TestConfiguration.java

Author: djd
Date: Sun Aug  6 09:54:04 2006
New Revision: 429154

URL: http://svn.apache.org/viewvc?rev=429154&view=rev
Log:
DERBY-1638 Add methods to JDBC for JUnit that indicates if the virtual machine environment
supports JDBC 2,3 or 4 and JSR169. Naming of methods indicates that the define the vm
level of support rather than the clients level.

Modified:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBC.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestConfiguration.java

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBC.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBC.java?rev=429154&r1=429153&r2=429154&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBC.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/JDBC.java Sun Aug  6 09:54:04 2006
@@ -29,6 +29,85 @@
  */
 public class JDBC {
 	
+    /**
+     * Tell if we are allowed to use DriverManager to create database
+     * connections.
+     */
+    private static final boolean HAVE_DRIVER
+                           = haveClass("java.sql.Driver");
+    
+    /**
+     * Does the ParameterMetaData class exist, indicates
+     * JDBC 3 (or JSR 169). 
+     */
+    private static final boolean HAVE_PARAMETER_META_DATA
+                           = haveClass("java.sql.ParameterMetaData");
+
+    /**
+     * Does the java.sql.SQLXML class exist, indicates JDBC 4. 
+     */
+    private static final boolean HAVE_SQLXML
+                           = haveClass("java.sql.SQLXML");
+    
+    /**
+     * Can we load a specific class, use this to determine JDBC level.
+     * @param className Class to attempt load on.
+     * @return true if class can be loaded, false otherwise.
+     */
+    private static boolean haveClass(String className)
+    {
+        try {
+            Class.forName(className);
+            return true;
+        } catch (Exception e) {
+        	return false;
+        }    	
+    }
+ 	/**
+ 	 * <p>
+	 * Return true if the virtual machine environment
+	 * supports JDBC4 or later.
+	 * </p>
+	 */
+	public static boolean vmSupportsJDBC4()
+	{
+		return HAVE_DRIVER
+	       && HAVE_SQLXML;
+	}
+ 	/**
+ 	 * <p>
+	 * Return true if the virtual machine environment
+	 * supports JDBC3 or later.
+	 * </p>
+	 */
+	public static boolean vmSupportsJDBC3()
+	{
+		return HAVE_DRIVER
+		       && HAVE_PARAMETER_META_DATA;
+	}
+
+	/**
+ 	 * <p>
+	 * Return true if the virtual machine environment
+	 * supports JDBC2 or later.
+	 * </p>
+	 */
+	public static boolean vmSupportsJDBC2()
+	{
+		return HAVE_DRIVER;
+	}
+	/**
+ 	 * <p>
+	 * Return true if the virtual machine environment
+	 * supports JSR169 (JDBC 3 subset).
+	 * </p>
+	 */
+	public static boolean vmSupportsJSR169()
+	{
+		return !HAVE_DRIVER
+		       && HAVE_PARAMETER_META_DATA;
+	}	
+	
 	/**
 	 * Rollback and close a connection for cleanup.
 	 * Test code that is expecting Connection.close to succeed

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestConfiguration.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestConfiguration.java?rev=429154&r1=429153&r2=429154&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestConfiguration.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/util/TestConfiguration.java Sun Aug  6 09:54:04 2006
@@ -25,8 +25,6 @@
 import java.sql.SQLException;
 import java.util.Properties;
 
-import org.apache.derby.iapi.services.info.JVMInfo;
-
 /**
  * Class which holds information about the configuration of a Test.
  */
@@ -39,23 +37,6 @@
         new TestConfiguration(getSystemProperties());
     
     /**
-     * Tell if we are allowed to use DriverManager to create database
-     * connections.
-     */
-    private static final boolean HAVE_DRIVER;
-
-    static {
-        // See if java.sql.Driver is available. If it is not, we must use
-        // DataSource to create connections.
-        boolean haveDriver = false;
-        try {
-            Class.forName("java.sql.Driver");
-            haveDriver = true;
-        } catch (Exception e) {}
-        HAVE_DRIVER = haveDriver;
-    }
-    
-    /**
      * This constructor creates a TestConfiguration from a Properties object.
      *
      * @throws NumberFormatException if the port specification is not an integer.
@@ -231,7 +212,7 @@
     public Connection getConnection (String databaseName) throws SQLException {
         Connection con = null;
         JDBCClient client =getJDBCClient();
-        if (HAVE_DRIVER) {            
+        if (JDBC.vmSupportsJDBC2()) {            
             loadJDBCDriver(client.getJDBCDriverName());
             if (!isSingleLegXA()) {
                 con = DriverManager.getConnection(
@@ -279,7 +260,7 @@
 		//
 		// DriverManager autoloads the client only as of JDBC4.
 		//
-		if ( !supportsJDBC4() )
+		if ( !JDBC.vmSupportsJDBC4() )
 		{
 			return false;
 		}
@@ -316,18 +297,6 @@
 		//
 
 		return false;
-	}
-
- 	/**
- 	 * <p>
-	 * Return true if the client supports JDBC4, i.e., if the VM level is at
-	 * least 1.6.
-	 * </p>
-	 */
-	public	boolean	supportsJDBC4()
-	{
-		if ( JVMInfo.JDK_ID >= JVMInfo.J2SE_16 ) { return true; }
-		else { return false; }
 	}
 
 	/**