Skip to content

Commit

Permalink
AutoConfiguration for Flyway's JavaMigration
Browse files Browse the repository at this point in the history
fixes gh-15446
  • Loading branch information
SammyVimes committed Aug 29, 2019
1 parent 82a8564 commit 63690ec
Show file tree
Hide file tree
Showing 2 changed files with 85 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.flywaydb.core.api.MigrationVersion;
import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.configuration.FluentConfiguration;
import org.flywaydb.core.api.migration.JavaMigration;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
Expand Down Expand Up @@ -103,6 +104,7 @@ public Flyway flyway(FlywayProperties properties, DataSourceProperties dataSourc
ResourceLoader resourceLoader, ObjectProvider<DataSource> dataSource,
@FlywayDataSource ObjectProvider<DataSource> flywayDataSource,
ObjectProvider<FlywayConfigurationCustomizer> fluentConfigurationCustomizers,
ObjectProvider<JavaMigration> javaMigrations,
ObjectProvider<Callback> callbacks) {
FluentConfiguration configuration = new FluentConfiguration(resourceLoader.getClassLoader());
DataSource dataSourceToMigrate = configureDataSource(configuration, properties, dataSourceProperties,
Expand All @@ -113,6 +115,8 @@ public Flyway flyway(FlywayProperties properties, DataSourceProperties dataSourc
configureCallbacks(configuration, orderedCallbacks);
fluentConfigurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration));
configureFlywayCallbacks(configuration, orderedCallbacks);
JavaMigration[] migrations = javaMigrations.stream().toArray(JavaMigration[]::new);
configuration.javaMigrations(migrations);
return configuration.load();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,15 @@ void customFlywayMigrationStrategy() {
});
}

@Test
public void flywayJavaMigrations() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class,
FlywayJavaMigrationsConfiguration.class).run((context) -> {
Flyway flyway = context.getBean(Flyway.class);
assertThat(flyway.getConfiguration().getJavaMigrations().length).isEqualTo(2);
});
}

@Test
void customFlywayMigrationInitializer() {
this.contextRunner
Expand Down Expand Up @@ -456,6 +465,78 @@ DataSource flywayDataSource() {

}

@Configuration
protected static class FlywayJavaMigrationsConfiguration {

@Component
private static class Migration1 implements JavaMigration {

@Override
public MigrationVersion getVersion() {
return MigrationVersion.fromVersion("2");
}

@Override
public String getDescription() {
return "M1";
}

@Override
public Integer getChecksum() {
return 1;
}

@Override
public boolean isUndo() {
return false;
}

@Override
public boolean canExecuteInTransaction() {
return true;
}

@Override
public void migrate(org.flywaydb.core.api.migration.Context context) throws Exception {

}
}

@Component
private static class Migration2 implements JavaMigration {

@Override
public MigrationVersion getVersion() {
return MigrationVersion.fromVersion("3");
}

@Override
public String getDescription() {
return "M2";
}

@Override
public Integer getChecksum() {
return 2;
}

@Override
public boolean isUndo() {
return false;
}

@Override
public boolean canExecuteInTransaction() {
return false;
}

@Override
public void migrate(org.flywaydb.core.api.migration.Context context) throws Exception {

}
}
}

@Configuration(proxyBeanMethods = false)
static class ResourceLoaderConfiguration {

Expand Down

0 comments on commit 63690ec

Please sign in to comment.