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 kr...@apache.org on 2008/02/29 10:45:28 UTC

svn commit: r632274 - in /db/derby/code/branches/10.3/java: client/org/apache/derby/client/ClientDataSourceFactory.java testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceReferenceTest.java

Author: kristwaa
Date: Fri Feb 29 01:45:23 2008
New Revision: 632274

URL: http://svn.apache.org/viewvc?rev=632274&view=rev
Log:
DERBY-2559: recreating a datasource using javax.naming.Reference from a ClientDataSource40 fails.
Merged fixes from trunk (10.4): r617492 and r628647.

Modified:
    db/derby/code/branches/10.3/java/client/org/apache/derby/client/ClientDataSourceFactory.java
    db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceReferenceTest.java

Modified: db/derby/code/branches/10.3/java/client/org/apache/derby/client/ClientDataSourceFactory.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/client/org/apache/derby/client/ClientDataSourceFactory.java?rev=632274&r1=632273&r2=632274&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/client/org/apache/derby/client/ClientDataSourceFactory.java (original)
+++ db/derby/code/branches/10.3/java/client/org/apache/derby/client/ClientDataSourceFactory.java Fri Feb 29 01:45:23 2008
@@ -26,11 +26,6 @@
 
 import javax.naming.RefAddr;
 import javax.naming.Reference;
-import org.apache.derby.jdbc.ClientBaseDataSource;
-
-import org.apache.derby.jdbc.ClientConnectionPoolDataSource;
-import org.apache.derby.jdbc.ClientDataSource;
-import org.apache.derby.jdbc.ClientXADataSource;
 
 /**
  * The data source factory currrently for ClientDataSource only. This factory will support XA and pooling-enabled data
@@ -78,23 +73,22 @@
                                     javax.naming.Name name,
                                     javax.naming.Context nameContext,
                                     java.util.Hashtable environment) throws java.lang.Exception {
-        javax.naming.Reference ref = (javax.naming.Reference) refObj;
-
-        // Create the proper data source object shell.
-        ClientBaseDataSource ds = null;
-        if (ref.getClassName().equals(ClientDataSource.className__)) {
-            ds = new ClientDataSource();
-        } else if (ref.getClassName().equals(ClientXADataSource.className__)) {
-            ds = new ClientXADataSource();
-        } else if (ref.getClassName().equals(ClientConnectionPoolDataSource.className__)) {
-            ds = new ClientConnectionPoolDataSource();
-        } else {
-            return null;
+        Object ds = null;
+        if (refObj instanceof javax.naming.Reference) {
+            javax.naming.Reference ref = (javax.naming.Reference) refObj;
+
+            // See if this object belongs to Derby.
+            String className = ref.getClassName();
+            if (className != null &&
+                    className.startsWith("org.apache.derby.jdbc.Client")) {
+                // Create the proper data source object shell.
+                ds = Class.forName(className).newInstance();
+
+                // Fill in the data source object shell with values from the
+                // jndi reference.
+                ClientDataSourceFactory.setBeanProperties(ds, ref);
+            }
         }
-
-        // Fill in the data source object shell with values from the jndi reference.
-        ClientDataSourceFactory.setBeanProperties(ds, ref);
-
         return ds;
     }
     

Modified: db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceReferenceTest.java
URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceReferenceTest.java?rev=632274&r1=632273&r2=632274&view=diff
==============================================================================
--- db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceReferenceTest.java (original)
+++ db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/jdbcapi/DataSourceReferenceTest.java Fri Feb 29 01:45:23 2008
@@ -189,11 +189,6 @@
         Object recreatedDS = 
             factory.getObjectInstance(dsAsReference, null, null, null);
         
-        // DERBY-2559 - with jdk16, this recreatedDS will be null.
-        // bailing out
-        if (JDBC.vmSupportsJDBC4())
-            return;
-        
         println(" empty DataSource recreated using Reference as " +
             recreatedDS.getClass().getName());
         // empty DataSource recreated using Reference should not be 
@@ -387,4 +382,4 @@
             }
         }
     }
-}
\ No newline at end of file
+}