Skip to content

Commit a291778

Browse files
committed
Service Load a (default) NewConnectionInitializer
1 parent 7292498 commit a291778

File tree

5 files changed

+26
-0
lines changed

5 files changed

+26
-0
lines changed

ebean-datasource-api/src/main/java/io/ebean/datasource/DSManager.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,25 @@
88
final class DSManager {
99

1010
private static final DataSourceFactory factory = init();
11+
private static final NewConnectionInitializer defaultInitializer = initConnectionInitializer();
1112

1213
private static DataSourceFactory init() {
1314
return ServiceLoader.load(DataSourceFactory.class)
1415
.findFirst()
1516
.orElseThrow(() -> new IllegalStateException("No DataSourceFactory, add ebean-datasource to the classpath."));
1617
}
1718

19+
private static NewConnectionInitializer initConnectionInitializer() {
20+
return ServiceLoader.load(NewConnectionInitializer.class)
21+
.findFirst()
22+
.orElse(null);
23+
}
24+
1825
static DataSourceFactory get() {
1926
return factory;
2027
}
28+
29+
static NewConnectionInitializer defaultInitializer() {
30+
return defaultInitializer;
31+
}
2132
}

ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceBuilder.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,11 @@ default DataSourceBuilder listener(DataSourcePoolListener listener) {
384384
*/
385385
DataSourceBuilder connectionInitializer(NewConnectionInitializer connectionListener);
386386

387+
/**
388+
* Set the default connection initializer to use if not already set.
389+
*/
390+
DataSourceBuilder defaultConnectionInitializer(NewConnectionInitializer defaultInitializer);
391+
387392
/**
388393
* Set a SQL statement used to test the database is accessible.
389394
* <p>

ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceConfig.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,14 @@ public DataSourceBuilder connectionInitializer(NewConnectionInitializer connecti
489489
return this;
490490
}
491491

492+
@Override
493+
public DataSourceBuilder defaultConnectionInitializer(NewConnectionInitializer defaultInitializer) {
494+
if (connectionInitializer == null && defaultInitializer != null) {
495+
connectionInitializer = defaultInitializer;
496+
}
497+
return this;
498+
}
499+
492500
@Override
493501
public String getHeartbeatSql() {
494502
return heartbeatSql;

ebean-datasource-api/src/main/java/io/ebean/datasource/DataSourceFactory.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public interface DataSourceFactory {
2222
* Create the DataSourcePool given the name and configuration.
2323
*/
2424
static DataSourcePool create(String name, DataSourceConfig config) {
25+
config.defaultConnectionInitializer(DSManager.defaultInitializer());
2526
return DSManager.get().createPool(name, config);
2627
}
2728

ebean-datasource-api/src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
requires transitive io.avaje.applog;
55

66
uses io.ebean.datasource.DataSourceFactory;
7+
uses io.ebean.datasource.NewConnectionInitializer;
78

89
exports io.ebean.datasource;
910
}

0 commit comments

Comments
 (0)