parent
15639d39b0
commit
a270c13d6f
|
@ -26,6 +26,7 @@ import javax.sql.DataSource;
|
|||
|
||||
import org.flywaydb.core.Flyway;
|
||||
import org.flywaydb.core.api.MigrationVersion;
|
||||
import org.flywaydb.core.api.callback.FlywayCallback;
|
||||
|
||||
import org.springframework.beans.factory.ObjectProvider;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
|
||||
|
@ -61,6 +62,7 @@ import org.springframework.util.ObjectUtils;
|
|||
* @author Vedran Pavic
|
||||
* @author Stephane Nicoll
|
||||
* @author Jacques-Etienne Beaudet
|
||||
* @author Eddú Meléndez
|
||||
* @since 1.1.0
|
||||
*/
|
||||
@Configuration
|
||||
|
@ -92,15 +94,19 @@ public class FlywayAutoConfiguration {
|
|||
|
||||
private final FlywayMigrationStrategy migrationStrategy;
|
||||
|
||||
private FlywayCallback[] flywayCallbacks;
|
||||
|
||||
public FlywayConfiguration(FlywayProperties properties,
|
||||
ResourceLoader resourceLoader, ObjectProvider<DataSource> dataSource,
|
||||
@FlywayDataSource ObjectProvider<DataSource> flywayDataSource,
|
||||
ObjectProvider<FlywayMigrationStrategy> migrationStrategy) {
|
||||
ObjectProvider<FlywayMigrationStrategy> migrationStrategy,
|
||||
ObjectProvider<FlywayCallback[]> flywayCallbacks) {
|
||||
this.properties = properties;
|
||||
this.resourceLoader = resourceLoader;
|
||||
this.dataSource = dataSource.getIfUnique();
|
||||
this.flywayDataSource = flywayDataSource.getIfAvailable();
|
||||
this.migrationStrategy = migrationStrategy.getIfAvailable();
|
||||
this.flywayCallbacks = flywayCallbacks.getIfAvailable();
|
||||
}
|
||||
|
||||
@PostConstruct
|
||||
|
@ -140,6 +146,9 @@ public class FlywayAutoConfiguration {
|
|||
else {
|
||||
flyway.setDataSource(this.dataSource);
|
||||
}
|
||||
if (this.flywayCallbacks != null && this.flywayCallbacks.length > 0) {
|
||||
flyway.setCallbacks(this.flywayCallbacks);
|
||||
}
|
||||
flyway.setLocations(this.properties.getLocations().toArray(new String[0]));
|
||||
return flyway;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ import javax.sql.DataSource;
|
|||
|
||||
import org.flywaydb.core.Flyway;
|
||||
import org.flywaydb.core.api.MigrationVersion;
|
||||
import org.flywaydb.core.api.callback.BaseFlywayCallback;
|
||||
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
|
@ -57,6 +58,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
* @author Phillip Webb
|
||||
* @author Andy Wilkinson
|
||||
* @author Vedran Pavic
|
||||
* @author Eddú Meléndez
|
||||
*/
|
||||
public class FlywayAutoConfigurationTests {
|
||||
|
||||
|
@ -202,6 +204,16 @@ public class FlywayAutoConfigurationTests {
|
|||
assertThat(initializer.getOrder()).isEqualTo(Ordered.HIGHEST_PRECEDENCE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customFlywayCallback() throws Exception {
|
||||
registerAndRefresh(EmbeddedDataSourceConfiguration.class,
|
||||
FlywayAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class,
|
||||
MockOneFlywayCallback.class, MockTwoFlywayCallback.class);
|
||||
assertThat(this.context.getBean(Flyway.class)).isNotNull();
|
||||
this.context.getBean(MockOneFlywayCallback.class).assertCalled();
|
||||
this.context.getBean(MockTwoFlywayCallback.class).assertCalled();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customFlywayWithJpa() throws Exception {
|
||||
registerAndRefresh(CustomFlywayWithJpaConfiguration.class,
|
||||
|
@ -325,4 +337,34 @@ public class FlywayAutoConfigurationTests {
|
|||
|
||||
}
|
||||
|
||||
@Component
|
||||
protected static class MockOneFlywayCallback
|
||||
extends BaseFlywayCallback {
|
||||
|
||||
private boolean called = false;
|
||||
|
||||
public MockOneFlywayCallback() {
|
||||
this.called = true;
|
||||
}
|
||||
|
||||
public void assertCalled() {
|
||||
assertThat(this.called).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
@Component
|
||||
protected static class MockTwoFlywayCallback
|
||||
extends BaseFlywayCallback {
|
||||
|
||||
private boolean called = false;
|
||||
|
||||
public MockTwoFlywayCallback() {
|
||||
this.called = true;
|
||||
}
|
||||
|
||||
public void assertCalled() {
|
||||
assertThat(this.called).isTrue();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -73,7 +73,7 @@
|
|||
<ehcache.version>2.10.3</ehcache.version>
|
||||
<ehcache3.version>3.2.0</ehcache3.version>
|
||||
<embedded-mongo.version>1.50.5</embedded-mongo.version>
|
||||
<flyway.version>3.2.1</flyway.version>
|
||||
<flyway.version>4.0.3</flyway.version>
|
||||
<freemarker.version>2.3.25-incubating</freemarker.version>
|
||||
<elasticsearch.version>2.4.4</elasticsearch.version>
|
||||
<glassfish-el.version>3.0.0</glassfish-el.version>
|
||||
|
|
Loading…
Reference in New Issue