db-derby-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From kmars...@apache.org
Subject svn commit: r240352 - in /db/derby/code/trunk/java: engine/org/apache/derby/iapi/reference/ engine/org/apache/derby/jdbc/ testing/org/apache/derbyTesting/functionTests/master/ testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/
Date Fri, 26 Aug 2005 22:00:51 GMT
Author: kmarsden
Date: Fri Aug 26 15:00:39 2005
New Revision: 240352

URL: http://svn.apache.org/viewcvs?rev=240352&view=rev
Log:

DERBY-535 Driver.acceptsURL() for embedded driver incorrectly returns true for
a client url like jdbc:derby://

Changed embedded driver to reject network URL's
Added test for testing driver methods.


Added:
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkDriver.out
  (with props)
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDriver.java
  (with props)
Modified:
    db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/Attribute.java
    db/derby/code/trunk/java/engine/org/apache/derby/jdbc/InternalDriver.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant

Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/Attribute.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/Attribute.java?rev=240352&r1=240351&r2=240352&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/Attribute.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/reference/Attribute.java Fri Aug
26 15:00:39 2005
@@ -44,7 +44,7 @@
 public interface Attribute {
 
 	/**
-		Not an attribute but the root for the JDBC URL that Cloudscape supports.
+		Not an attribute but the root for the JDBC URL that Derby supports.
 	*/
 	String PROTOCOL = "jdbc:derby:";
 		
@@ -54,7 +54,21 @@
 	 */
 	String SQLJ_NESTED = "jdbc:default:connection";
 
-
+	
+	// Network Protocols.  These need to be rejected by the embedded driver.
+	
+	/**
+	 * The protocol for Derby Network Client 
+	 */ 
+	String DNC_PROTOCOL = "jdbc:derby://";
+	
+	/** 
+	 * The protocol for the IBM Universal JDBC Driver 
+	 * 
+	 */
+	String JCC_PROTOCOL = "jdbc:derby:net:";
+	
+	
 	/**
 		Attribute name to encrypt the database on disk.
 		If set to true, all user data is stored encrypted on disk.

Modified: db/derby/code/trunk/java/engine/org/apache/derby/jdbc/InternalDriver.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/jdbc/InternalDriver.java?rev=240352&r1=240351&r2=240352&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/jdbc/InternalDriver.java (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/jdbc/InternalDriver.java Fri Aug 26 15:00:39
2005
@@ -102,7 +102,11 @@
 	** Methods from java.sql.Driver
 	*/
 	public boolean acceptsURL(String url) {
-		return active && (url.startsWith(Attribute.PROTOCOL) || url.equals(Attribute.SQLJ_NESTED));
+		return active &&
+		//	need to reject network driver's URL's
+		!url.startsWith(Attribute.JCC_PROTOCOL) && !url.startsWith(Attribute.DNC_PROTOCOL)
&&
+		(url.startsWith(Attribute.PROTOCOL) || url.equals(Attribute.SQLJ_NESTED));
+				
 	}
 
 	public Connection connect(String url, Properties info)

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkDriver.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkDriver.out?rev=240352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkDriver.out
(added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkDriver.out
Fri Aug 26 15:00:39 2005
@@ -0,0 +1,4 @@
+checking acceptsURL(jdbc:derby:wombat;create=true)
+checking acceptsURL(jdbc:derby://localhost:1527/wombat;create=true)
+checking acceptsURL(jdbc:derby:net://localhost:1527/wombat;create=true)
+checking acceptsURL(jdbc:db2j:wombat;create=true)

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/checkDriver.out
------------------------------------------------------------------------------
    svn:eol-style = native

Added: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDriver.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDriver.java?rev=240352&view=auto
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDriver.java
(added)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDriver.java
Fri Aug 26 15:00:39 2005
@@ -0,0 +1,153 @@
+/*
+
+Derby - Class org.apache.derby.jdbc.EmbeddedDriver
+
+Copyright 2005 The Apache Software Foundation or its licensors, as applicable.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+*/
+
+package org.apache.derbyTesting.functionTests.tests.jdbcapi;
+import org.apache.derbyTesting.functionTests.util.TestUtil;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.Properties;
+
+/**
+ * @author marsden
+ *
+ * This test tests java.sql.Driver methods.
+ * Right now it just tests acceptsURL.  
+ * Tests for getPropertyInfo need to be added. as well as connection attributes
+ * 
+ */
+
+public class checkDriver {
+
+	private static String EMBEDDED_URL = "jdbc:derby:wombat;create=true";
+	private static String CLIENT_URL = "jdbc:derby://localhost:1527/wombat;create=true";
+	private static String JCC_URL = "jdbc:derby:net://localhost:1527/wombat;create=true";
+	private static String INVALID_URL = "jdbc:db2j:wombat;create=true";
+	
+	// URLS to check.  New urls need to also be added to the acceptsUrl table
+	private static String[] urls = new String[]
+	{
+	  	EMBEDDED_URL,
+		CLIENT_URL,
+		JCC_URL,
+		INVALID_URL,
+	};
+	
+	
+	
+	
+	// The acceptsURLTable uses  the frameworkOffset column int he table 
+	// to check for valid results for each framework
+	private static int  frameworkOffset;
+	
+	
+	private static int EMBEDDED_OFFSET = 0;
+	private static int DERBYNETCLIENT_OFFSET = 1;
+	private static int DERBYNET_OFFSET = 2;   // JCC
+	
+	static {
+		if (TestUtil.isEmbeddedFramework())
+			frameworkOffset = EMBEDDED_OFFSET;
+		else if (TestUtil.isDerbyNetClientFramework())
+			frameworkOffset = DERBYNETCLIENT_OFFSET;
+		else if (TestUtil.isJCCFramework())
+			frameworkOffset = DERBYNET_OFFSET; // JCC
+	}
+	
+	// Table that shows whether tested urls should return true for acceptsURL
+	// under the given framework
+	private static boolean[][] acceptsURLTable = new boolean[][]
+	{
+	// Framework/url      EMBEDDED     DERBYNETCLIENT       DERBYNET (JCC)
+	/*EMBEDDED_URL */  {   true      ,  false           ,   false    },
+	/*CLIENT_URL   */  {   false     ,  true            ,   false    },     
+	/* JCC_URL 	   */  {   false     ,  false           ,   true     },
+	/* INVALID_URL */  {   false     ,  false           ,   false    } 
+	};
+
+			
+
+	public static void main(String[] args) {
+		try {
+			Driver driver = loadAndCheckDriverForFramework();
+			checkAcceptsURL(driver);
+		} catch (Exception e)
+		{
+			e.printStackTrace();
+		}
+	}
+	
+
+	/**
+	 * 
+	 * @param driver
+	 */
+	private static void checkAcceptsURL(Driver driver) throws SQLException{
+		for (int u = 0; u < urls.length;u++)
+		{
+			String url = urls[u];
+			//System.out.println("acceptsURLTable[" + u +"][" + frameworkOffset+ "]"); 					
+			boolean expectedAcceptance = acceptsURLTable[u][frameworkOffset];
+			boolean actualAcceptance = driver.acceptsURL(url);
+			System.out.println("checking acceptsURL(" + url + ")" );
+			assertExpectedURLAcceptance(url, expectedAcceptance, actualAcceptance);
+					
+		}
+		
+	}
+
+
+	private static Driver loadAndCheckDriverForFramework() throws Exception	
+	{	
+		TestUtil.loadDriver();
+			
+		String frameworkURL = TestUtil.getJdbcUrlPrefix() + "wombat;create=true";
+		TestUtil.loadDriver();
+		
+		// Test that we loaded the right driver by making a connection
+		Driver driver = DriverManager.getDriver(frameworkURL);
+		Properties props = new Properties();
+		props.put("user","APP");
+		props.put("password","xxx");
+		Connection conn = driver.connect(frameworkURL,props);
+		//System.out.println("Successfully made connection for  " + conn.getMetaData().getDriverName());
+		conn.close();
+		//System.out.println("jdbcCompliant = " +  driver.jdbcCompliant());	
+		return driver;
+	}
+		
+
+	
+	
+	private static void assertExpectedURLAcceptance(String url, boolean expectedAcceptance,

+				boolean actualAcceptance)
+	{
+		if (actualAcceptance != expectedAcceptance)
+		{
+			new Exception("FAILED acceptURL check. url = " + url  + 
+						   " expectedAcceptance = " + expectedAcceptance +
+						   " actualAcceptance = " + actualAcceptance).printStackTrace(System.out);
+		}
+
+	}
+	
+	
+}
\ No newline at end of file

Propchange: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/checkDriver.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant?rev=240352&r1=240351&r2=240352&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant
(original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/copyfiles.ant
Fri Aug 26 15:00:39 2005
@@ -6,6 +6,7 @@
 blobclob4BLOB_derby.properties
 bestrowidentifier.sql
 bestrowidentifier_app.properties
+checkDriver_app.properties
 dbMetaDataJdbc30_app.properties
 dbMetaDataJdbc30_sed.properties
 default_app.properties



Mime
View raw message