package bo.gotthardt.test; import bo.gotthardt.ebean.EbeanEntities; import com.avaje.ebean.EbeanServer; import com.avaje.ebean.EbeanServerFactory; import com.avaje.ebean.config.DataSourceConfig; import com.avaje.ebean.config.ServerConfig; import com.avaje.ebeaninternal.api.SpiEbeanServer; import com.avaje.ebeaninternal.server.ddl.DdlGenerator; import lombok.experimental.Delegate; /** * In-memory EbeanServer for use in unit/integration tests. * * @author Bo Gotthardt */ public class InMemoryEbeanServer implements EbeanServer { @Delegate(types=EbeanServer.class) private final EbeanServer server; private final DdlGenerator ddl; public InMemoryEbeanServer() { // Create in-memory database configuration. DataSourceConfig dbConfig = new DataSourceConfig(); dbConfig.setUsername("sa"); dbConfig.setPassword(""); dbConfig.setUrl("jdbc:h2:mem:tests2;DB_CLOSE_DELAY=-1"); dbConfig.setDriver("org.h2.Driver"); ServerConfig config = new ServerConfig(); config.setName("h2"); config.setDataSourceConfig(dbConfig); config.setDefaultServer(true); for (Class<?> entity : EbeanEntities.getEntities()) { config.addClass(entity); } config.setDdlGenerate(true); config.setDdlRun(true); server = EbeanServerFactory.create(config); ddl = ((SpiEbeanServer) server).getDdlGenerator(); } public void clear() { ddl.runScript(false, ddl.generateDropDdl()); ddl.runScript(false, ddl.generateCreateDdl()); } }