/** * Factory method that returns the {@linkplain EmbeddedDatabase embedded database} * instance, which is also a {@link DataSource}. */ public EmbeddedDatabase getDatabase() { if (this.dataSource == null) { initDatabase(); } return new EmbeddedDataSourceProxy(this.dataSource); }
@Override public void configureConnectionProperties(ConnectionProperties properties, String databaseName) { properties.setDriverClass(this.driverClass); properties.setUrl("jdbc:hsqldb:mem:" + databaseName); properties.setUsername("sa"); properties.setPassword(""); }
/** * Add default SQL scripts to execute to populate the database. * <p>The default scripts are {@code "schema.sql"} to create the database * schema and {@code "data.sql"} to populate the database with data. * @return {@code this}, to facilitate method chaining */ public EmbeddedDatabaseBuilder addDefaultScripts() { return addScripts("schema.sql", "data.sql"); }
@Override public void run() { EmbeddedDatabase db = builder// .setType(DERBY)// .ignoreFailedDrops(true)// .addScripts("db-schema-derby-with-drop.sql", "db-test-data.sql").build(); assertDatabaseCreatedAndShutdown(db); } });
@Override public void run() { EmbeddedDatabase db = new EmbeddedDatabaseBuilder()// .addDefaultScripts()// .build(); assertDatabaseCreatedAndShutdown(db); } });
@Override public void run() { EmbeddedDatabase db = builder// .setType(H2)// .addScripts("db-schema.sql", "db-test-data.sql")// .build(); assertDatabaseCreatedAndShutdown(db); } });
@Override public void run() { EmbeddedDatabase db = builder// .addScripts("db-schema.sql", "db-test-data.sql")// .build(); assertDatabaseCreatedAndShutdown(db); } });
@Override public void run() { EmbeddedDatabase db = builder// .addScripts("db-schema-block-comments.sql", "db-test-data.sql")// .setBlockCommentStartDelimiter("{*")// .setBlockCommentEndDelimiter("*}")// .build(); assertDatabaseCreatedAndShutdown(db); } });
@Override public void run() { EmbeddedDatabase db = builder// .addScripts("db-schema-custom-comments.sql", "db-test-data.sql")// .setCommentPrefix("~")// .build(); assertDatabaseCreatedAndShutdown(db); } });
/** * Add multiple SQL scripts to execute to initialize or populate the database. * @param scripts the scripts to execute * @return {@code this}, to facilitate method chaining * @since 4.0.3 */ public EmbeddedDatabaseBuilder addScripts(String... scripts) { for (String script : scripts) { addScript(script); } return this; }
@Test public void testGetDataSource() { StubDatabasePopulator populator = new StubDatabasePopulator(); factory.setDatabasePopulator(populator); EmbeddedDatabase db = factory.getDatabase(); assertTrue(populator.populateCalled); db.shutdown(); }
private void assertDatabaseCreatedAndShutdown(EmbeddedDatabase db) { assertDatabaseCreated(db); db.shutdown(); }
/** * Build the embedded database. * @return the embedded database */ public EmbeddedDatabase build() { return this.databaseFactory.getDatabase(); }
/** * Set the type of embedded database. * <p>Defaults to HSQL if not called. * @param databaseType the type of embedded database to build * @return {@code this}, to facilitate method chaining */ public EmbeddedDatabaseBuilder setType(EmbeddedDatabaseType databaseType) { this.databaseFactory.setDatabaseType(databaseType); return this; }
/** * Set the type of embedded database to use. * <p>Call this when you wish to configure one of the pre-supported types. * <p>Defaults to HSQL. * @param type the database type */ public void setDatabaseType(EmbeddedDatabaseType type) { this.databaseConfigurer = EmbeddedDatabaseConfigurerFactory.getConfigurer(type); }
@Override public void shutdown() { shutdownDatabase(); } }
@Override public void afterPropertiesSet() { initDatabase(); }
/** * Set the name of the embedded database. * <p>Defaults to {@link EmbeddedDatabaseFactory#DEFAULT_DATABASE_NAME} if * not called. * <p>Will be overridden if the {@code generateUniqueName} flag has been * set to {@code true}. * @param databaseName the name of the embedded database to build * @return {@code this}, to facilitate method chaining * @see #generateUniqueName */ public EmbeddedDatabaseBuilder setName(String databaseName) { this.databaseFactory.setDatabaseName(databaseName); return this; }
@Override public void run() { EmbeddedDatabase db = builder// .addScripts("db-schema-comments.sql", "db-test-data.sql")// .build(); assertDatabaseCreatedAndShutdown(db); } });