Skip to content

Commit

Permalink
Replaced the ConnectionPool API by javax.sql.DataSource.
Browse files Browse the repository at this point in the history
  • Loading branch information
nmihajlovski committed Mar 30, 2017
1 parent e710dcc commit ddf02b0
Show file tree
Hide file tree
Showing 9 changed files with 105 additions and 227 deletions.
6 changes: 2 additions & 4 deletions rapidoid-commons/src/main/resources/rapidoid-classes.txt
Expand Up @@ -528,14 +528,12 @@ org.rapidoid.io.watch.Watch
org.rapidoid.io.watch.WatcherThread
org.rapidoid.io.watch.WatchingRefresherThread
org.rapidoid.io.watch.WatchModule
org.rapidoid.jdbc.C3P0ConnectionPool
org.rapidoid.jdbc.ConnectionPool
org.rapidoid.jdbc.HikariConnectionPool
org.rapidoid.jdbc.C3P0Factory
org.rapidoid.jdbc.HikariFactory
org.rapidoid.jdbc.JDBC
org.rapidoid.jdbc.JdbcClient
org.rapidoid.jdbc.JdbcData
org.rapidoid.jdbc.JdbcUtil
org.rapidoid.jdbc.NoConnectionPool
org.rapidoid.jdbc.ReadWriteMode
org.rapidoid.jdbc.SQLModule
org.rapidoid.job.CallbackExecutorJob
Expand Down
Expand Up @@ -40,8 +40,8 @@ public void testJDBCPoolC3P0() {

JDBC.h2("test1");

C3P0ConnectionPool pool = (C3P0ConnectionPool) JDBC.api().init().pool();
ComboPooledDataSource c3p0 = pool.pool();
JdbcClient jdbc = JDBC.api().init();
ComboPooledDataSource c3p0 = (ComboPooledDataSource) jdbc.dataSource();

// validate default config
eq(c3p0.getMinPoolSize(), 5);
Expand Down Expand Up @@ -73,8 +73,7 @@ public void testJDBCWithTextConfig() {
JdbcClient jdbc = JDBC.api();
eq(jdbc.driver(), "org.h2.Driver");

C3P0ConnectionPool pool = (C3P0ConnectionPool) JDBC.api().init().pool();
ComboPooledDataSource c3p0 = pool.pool();
ComboPooledDataSource c3p0 = (ComboPooledDataSource) jdbc.init().dataSource();

eq(c3p0.getMinPoolSize(), 5);
eq(c3p0.getMaxPoolSize(), 123);
Expand Down
Expand Up @@ -20,9 +20,11 @@
* #L%
*/

import com.zaxxer.hikari.HikariDataSource;
import org.junit.Test;
import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.config.Conf;
import org.rapidoid.http.IsolatedIntegrationTest;
import org.rapidoid.u.U;
import org.rapidoid.util.Msc;
Expand All @@ -36,9 +38,11 @@ public class JDBCPoolHikariTest extends IsolatedIntegrationTest {
@Test(timeout = 30000)
public void testHikariPool() {

Conf.HIKARI.set("maximumPoolSize", 234);

JdbcClient jdbc = JDBC.api();
jdbc.h2("hikari-test");
jdbc.pool(new HikariConnectionPool(jdbc));
jdbc.dataSource(HikariFactory.createDataSourceFor(jdbc));

jdbc.execute("create table abc (id int, name varchar)");
jdbc.execute("insert into abc values (?, ?)", 123, "xyz");
Expand All @@ -51,7 +55,9 @@ record = Msc.lowercase(record);
eq(record, expected);
});

isTrue(jdbc.pool() instanceof HikariConnectionPool);
HikariDataSource hikari = (HikariDataSource) jdbc.dataSource();

eq(hikari.getMaximumPoolSize(), 234);
}

}

This file was deleted.

@@ -1,10 +1,14 @@
package org.rapidoid.jdbc;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.rapidoid.RapidoidThing;
import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.config.Conf;
import org.rapidoid.u.U;

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import java.beans.PropertyVetoException;

/*
* #%L
Expand All @@ -28,12 +32,24 @@

@Authors("Nikolche Mihajlovski")
@Since("4.1.0")
public interface ConnectionPool {
public class C3P0Factory extends RapidoidThing {

Connection getConnection(String jdbcUrl) throws SQLException;
public static DataSource createDataSourceFor(JdbcClient jdbc) {
ComboPooledDataSource pool = new ComboPooledDataSource();

Connection getConnection(String jdbcUrl, String username, String password) throws SQLException;
pool.setJdbcUrl(jdbc.url());
pool.setUser(jdbc.username());
pool.setPassword(jdbc.password());

void releaseConnection(Connection connection) throws SQLException;
try {
pool.setDriverClass(jdbc.driver());
} catch (PropertyVetoException e) {
throw U.rte("Cannot load JDBC driver!", e);
}

Conf.C3P0.applyTo(pool);

return pool;
}

}

This file was deleted.

@@ -1,11 +1,13 @@
package org.rapidoid.jdbc;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;
import org.rapidoid.RapidoidThing;
import org.rapidoid.annotation.Authors;
import org.rapidoid.annotation.Since;
import org.rapidoid.config.Conf;

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;

/*
* #%L
Expand All @@ -28,22 +30,20 @@
*/

@Authors("Nikolche Mihajlovski")
@Since("4.1.0")
public class NoConnectionPool extends RapidoidThing implements ConnectionPool {
@Since("5.3.4")
public class HikariFactory extends RapidoidThing {

@Override
public Connection getConnection(String jdbcUrl) throws SQLException {
return null;
}
public static DataSource createDataSourceFor(JdbcClient jdbc) {
HikariConfig config = new HikariConfig();

@Override
public Connection getConnection(String jdbcUrl, String username, String password) throws SQLException {
return null;
}
config.setJdbcUrl(jdbc.url());
config.setUsername(jdbc.username());
config.setPassword(jdbc.password());
config.setDriverClassName(jdbc.driver());

Conf.HIKARI.applyTo(config);

@Override
public void releaseConnection(Connection connection) throws SQLException {
connection.close();
return new HikariDataSource(config);
}

}

0 comments on commit ddf02b0

Please sign in to comment.