Skip to content

Commit

Permalink
Auto-configure Flyway with JavaMigration beans
Browse files Browse the repository at this point in the history
  • Loading branch information
SammyVimes authored and pull[bot] committed Aug 30, 2019
1 parent e23cc9f commit 3abc842
Show file tree
Hide file tree
Showing 2 changed files with 90 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,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;
Expand Down Expand Up @@ -112,7 +113,7 @@ public Flyway flyway(FlywayProperties properties, DataSourceProperties dataSourc
ResourceLoader resourceLoader, ObjectProvider<DataSource> dataSource,
@FlywayDataSource ObjectProvider<DataSource> flywayDataSource,
ObjectProvider<FlywayConfigurationCustomizer> fluentConfigurationCustomizers,
ObjectProvider<Callback> callbacks) {
ObjectProvider<JavaMigration> javaMigrations, ObjectProvider<Callback> callbacks) {
FluentConfiguration configuration = new FluentConfiguration(resourceLoader.getClassLoader());
DataSource dataSourceToMigrate = configureDataSource(configuration, properties, dataSourceProperties,
flywayDataSource.getIfAvailable(), dataSource.getIfAvailable());
Expand All @@ -122,6 +123,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 @@ -29,6 +29,7 @@
import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.callback.Context;
import org.flywaydb.core.api.callback.Event;
import org.flywaydb.core.api.migration.JavaMigration;
import org.flywaydb.core.internal.license.FlywayProUpgradeRequiredException;
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -264,6 +265,16 @@ void customFlywayMigrationStrategy() {
});
}

@Test
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 @@ -471,6 +482,81 @@ 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 3abc842

Please sign in to comment.