Author: reschke
Date: Mon Sep 14 14:32:03 2015
New Revision: 1702960

URL: http://svn.apache.org/r1702960
Log:
OAK-2986: RDBDataSourceFactory: switch to tomcat datasource implementation 
(switch to reflection and make the pool dependendy test-scoped)

Modified:
    jackrabbit/oak/trunk/oak-core/pom.xml
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java

Modified: jackrabbit/oak/trunk/oak-core/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/pom.xml?rev=1702960&r1=1702959&r2=1702960&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-core/pom.xml Mon Sep 14 14:32:03 2015
@@ -277,13 +277,6 @@
       <optional>true</optional>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.tomcat</groupId>
-      <artifactId>tomcat-jdbc</artifactId>
-      <version>7.0.64</version>
-      <optional>true</optional>
-    </dependency>
-
     <!-- Logging -->
     <dependency>
       <groupId>org.slf4j</groupId>
@@ -351,5 +344,11 @@
       <artifactId>commons-math3</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-jdbc</artifactId>
+      <version>7.0.64</version>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java?rev=1702960&r1=1702959&r2=1702960&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDataSourceFactory.java
 Mon Sep 14 14:32:03 2015
@@ -58,14 +58,24 @@ public class RDBDataSourceFactory {
         }
 
         try {
-            org.apache.tomcat.jdbc.pool.DataSource bds = new 
org.apache.tomcat.jdbc.pool.DataSource();
             LOG.debug("Getting driver for " + url);
             Driver d = DriverManager.getDriver(url);
-            bds.setDriverClassName(d.getClass().getName());
-            bds.setUsername(username);
-            bds.setPassword(passwd);
-            bds.setUrl(url);
-            return bds;
+
+            String classname = "org.apache.tomcat.jdbc.pool.DataSource";
+            try {
+                Class<?> dsclazz = Class.forName(classname);
+                DataSource ds = (DataSource)dsclazz.newInstance();
+                dsclazz.getMethod("setDriverClassName",  
String.class).invoke(ds, d.getClass().getName());
+                dsclazz.getMethod("setUsername",  String.class).invoke(ds, 
username);
+                dsclazz.getMethod("setPassword",  String.class).invoke(ds, 
passwd);
+                dsclazz.getMethod("setUrl",  String.class).invoke(ds, url);
+                return ds;
+            }
+            catch (Exception ex) {
+                String message = "trying to create datasource " + classname;
+                LOG.info(message, ex);
+                throw new DocumentStoreException(message, ex);
+            }
         } catch (SQLException ex) {
             String message = "trying to obtain driver for " + url;
             LOG.info(message, ex);


Reply via email to