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
25 changes: 23 additions & 2 deletions play-ebean/src/main/java/play/db/ebean/EbeanDynamicEvolutions.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,13 @@
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.function.Supplier;
import play.Environment;
import play.api.db.evolutions.DynamicEvolutions;
import play.api.db.evolutions.Evolutions$;
import play.api.db.evolutions.EvolutionsConfig;
import play.inject.ApplicationLifecycle;
import play.inject.Injector;

/** A Play module that automatically manages Ebean configuration. */
@Singleton
Expand All @@ -29,16 +31,34 @@ public class EbeanDynamicEvolutions extends DynamicEvolutions {
private final EbeanConfig config;
private final Environment environment;

private final EvolutionsConfig evolutionsConfig;
private final Supplier<EvolutionsConfig> evolutionsConfig;

private final Map<String, Database> databases = new HashMap<>();

@Inject
public EbeanDynamicEvolutions(
EbeanConfig config,
Environment environment,
ApplicationLifecycle lifecycle,
EvolutionsConfig evolutionsConfig) {
this(config, environment, lifecycle, () -> evolutionsConfig);
}

@Inject
public EbeanDynamicEvolutions(
EbeanConfig config,
Environment environment,
ApplicationLifecycle lifecycle,
Injector injector) {
// Only needed (and bound) when Play's EvolutionsModule, which is optional, generates the
// scripts
this(config, environment, lifecycle, () -> injector.instanceOf(EvolutionsConfig.class));
}

private EbeanDynamicEvolutions(
EbeanConfig config,
Environment environment,
ApplicationLifecycle lifecycle,
Supplier<EvolutionsConfig> evolutionsConfig) {
this.config = config;
this.environment = environment;
this.evolutionsConfig = evolutionsConfig;
Expand All @@ -61,6 +81,7 @@ public void create() {
if (environment.isProd()) {
return;
}
EvolutionsConfig evolutionsConfig = this.evolutionsConfig.get();
config
.serverConfigs()
.forEach(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/*
* Copyright (C) from 2022 The Play Framework Contributors <https://github.com/playframework>, 2011-2021 Lightbend Inc. <https://www.lightbend.com>
*/

package play.db.ebean;

import static org.junit.Assert.assertEquals;

import io.ebean.DB;
import java.util.List;
import java.util.Map;
import org.junit.Test;
import play.Application;
import play.api.db.evolutions.EvolutionsModule;
import play.inject.guice.GuiceApplicationBuilder;
import play.test.Helpers;

public class EbeanWithoutEvolutionsModuleTest {

@Test
public void startsWithoutPlaysEvolutionsModule() {
Application app =
new GuiceApplicationBuilder()
.disable(EvolutionsModule.class)
.configure(
Map.of(
"db.default.driver", "org.h2.Driver",
"db.default.url", "jdbc:h2:mem:play-ebean-without-evolutions",
"ebean.default", List.of("play.db.ebean.models.first.*")))
.build();
Helpers.running(app, () -> assertEquals("default", DB.getDefault().name()));
}
}