From 5470a6b34916b7abcc3ed2f6556a720420cc5e3e Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 7 Sep 2022 17:36:37 +0100 Subject: [PATCH] Call FlywayConfigurationCustomizers after applying all other config Closes gh-32070 --- .../autoconfigure/flyway/FlywayAutoConfiguration.java | 9 +-------- .../flyway/FlywayAutoConfigurationTests.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java index c73d979bd4c..3e8edddd8f1 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java @@ -119,10 +119,9 @@ public class FlywayAutoConfiguration { configureProperties(configuration, properties); List orderedCallbacks = callbacks.orderedStream().collect(Collectors.toList()); configureCallbacks(configuration, orderedCallbacks); - fluentConfigurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration)); - configureFlywayCallbacks(configuration, orderedCallbacks); List migrations = javaMigrations.stream().collect(Collectors.toList()); configureJavaMigrations(configuration, migrations); + fluentConfigurationCustomizers.orderedStream().forEach((customizer) -> customizer.customize(configuration)); return configuration.load(); } @@ -245,12 +244,6 @@ public class FlywayAutoConfiguration { } } - private void configureFlywayCallbacks(FluentConfiguration flyway, List callbacks) { - if (!callbacks.isEmpty()) { - flyway.callbacks(callbacks.toArray(new Callback[0])); - } - } - private void configureJavaMigrations(FluentConfiguration flyway, List migrations) { if (!migrations.isEmpty()) { flyway.javaMigrations(migrations.toArray(new JavaMigration[0])); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java index a5297381c89..9f308020498 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java @@ -467,6 +467,17 @@ class FlywayAutoConfigurationTests { }); } + @Test + void callbackAndMigrationBeansAreAppliedToConfigurationBeforeCustomizersAreCalled() { + this.contextRunner + .withUserConfiguration(EmbeddedDataSourceConfiguration.class, FlywayJavaMigrationsConfiguration.class, + CallbackConfiguration.class) + .withBean(FlywayConfigurationCustomizer.class, () -> (configuration) -> { + assertThat(configuration.getCallbacks()).isNotEmpty(); + assertThat(configuration.getJavaMigrations()).isNotEmpty(); + }).run((context) -> assertThat(context).hasNotFailed()); + } + @Test void batchIsCorrectlyMapped() { this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)