Skip to content

Commit 5ea380e

Browse files
authored
Merge pull request #687 from jooby-project/658
Unable to use pgsql driver fix #658
2 parents 9ce2299 + ba53c8c commit 5ea380e

11 files changed

Lines changed: 62 additions & 27 deletions

File tree

jooby-ebean/src/test/java/org/jooby/ebean/EbeanbyTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@
1818
import org.powermock.core.classloader.annotations.PrepareForTest;
1919
import org.powermock.modules.junit4.PowerMockRunner;
2020

21-
import io.ebean.EbeanServer;
22-
import io.ebean.config.ContainerConfig;
23-
import io.ebean.config.ServerConfig;
2421
import com.google.common.collect.Sets;
2522
import com.google.inject.Binder;
2623
import com.google.inject.Key;
@@ -33,6 +30,9 @@
3330
import com.zaxxer.hikari.HikariConfig;
3431
import com.zaxxer.hikari.HikariDataSource;
3532

33+
import io.ebean.EbeanServer;
34+
import io.ebean.config.ContainerConfig;
35+
import io.ebean.config.ServerConfig;
3636
import javaslang.control.Try.CheckedRunnable;
3737

3838
@RunWith(PowerMockRunner.class)
@@ -275,8 +275,10 @@ private Block props(final String dataSourceClassName, final String url, final St
275275
.setProperty("dataSource.url", url))
276276
.andReturn(null);
277277

278-
expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName);
279-
if (!hasDataSourceClassName) {
278+
if (hasDataSourceClassName) {
279+
expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName);
280+
} else {
281+
expect(properties.getProperty("dataSourceClassName")).andReturn(null);
280282
expect(properties.getProperty("dataSource.dataSourceClassName"))
281283
.andReturn(dataSourceClassName);
282284
expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null);

jooby-hbm/src/test/java/org/jooby/hbm/HbmTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -949,8 +949,10 @@ private Block props(final String dataSourceClassName, final String url, final St
949949
.setProperty("dataSource.url", url))
950950
.andReturn(null);
951951

952-
expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName);
953-
if (!hasDataSourceClassName) {
952+
if (hasDataSourceClassName) {
953+
expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName);
954+
} else {
955+
expect(properties.getProperty("dataSourceClassName")).andReturn(null);
954956
expect(properties.getProperty("dataSource.dataSourceClassName"))
955957
.andReturn(dataSourceClassName);
956958
expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null);

jooby-hbm4/src/test/java/org/jooby/hbm/HbmTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,8 +302,10 @@ private Block props(final String dataSourceClassName, final String url, final St
302302
.setProperty("dataSource.url", url))
303303
.andReturn(null);
304304

305-
expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName);
306-
if (!hasDataSourceClassName) {
305+
if (hasDataSourceClassName) {
306+
expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName);
307+
} else {
308+
expect(properties.getProperty("dataSourceClassName")).andReturn(null);
307309
expect(properties.getProperty("dataSource.dataSourceClassName"))
308310
.andReturn(dataSourceClassName);
309311
expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null);

jooby-jdbc/src/main/java/org/jooby/jdbc/Jdbc.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040

4141
import com.google.common.base.CharMatcher;
4242
import com.google.common.base.Splitter;
43+
import com.google.common.base.Strings;
4344
import com.google.common.base.Throwables;
4445
import com.google.inject.Binder;
4546
import com.typesafe.config.Config;
@@ -437,9 +438,15 @@ private HikariConfig hikariConfig(final String url, final String key, final Stri
437438

438439
$hikari.entrySet().forEach(entry -> dumper.accept("", entry));
439440

440-
if (!props.containsKey("dataSourceClassName")) {
441+
String dataSourceClassName = props.getProperty("dataSourceClassName");
442+
if (Strings.isNullOrEmpty(dataSourceClassName)) {
441443
// adjust dataSourceClassName when missing
442-
props.setProperty("dataSourceClassName", props.getProperty("dataSource.dataSourceClassName"));
444+
dataSourceClassName = props.getProperty("dataSource.dataSourceClassName");
445+
props.setProperty("dataSourceClassName", dataSourceClassName);
446+
}
447+
if (Strings.isNullOrEmpty(dataSourceClassName)) {
448+
// Hack old drivers without a setUrl method (pgsql)
449+
props.put("jdbcUrl", url);
443450
}
444451
// remove dataSourceClassName under dataSource
445452
props.remove("dataSource.dataSourceClassName");

jooby-jdbc/src/main/resources/org/jooby/jdbc/jdbc.conf

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,15 +90,19 @@ databases {
9090
# url => jdbc:pgsql://<server>[:<port>]/<database>
9191
###############################################################################################
9292
pgsql {
93-
dataSourceClassName = com.impossibl.postgres.jdbc.PGDataSource
93+
# empty bc dataSource.setUrl missing
94+
# dataSourceClassName = com.impossibl.postgres.jdbc.PGDataSource
95+
dataSourceClassName = ""
9496
}
9597

9698
###############################################################################################
9799
# postgresql
98100
# url => jdbc:postgresql://host:port/database
99101
###############################################################################################
100102
postgresql {
101-
dataSourceClassName = org.postgresql.ds.PGSimpleDataSource
103+
# empty bc dataSource.setUrl missing
104+
# dataSourceClassName = org.postgresql.ds.PGSimpleDataSource
105+
dataSourceClassName = ""
102106
}
103107

104108
###############################################################################################

jooby-jdbc/src/test/java/org/jooby/jdbc/JdbcTest.java

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -457,15 +457,20 @@ public void oracle() throws Exception {
457457
@Test
458458
public void pgsql() throws Exception {
459459
Config config = ConfigFactory.parseResources(getClass(), "jdbc.conf");
460+
String url = "jdbc:pgsql://server/database";
460461
Config dbconf = config.withValue("db",
461-
ConfigValueFactory.fromAnyRef("jdbc:pgsql://server/database"));
462+
ConfigValueFactory.fromAnyRef(url));
462463

463464
new MockUnit(Env.class, Config.class, Binder.class)
464-
.expect(props("com.impossibl.postgres.jdbc.PGDataSource", "jdbc:pgsql://server/database",
465+
.expect(props("", "jdbc:pgsql://server/database",
465466
"pgsql.database", null, "", false))
466467
.expect(hikariConfig())
467468
.expect(hikariDataSource())
468469
.expect(serviceKey("database"))
470+
.expect(unit -> {
471+
Properties props = unit.get(Properties.class);
472+
expect(props.put("jdbcUrl", url)).andReturn(null);
473+
})
469474
.expect(onStop)
470475
.run(unit -> {
471476
new Jdbc().configure(unit.get(Env.class), dbconf, unit.get(Binder.class));
@@ -475,15 +480,20 @@ public void pgsql() throws Exception {
475480
@Test
476481
public void postgresql() throws Exception {
477482
Config config = ConfigFactory.parseResources(getClass(), "jdbc.conf");
483+
String url = "jdbc:postgresql://server/database";
478484
Config dbconf = config.withValue("db",
479-
ConfigValueFactory.fromAnyRef("jdbc:postgresql://server/database"));
485+
ConfigValueFactory.fromAnyRef(url));
480486

481487
new MockUnit(Env.class, Config.class, Binder.class)
482-
.expect(props("org.postgresql.ds.PGSimpleDataSource", "jdbc:postgresql://server/database",
488+
.expect(props("", "jdbc:postgresql://server/database",
483489
"postgresql.database", null, "", false))
484490
.expect(hikariConfig())
485491
.expect(hikariDataSource())
486492
.expect(serviceKey("database"))
493+
.expect(unit -> {
494+
Properties props = unit.get(Properties.class);
495+
expect(props.put("jdbcUrl", url)).andReturn(null);
496+
})
487497
.expect(onStop)
488498
.run(unit -> {
489499
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
628638
.andReturn(null);
629639
}
630640

631-
expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName);
632-
if (!hasDataSourceClassName) {
641+
if (hasDataSourceClassName) {
642+
expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName);
643+
} else {
644+
expect(properties.getProperty("dataSourceClassName")).andReturn(null);
633645
expect(properties.getProperty("dataSource.dataSourceClassName"))
634646
.andReturn(dataSourceClassName);
635647
expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null);

jooby-jooq/src/test/java/org/jooby/jooq/jOOQTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,10 @@ private Block props(final String dataSourceClassName, final String url, final St
218218
.setProperty("dataSource.url", url))
219219
.andReturn(null);
220220

221-
expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName);
222-
if (!hasDataSourceClassName) {
221+
if (hasDataSourceClassName) {
222+
expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName);
223+
} else {
224+
expect(properties.getProperty("dataSourceClassName")).andReturn(null);
223225
expect(properties.getProperty("dataSource.dataSourceClassName"))
224226
.andReturn(dataSourceClassName);
225227
expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null);

jooby-querydsl/src/test/java/org/jooby/querydsl/QueryDSLTest.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -361,8 +361,10 @@ private Block props(final String dataSourceClassName, final String url, final St
361361
.setProperty("dataSource.url", url))
362362
.andReturn(null);
363363

364-
expect(properties.containsKey("dataSourceClassName")).andReturn(hasDataSourceClassName);
365-
if (!hasDataSourceClassName) {
364+
if (hasDataSourceClassName) {
365+
expect(properties.getProperty("dataSourceClassName")).andReturn(dataSourceClassName);
366+
} else {
367+
expect(properties.getProperty("dataSourceClassName")).andReturn(null);
366368
expect(properties.getProperty("dataSource.dataSourceClassName"))
367369
.andReturn(dataSourceClassName);
368370
expect(properties.setProperty("dataSourceClassName", dataSourceClassName)).andReturn(null);

jooby-requery/src/main/java/org/jooby/requery/Requery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@ public void configure(final Env env, final Config conf, final Binder binder) {
420420
env.onStart(registry -> {
421421
DataSource ds = Optional.ofNullable(this.dataSource)
422422
.map(Provider::get)
423-
.orElseGet(() -> registry.require("db", DataSource.class));
423+
.orElseGet(() -> registry.require(DataSource.class));
424424
schema(conf, schema, schema -> new SchemaModifier(ds, model).createTables(schema));
425425

426426
ConfigurationBuilder builder = new ConfigurationBuilder(ds, model);

jooby-requery/src/test/java/org/jooby/requery/RequeryTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -587,7 +587,7 @@ private Block dataSource(final Key<DataSource> dbkey) {
587587
DataSource ds = unit.get(DataSource.class);
588588

589589
Registry registry = unit.get(Registry.class);
590-
expect(registry.require("db", DataSource.class)).andReturn(ds);
590+
expect(registry.require(DataSource.class)).andReturn(ds);
591591
};
592592
}
593593
}

0 commit comments

Comments
 (0)