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);