package io.ebean; import io.ebean.EbeanServer; import io.ebean.EbeanServerFactory; import io.ebean.config.ServerConfig; import io.ebean.event.ServerConfigStartup; import org.tests.model.basic.UTDetail; import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; public class EbeanServerFactory_ServerConfigStart_Test { @Test public void test() throws InterruptedException { System.setProperty("ebean.ignoreExtraDdl", "true"); ServerConfig config = new ServerConfig(); config.setName("h2"); config.loadFromProperties(); config.setName("h2other"); config.setH2ProductionMode(true); config.setDdlGenerate(false); config.setDdlRun(false); config.setDefaultServer(false); config.setRegister(false); config.addClass(UTDetail.class); config.addClass(OnStartupViaClass.class); // act - register an instance OnStartup onStartup = new OnStartup(); config.addServerConfigStartup(onStartup); EbeanServer ebeanServer = EbeanServerFactory.create(config); assertThat(onStartup.calledWithConfig).isSameAs(config); assertThat(OnStartupViaClass.calledWithConfig).isSameAs(config); assertThat(ebeanServer).isNotNull(); // test server shutdown and restart using the same ServerConfig ebeanServer.shutdown(true, false); EbeanServer restartedServer = EbeanServerFactory.create(config); restartedServer.shutdown(true, false); } public static class OnStartup implements ServerConfigStartup { ServerConfig calledWithConfig; @Override public void onStart(ServerConfig serverConfig) { calledWithConfig = serverConfig; } } public static class OnStartupViaClass implements ServerConfigStartup { static ServerConfig calledWithConfig; @Override public void onStart(ServerConfig serverConfig) { calledWithConfig = serverConfig; } } }