Skip to content

Commit 297b4df

Browse files
committed
Upgrade to Flyway 11.13.0
Closes gh-47239
1 parent 7ada32c commit 297b4df

File tree

6 files changed

+41
-4
lines changed

6 files changed

+41
-4
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,11 @@ private void configureProperties(FluentConfiguration configuration, FlywayProper
234234
.resolveLocations(properties.getLocations())
235235
.toArray(new String[0]);
236236
configuration.locations(locations);
237+
map.from(properties.getCallbackLocations())
238+
.when((callbackLocations) -> !ObjectUtils.isEmpty(callbackLocations))
239+
.to((callbackLocations) -> configuration.callbackLocations(
240+
new LocationResolver(configuration.getDataSource()).resolveLocations(callbackLocations)
241+
.toArray(new String[0])));
237242
map.from(properties.isFailOnMissingLocations())
238243
.to((failOnMissingLocations) -> configuration.failOnMissingLocations(failOnMissingLocations));
239244
map.from(properties.getEncoding()).to((encoding) -> configuration.encoding(encoding));

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

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,15 @@ public class FlywayProperties {
6060
*/
6161
private List<String> locations = new ArrayList<>(Collections.singletonList("classpath:db/migration"));
6262

63+
/**
64+
* Locations of callbacks. Can contain the special "{vendor}" placeholder to use
65+
* vendor-specific callbacks. Unprefixed locations or locations starting with
66+
* "classpath:" point to a package on the classpath and may contain both SQL and
67+
* Java-based callbacks. Locations starting with "filesystem:" point to a directory on
68+
* the filesystem, may only contain SQL callbacks.
69+
*/
70+
private List<String> callbackLocations = new ArrayList<>();
71+
6372
/**
6473
* Encoding of SQL migrations.
6574
*/
@@ -365,6 +374,14 @@ public void setLocations(List<String> locations) {
365374
this.locations = locations;
366375
}
367376

377+
public List<String> getCallbackLocations() {
378+
return this.callbackLocations;
379+
}
380+
381+
public void setCallbackLocations(List<String> callbackLocations) {
382+
this.callbackLocations = callbackLocations;
383+
}
384+
368385
public Charset getEncoding() {
369386
return this.encoding;
370387
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ class NativeImageResourceProviderCustomizer extends ResourceProviderCustomizer {
3535
@Override
3636
public void customize(FluentConfiguration configuration) {
3737
if (configuration.getResourceProvider() == null) {
38-
Scanner<JavaMigration> scanner = new Scanner<>(JavaMigration.class, false, new ResourceNameCache(),
39-
new LocationScannerCache(), configuration);
38+
Scanner<JavaMigration> scanner = new Scanner<>(JavaMigration.class, new ResourceNameCache(),
39+
new LocationScannerCache(), configuration, configuration.getLocations());
4040
NativeImageResourceProvider resourceProvider = new NativeImageResourceProvider(scanner,
4141
configuration.getClassLoader(), Arrays.asList(configuration.getLocations()),
4242
configuration.getEncoding(), configuration.isFailOnMissingLocations());

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,19 @@ void useOneLocationWithVendorDirectory() {
560560
});
561561
}
562562

563+
@Test
564+
@WithResource(name = "com/example/h2/beforeEachMigrate.sql", content = "DROP TABLE IF EXISTS TEMP;")
565+
void useOneCallbackLocationWithVendorSpecificPackage() {
566+
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
567+
.withPropertyValues("spring.flyway.callback-locations=classpath:com.example.{vendor}")
568+
.run((context) -> {
569+
assertThat(context).hasSingleBean(Flyway.class);
570+
Flyway flyway = context.getBean(Flyway.class);
571+
assertThat(flyway.getConfiguration().getCallbackLocations())
572+
.containsExactly(new Location("classpath:com.example.h2"));
573+
});
574+
}
575+
563576
@Test
564577
void callbacksAreConfiguredAndOrderedByName() {
565578
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class, CallbackConfiguration.class)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ void defaultValuesAreConsistent() {
5454
assertThat(properties.isFailOnMissingLocations()).isEqualTo(configuration.isFailOnMissingLocations());
5555
assertThat(properties.getLocations().stream().map(Location::new).toArray(Location[]::new))
5656
.isEqualTo(configuration.getLocations());
57+
assertThat(properties.getCallbackLocations().stream().map(Location::new).toArray(Location[]::new))
58+
.isEqualTo(configuration.getCallbackLocations());
5759
assertThat(properties.getEncoding()).isEqualTo(configuration.getEncoding());
5860
assertThat(properties.getConnectRetries()).isEqualTo(configuration.getConnectRetries());
5961
assertThat(properties.getConnectRetriesInterval()).extracting(Duration::getSeconds)
@@ -130,7 +132,7 @@ void expectedPropertiesAreManaged() {
130132
"environmentProvisionMode", "provisionMode", "cleanOnValidationError");
131133
// Handled by the conversion service
132134
ignoreProperties(configuration, "baselineVersionAsString", "encodingAsString", "locationsAsStrings",
133-
"targetAsString");
135+
"callbackLocationsAsStrings", "targetAsString");
134136
// Handled as initSql array
135137
ignoreProperties(configuration, "initSql");
136138
ignoreProperties(properties, "initSqls");

platform/spring-boot-dependencies/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ bom {
375375
javadoc("elasticsearch-java", version -> "https://javadoc.io/doc/co.elastic.clients/elasticsearch-java/%s/index.html".formatted(version), "co.elastic.clients.elasticsearch", "co.elastic.clients.transport")
376376
}
377377
}
378-
library("Flyway", "11.12.0") {
378+
library("Flyway", "11.13.0") {
379379
group("org.flywaydb") {
380380
modules = [
381381
"flyway-commandline",

0 commit comments

Comments
 (0)