Skip to content

Commit 6044b4c

Browse files
committed
Upgrade Flyway 4.0
See gh-5296
1 parent a192970 commit 6044b4c

File tree

3 files changed

+54
-3
lines changed

3 files changed

+54
-3
lines changed

spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import org.flywaydb.core.Flyway;
2828
import org.flywaydb.core.api.MigrationVersion;
29+
import org.flywaydb.core.api.callback.FlywayCallback;
2930

3031
import org.springframework.beans.factory.ObjectProvider;
3132
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@@ -58,6 +59,7 @@
5859
* @author Vedran Pavic
5960
* @author Stephane Nicoll
6061
* @author Jacques-Etienne Beaudet
62+
* @author Eddú Meléndez
6163
* @since 1.1.0
6264
*/
6365
@Configuration
@@ -89,16 +91,20 @@ public static class FlywayConfiguration {
8991

9092
private final FlywayMigrationStrategy migrationStrategy;
9193

94+
private FlywayCallback[] flywayCallbacks;
95+
9296
public FlywayConfiguration(FlywayProperties properties,
9397
ResourceLoader resourceLoader,
9498
ObjectProvider<DataSource> dataSourceProvider,
9599
@FlywayDataSource ObjectProvider<DataSource> flywayDataSourceProvider,
96-
ObjectProvider<FlywayMigrationStrategy> migrationStrategyProvider) {
100+
ObjectProvider<FlywayMigrationStrategy> migrationStrategy,
101+
ObjectProvider<FlywayCallback[]> flywayCallbacks) {
97102
this.properties = properties;
98103
this.resourceLoader = resourceLoader;
99104
this.dataSource = dataSourceProvider.getIfUnique();
100105
this.flywayDataSource = flywayDataSourceProvider.getIfAvailable();
101-
this.migrationStrategy = migrationStrategyProvider.getIfAvailable();
106+
this.migrationStrategy = migrationStrategy.getIfAvailable();
107+
this.flywayCallbacks = flywayCallbacks.getIfAvailable();
102108
}
103109

104110
@PostConstruct
@@ -138,6 +144,9 @@ else if (this.flywayDataSource != null) {
138144
else {
139145
flyway.setDataSource(this.dataSource);
140146
}
147+
if (this.flywayCallbacks != null && this.flywayCallbacks.length > 0) {
148+
flyway.setCallbacks(this.flywayCallbacks);
149+
}
141150
flyway.setLocations(this.properties.getLocations().toArray(new String[0]));
142151
return flyway;
143152
}

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import org.flywaydb.core.Flyway;
2727
import org.flywaydb.core.api.MigrationVersion;
28+
import org.flywaydb.core.api.callback.BaseFlywayCallback;
2829
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
2930
import org.junit.After;
3031
import org.junit.Before;
@@ -56,6 +57,7 @@
5657
* @author Phillip Webb
5758
* @author Andy Wilkinson
5859
* @author Vedran Pavic
60+
* @author Eddú Meléndez
5961
*/
6062
public class FlywayAutoConfigurationTests {
6163

@@ -200,6 +202,16 @@ public void customFlywayMigrationInitializer() throws Exception {
200202
assertThat(initializer.getOrder()).isEqualTo(Ordered.HIGHEST_PRECEDENCE);
201203
}
202204

205+
@Test
206+
public void customFlywayCallback() throws Exception {
207+
registerAndRefresh(EmbeddedDataSourceConfiguration.class,
208+
FlywayAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class,
209+
MockOneFlywayCallback.class, MockTwoFlywayCallback.class);
210+
assertThat(this.context.getBean(Flyway.class)).isNotNull();
211+
this.context.getBean(MockOneFlywayCallback.class).assertCalled();
212+
this.context.getBean(MockTwoFlywayCallback.class).assertCalled();
213+
}
214+
203215
@Test
204216
public void customFlywayWithJpa() throws Exception {
205217
registerAndRefresh(CustomFlywayWithJpaConfiguration.class,
@@ -303,4 +315,34 @@ public void assertCalled() {
303315
}
304316
}
305317

318+
@Component
319+
protected static class MockOneFlywayCallback
320+
extends BaseFlywayCallback {
321+
322+
private boolean called = false;
323+
324+
public MockOneFlywayCallback() {
325+
this.called = true;
326+
}
327+
328+
public void assertCalled() {
329+
assertThat(this.called).isTrue();
330+
}
331+
}
332+
333+
@Component
334+
protected static class MockTwoFlywayCallback
335+
extends BaseFlywayCallback {
336+
337+
private boolean called = false;
338+
339+
public MockTwoFlywayCallback() {
340+
this.called = true;
341+
}
342+
343+
public void assertCalled() {
344+
assertThat(this.called).isTrue();
345+
}
346+
}
347+
306348
}

spring-boot-dependencies/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
<dropwizard-metrics.version>3.1.2</dropwizard-metrics.version>
7070
<ehcache.version>2.10.1</ehcache.version>
7171
<embedded-mongo.version>1.50.2</embedded-mongo.version>
72-
<flyway.version>3.2.1</flyway.version>
72+
<flyway.version>4.0</flyway.version>
7373
<freemarker.version>2.3.23</freemarker.version>
7474
<elasticsearch.version>2.2.2</elasticsearch.version>
7575
<gemfire.version>8.2.0</gemfire.version>

0 commit comments

Comments
 (0)