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 2007/01/06 00:42:03 UTC
svn commit: r493244 - in
/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit:
JDBCDataSource.java TestConfiguration.java
Author: djd
Date: Fri Jan 5 15:42:02 2007
New Revision: 493244
URL: http://svn.apache.org/viewvc?view=rev&rev=493244
Log:
DERBY-2217 (partial) Cleanup in the junit test configuration to ensure that a copy
of TestConfiguration maintains the connection handling from the copy. All a decorator
to set the default connection handling to use DataSource api.
Modified:
db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java
db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java?view=diff&rev=493244&r1=493243&r2=493244
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/JDBCDataSource.java Fri Jan 5 15:42:02 2007
@@ -20,6 +20,7 @@
package org.apache.derbyTesting.junit;
import java.lang.reflect.Method;
+import java.security.AccessController;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Iterator;
@@ -98,15 +99,37 @@
/**
* Return a DataSource object of the passsed in type
* configured with the passed in Java bean properties.
- * This will actually work with an object that has Java bean
+ * This will actually work with any object that has Java bean
* setter methods.
+ * <BR>
+ * If a thread context class loader exists then it is used
+ * to try and load the class.
*/
static Object getDataSourceObject(String classname, HashMap beanProperties)
{
-
- Object ds;
+ ClassLoader contextLoader =
+ (ClassLoader) AccessController.doPrivileged
+ (new java.security.PrivilegedAction(){
+
+ public Object run() {
+ return Thread.currentThread().getContextClassLoader();
+ }
+ });
+
try {
- ds = Class.forName(classname).newInstance();
+ Object ds = null;
+ if (contextLoader != null)
+ {
+ try {
+ ds = Class.forName(classname, true, contextLoader).newInstance();
+ } catch (Exception e) {
+ // context loader may not be correctly hooked up
+ // with parent, try without it.
+ }
+ }
+
+ if (ds == null)
+ ds = Class.forName(classname).newInstance();
for (Iterator i = beanProperties.keySet().iterator();
i.hasNext(); )
Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java
URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java?view=diff&rev=493244&r1=493243&r2=493244
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/TestConfiguration.java Fri Jan 5 15:42:02 2007
@@ -27,6 +27,7 @@
import java.sql.SQLException;
import java.util.Properties;
+import junit.extensions.TestSetup;
import junit.framework.Assert;
import junit.framework.Test;
import junit.framework.TestCase;
@@ -271,7 +272,7 @@
* @param test Test to be decorated
* @return decorated test.
*/
- public static Test singleUseDatabaseDecorator(Test test)
+ public static TestSetup singleUseDatabaseDecorator(Test test)
{
// Forward slash is ok, Derby treats database names
// as URLs and translates forward slash to the local
@@ -347,11 +348,25 @@
* The tearDown reverts the configuration to the previous
* configuration.
*/
- public static Test connectionXADecorator(Test test)
+ public static TestSetup connectionXADecorator(Test test)
{
return new ConnectorSetup(test,
"org.apache.derbyTesting.junit.XADataSourceConnector");
}
+ /**
+ * Return a decorator that changes the configuration to obtain
+ * connections from a standard DataSource using
+ * <code>
+ * getConnection()
+ * </code>
+ * The tearDown reverts the configuration to the previous
+ * configuration.
+ */
+ public static TestSetup connectionDSDecorator(Test test)
+ {
+ return new ConnectorSetup(test,
+ "org.apache.derbyTesting.junit.DataSourceConnector");
+ }
/**
* Default embedded configuration
@@ -366,7 +381,7 @@
this.jdbcClient = JDBCClient.getDefaultEmbedded();
url = createJDBCUrlWithDatabaseName(dbName);
- initConnector();
+ initConnector(null);
}
@@ -384,7 +399,7 @@
this.hostName = hostName;
this.url = createJDBCUrlWithDatabaseName(dbName);
- initConnector();
+ initConnector(copy.connector);
}
@@ -408,7 +423,7 @@
this.hostName = copy.hostName;
this.url = copy.url;
- initConnector();
+ initConnector(copy.connector);
}
/**
* Obtain a new configuration identical to the passed in
@@ -429,7 +444,7 @@
this.hostName = copy.hostName;
this.url = createJDBCUrlWithDatabaseName(dbName);
- initConnector();
+ initConnector(copy.connector);
}
/**
@@ -469,7 +484,7 @@
jdbcClient = JDBCClient.getDefaultEmbedded();
}
url = createJDBCUrlWithDatabaseName(dbName);
- initConnector();
+ initConnector(null);
}
/**
@@ -515,9 +530,21 @@
* DataSource implementation for JSR 169.
*
*/
- private void initConnector()
+ private void initConnector(Connector oldConnector)
{
- if (JDBC.vmSupportsJDBC2())
+ if (oldConnector != null)
+ {
+ // Use the same type of connector as the
+ // configuration we are copying from.
+
+ try {
+ connector = (Connector) Class.forName(
+ oldConnector.getClass().getName()).newInstance();
+ } catch (Exception e) {
+ Assert.fail(e.getMessage());
+ }
+ }
+ else if (JDBC.vmSupportsJDBC2())
{
try {
connector = (Connector) Class.forName(