Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,25 @@
final class DSManager {

private static final DataSourceFactory factory = init();
private static final NewConnectionInitializer defaultInitializer = initConnectionInitializer();

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

private static NewConnectionInitializer initConnectionInitializer() {
return ServiceLoader.load(NewConnectionInitializer.class)
.findFirst()
.orElse(null);
}

static DataSourceFactory get() {
return factory;
}

static NewConnectionInitializer defaultInitializer() {
return defaultInitializer;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,11 @@ default DataSourceBuilder listener(DataSourcePoolListener listener) {
*/
DataSourceBuilder connectionInitializer(NewConnectionInitializer connectionListener);

/**
* Set the default connection initializer to use if not already set.
*/
DataSourceBuilder defaultConnectionInitializer(NewConnectionInitializer defaultInitializer);

/**
* Set a SQL statement used to test the database is accessible.
* <p>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -489,6 +489,14 @@ public DataSourceBuilder connectionInitializer(NewConnectionInitializer connecti
return this;
}

@Override
public DataSourceBuilder defaultConnectionInitializer(NewConnectionInitializer defaultInitializer) {
if (connectionInitializer == null && defaultInitializer != null) {
connectionInitializer = defaultInitializer;
}
return this;
}

@Override
public String getHeartbeatSql() {
return heartbeatSql;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ public interface DataSourceFactory {
* Create the DataSourcePool given the name and configuration.
*/
static DataSourcePool create(String name, DataSourceConfig config) {
config.defaultConnectionInitializer(DSManager.defaultInitializer());
return DSManager.get().createPool(name, config);
}

Expand Down
1 change: 1 addition & 0 deletions ebean-datasource-api/src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
requires transitive io.avaje.applog;

uses io.ebean.datasource.DataSourceFactory;
uses io.ebean.datasource.NewConnectionInitializer;

exports io.ebean.datasource;
}
Loading