diff --git a/jooby-ebean/src/test/java/org/jooby/ebean/EbeanbyTest.java b/jooby-ebean/src/test/java/org/jooby/ebean/EbeanbyTest.java index b2852f9d0f..15e65a9455 100644 --- a/jooby-ebean/src/test/java/org/jooby/ebean/EbeanbyTest.java +++ b/jooby-ebean/src/test/java/org/jooby/ebean/EbeanbyTest.java @@ -18,9 +18,6 @@ import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import io.ebean.EbeanServer; -import io.ebean.config.ContainerConfig; -import io.ebean.config.ServerConfig; import com.google.common.collect.Sets; import com.google.inject.Binder; import com.google.inject.Key; @@ -33,6 +30,9 @@ import com.zaxxer.hikari.HikariConfig; import com.zaxxer.hikari.HikariDataSource; +import io.ebean.EbeanServer; +import io.ebean.config.ContainerConfig; +import io.ebean.config.ServerConfig; import javaslang.control.Try.CheckedRunnable; @RunWith(PowerMockRunner.class) @@ -275,8 +275,10 @@ private Block props(final String dataSourceClassName, final String url, final St .setProperty("dataSource.url", url)) .andReturn(null); - expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName); - if (!hasDataSourceClassName) { + if (hasDataSourceClassName) { + expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName); + } else { + expect(properties.getProperty("dataSourceClassName")).andReturn(null); expect(properties.getProperty("dataSource.dataSourceClassName")) .andReturn(dataSourceClassName); expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null); diff --git a/jooby-hbm/src/test/java/org/jooby/hbm/HbmTest.java b/jooby-hbm/src/test/java/org/jooby/hbm/HbmTest.java index 94586bb330..06c9b29664 100644 --- a/jooby-hbm/src/test/java/org/jooby/hbm/HbmTest.java +++ b/jooby-hbm/src/test/java/org/jooby/hbm/HbmTest.java @@ -949,8 +949,10 @@ private Block props(final String dataSourceClassName, final String url, final St .setProperty("dataSource.url", url)) .andReturn(null); - expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName); - if (!hasDataSourceClassName) { + if (hasDataSourceClassName) { + expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName); + } else { + expect(properties.getProperty("dataSourceClassName")).andReturn(null); expect(properties.getProperty("dataSource.dataSourceClassName")) .andReturn(dataSourceClassName); expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null); diff --git a/jooby-hbm4/src/test/java/org/jooby/hbm/HbmTest.java b/jooby-hbm4/src/test/java/org/jooby/hbm/HbmTest.java index bb95cf5657..e707a15e5c 100644 --- a/jooby-hbm4/src/test/java/org/jooby/hbm/HbmTest.java +++ b/jooby-hbm4/src/test/java/org/jooby/hbm/HbmTest.java @@ -302,8 +302,10 @@ private Block props(final String dataSourceClassName, final String url, final St .setProperty("dataSource.url", url)) .andReturn(null); - expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName); - if (!hasDataSourceClassName) { + if (hasDataSourceClassName) { + expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName); + } else { + expect(properties.getProperty("dataSourceClassName")).andReturn(null); expect(properties.getProperty("dataSource.dataSourceClassName")) .andReturn(dataSourceClassName); expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null); diff --git a/jooby-jdbc/src/main/java/org/jooby/jdbc/Jdbc.java b/jooby-jdbc/src/main/java/org/jooby/jdbc/Jdbc.java index 7e75463abc..c16f5701eb 100644 --- a/jooby-jdbc/src/main/java/org/jooby/jdbc/Jdbc.java +++ b/jooby-jdbc/src/main/java/org/jooby/jdbc/Jdbc.java @@ -40,6 +40,7 @@ import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; +import com.google.common.base.Strings; import com.google.common.base.Throwables; import com.google.inject.Binder; import com.typesafe.config.Config; @@ -437,9 +438,15 @@ private HikariConfig hikariConfig(final String url, final String key, final Stri $hikari.entrySet().forEach(entry -> dumper.accept("", entry)); - if (!props.containsKey("dataSourceClassName")) { + String dataSourceClassName = props.getProperty("dataSourceClassName"); + if (Strings.isNullOrEmpty(dataSourceClassName)) { // adjust dataSourceClassName when missing - props.setProperty("dataSourceClassName", props.getProperty("dataSource.dataSourceClassName")); + dataSourceClassName = props.getProperty("dataSource.dataSourceClassName"); + props.setProperty("dataSourceClassName", dataSourceClassName); + } + if (Strings.isNullOrEmpty(dataSourceClassName)) { + // Hack old drivers without a setUrl method (pgsql) + props.put("jdbcUrl", url); } // remove dataSourceClassName under dataSource props.remove("dataSource.dataSourceClassName"); diff --git a/jooby-jdbc/src/main/resources/org/jooby/jdbc/jdbc.conf b/jooby-jdbc/src/main/resources/org/jooby/jdbc/jdbc.conf index d7324ddca1..a8c3371044 100644 --- a/jooby-jdbc/src/main/resources/org/jooby/jdbc/jdbc.conf +++ b/jooby-jdbc/src/main/resources/org/jooby/jdbc/jdbc.conf @@ -90,7 +90,9 @@ databases { # url => jdbc:pgsql://[:]/ ############################################################################################### pgsql { - dataSourceClassName = com.impossibl.postgres.jdbc.PGDataSource + # empty bc dataSource.setUrl missing + # dataSourceClassName = com.impossibl.postgres.jdbc.PGDataSource + dataSourceClassName = "" } ############################################################################################### @@ -98,7 +100,9 @@ databases { # url => jdbc:postgresql://host:port/database ############################################################################################### postgresql { - dataSourceClassName = org.postgresql.ds.PGSimpleDataSource + # empty bc dataSource.setUrl missing + # dataSourceClassName = org.postgresql.ds.PGSimpleDataSource + dataSourceClassName = "" } ############################################################################################### diff --git a/jooby-jdbc/src/test/java/org/jooby/jdbc/JdbcTest.java b/jooby-jdbc/src/test/java/org/jooby/jdbc/JdbcTest.java index ead1a4a63d..b9c79aedb1 100644 --- a/jooby-jdbc/src/test/java/org/jooby/jdbc/JdbcTest.java +++ b/jooby-jdbc/src/test/java/org/jooby/jdbc/JdbcTest.java @@ -457,15 +457,20 @@ public void oracle() throws Exception { @Test public void pgsql() throws Exception { Config config = ConfigFactory.parseResources(getClass(), "jdbc.conf"); + String url = "jdbc:pgsql://server/database"; Config dbconf = config.withValue("db", - ConfigValueFactory.fromAnyRef("jdbc:pgsql://server/database")); + ConfigValueFactory.fromAnyRef(url)); new MockUnit(Env.class, Config.class, Binder.class) - .expect(props("com.impossibl.postgres.jdbc.PGDataSource", "jdbc:pgsql://server/database", + .expect(props("", "jdbc:pgsql://server/database", "pgsql.database", null, "", false)) .expect(hikariConfig()) .expect(hikariDataSource()) .expect(serviceKey("database")) + .expect(unit -> { + Properties props = unit.get(Properties.class); + expect(props.put("jdbcUrl", url)).andReturn(null); + }) .expect(onStop) .run(unit -> { new Jdbc().configure(unit.get(Env.class), dbconf, unit.get(Binder.class)); @@ -475,15 +480,20 @@ public void pgsql() throws Exception { @Test public void postgresql() throws Exception { Config config = ConfigFactory.parseResources(getClass(), "jdbc.conf"); + String url = "jdbc:postgresql://server/database"; Config dbconf = config.withValue("db", - ConfigValueFactory.fromAnyRef("jdbc:postgresql://server/database")); + ConfigValueFactory.fromAnyRef(url)); new MockUnit(Env.class, Config.class, Binder.class) - .expect(props("org.postgresql.ds.PGSimpleDataSource", "jdbc:postgresql://server/database", + .expect(props("", "jdbc:postgresql://server/database", "postgresql.database", null, "", false)) .expect(hikariConfig()) .expect(hikariDataSource()) .expect(serviceKey("database")) + .expect(unit -> { + Properties props = unit.get(Properties.class); + expect(props.put("jdbcUrl", url)).andReturn(null); + }) .expect(onStop) .run(unit -> { new Jdbc().configure(unit.get(Env.class), dbconf, unit.get(Binder.class)); @@ -628,8 +638,10 @@ private Block props(final String dataSourceClassName, final String url, final St .andReturn(null); } - expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName); - if (!hasDataSourceClassName) { + if (hasDataSourceClassName) { + expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName); + } else { + expect(properties.getProperty("dataSourceClassName")).andReturn(null); expect(properties.getProperty("dataSource.dataSourceClassName")) .andReturn(dataSourceClassName); expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null); diff --git a/jooby-jooq/src/test/java/org/jooby/jooq/jOOQTest.java b/jooby-jooq/src/test/java/org/jooby/jooq/jOOQTest.java index 2ab5b356e2..655c6ef120 100644 --- a/jooby-jooq/src/test/java/org/jooby/jooq/jOOQTest.java +++ b/jooby-jooq/src/test/java/org/jooby/jooq/jOOQTest.java @@ -218,8 +218,10 @@ private Block props(final String dataSourceClassName, final String url, final St .setProperty("dataSource.url", url)) .andReturn(null); - expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName); - if (!hasDataSourceClassName) { + if (hasDataSourceClassName) { + expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName); + } else { + expect(properties.getProperty("dataSourceClassName")).andReturn(null); expect(properties.getProperty("dataSource.dataSourceClassName")) .andReturn(dataSourceClassName); expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null); diff --git a/jooby-querydsl/src/test/java/org/jooby/querydsl/QueryDSLTest.java b/jooby-querydsl/src/test/java/org/jooby/querydsl/QueryDSLTest.java index 9d4fb4cb69..07cacafbfe 100644 --- a/jooby-querydsl/src/test/java/org/jooby/querydsl/QueryDSLTest.java +++ b/jooby-querydsl/src/test/java/org/jooby/querydsl/QueryDSLTest.java @@ -361,8 +361,10 @@ private Block props(final String dataSourceClassName, final String url, final St .setProperty("dataSource.url", url)) .andReturn(null); - expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName); - if (!hasDataSourceClassName) { + if (hasDataSourceClassName) { + expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName); + } else { + expect(properties.getProperty("dataSourceClassName")).andReturn(null); expect(properties.getProperty("dataSource.dataSourceClassName")) .andReturn(dataSourceClassName); expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null); diff --git a/jooby-requery/src/main/java/org/jooby/requery/Requery.java b/jooby-requery/src/main/java/org/jooby/requery/Requery.java index d3866f75dc..818a1633b5 100644 --- a/jooby-requery/src/main/java/org/jooby/requery/Requery.java +++ b/jooby-requery/src/main/java/org/jooby/requery/Requery.java @@ -420,7 +420,7 @@ public void configure(final Env env, final Config conf, final Binder binder) { env.onStart(registry -> { DataSource ds = Optional.ofNullable(this.dataSource) .map(Provider::get) - .orElseGet(() -> registry.require("db", DataSource.class)); + .orElseGet(() -> registry.require(DataSource.class)); schema(conf, schema, schema -> new SchemaModifier(ds, model).createTables(schema)); ConfigurationBuilder builder = new ConfigurationBuilder(ds, model); diff --git a/jooby-requery/src/test/java/org/jooby/requery/RequeryTest.java b/jooby-requery/src/test/java/org/jooby/requery/RequeryTest.java index d80a4a5c76..0162afeeb8 100644 --- a/jooby-requery/src/test/java/org/jooby/requery/RequeryTest.java +++ b/jooby-requery/src/test/java/org/jooby/requery/RequeryTest.java @@ -587,7 +587,7 @@ private Block dataSource(final Key dbkey) { DataSource ds = unit.get(DataSource.class); Registry registry = unit.get(Registry.class); - expect(registry.require("db", DataSource.class)).andReturn(ds); + expect(registry.require(DataSource.class)).andReturn(ds); }; } } diff --git a/jooby-rxjava-jdbc/src/test/java/org/jooby/rx/RxJdbcTest.java b/jooby-rxjava-jdbc/src/test/java/org/jooby/rx/RxJdbcTest.java index b5a75243cc..95869c5289 100644 --- a/jooby-rxjava-jdbc/src/test/java/org/jooby/rx/RxJdbcTest.java +++ b/jooby-rxjava-jdbc/src/test/java/org/jooby/rx/RxJdbcTest.java @@ -177,8 +177,10 @@ private Block props(final String dataSourceClassName, final String url, final St .setProperty("dataSource.url", url)) .andReturn(null); - expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName); - if (!hasDataSourceClassName) { + if (hasDataSourceClassName) { + expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName); + } else { + expect(properties.getProperty("dataSourceClassName")).andReturn(null); expect(properties.getProperty("dataSource.dataSourceClassName")) .andReturn(dataSourceClassName); expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null);