Skip to content

Commit c6872e5

Browse files
committed
Remove support for Flyway 8.x and earlier
Closes gh-32036
1 parent 5fdfc0d commit c6872e5

File tree

7 files changed

+52
-456
lines changed

7 files changed

+52
-456
lines changed

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

+21-78
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.autoconfigure.flyway;
1818

1919
import java.sql.DatabaseMetaData;
20+
import java.time.Duration;
2021
import java.util.Collection;
2122
import java.util.Collections;
2223
import java.util.HashSet;
@@ -164,32 +165,25 @@ private void configureProperties(FluentConfiguration configuration, FlywayProper
164165
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
165166
String[] locations = new LocationResolver(configuration.getDataSource())
166167
.resolveLocations(properties.getLocations()).toArray(new String[0]);
167-
configureFailOnMissingLocations(configuration, properties.isFailOnMissingLocations());
168+
map.from(properties.isFailOnMissingLocations()).to(configuration::failOnMissingLocations);
168169
map.from(locations).to(configuration::locations);
169170
map.from(properties.getEncoding()).to(configuration::encoding);
170171
map.from(properties.getConnectRetries()).to(configuration::connectRetries);
171-
// No method reference for compatibility with Flyway < 7.15
172-
map.from(properties.getConnectRetriesInterval())
173-
.to((interval) -> configuration.connectRetriesInterval((int) interval.getSeconds()));
174-
// No method reference for compatibility with Flyway 6.x
175-
map.from(properties.getLockRetryCount())
176-
.to((lockRetryCount) -> configuration.lockRetryCount(lockRetryCount));
177-
// No method reference for compatibility with Flyway 5.x
178-
map.from(properties.getDefaultSchema()).to((schema) -> configuration.defaultSchema(schema));
172+
map.from(properties.getConnectRetriesInterval()).as(Duration::getSeconds).as(Long::intValue)
173+
.to(configuration::connectRetriesInterval);
174+
map.from(properties.getLockRetryCount()).to(configuration::lockRetryCount);
175+
map.from(properties.getDefaultSchema()).to(configuration::defaultSchema);
179176
map.from(properties.getSchemas()).as(StringUtils::toStringArray).to(configuration::schemas);
180-
configureCreateSchemas(configuration, properties.isCreateSchemas());
177+
map.from(properties.isCreateSchemas()).to(configuration::createSchemas);
181178
map.from(properties.getTable()).to(configuration::table);
182-
// No method reference for compatibility with Flyway 5.x
183-
map.from(properties.getTablespace()).to((tablespace) -> configuration.tablespace(tablespace));
179+
map.from(properties.getTablespace()).to(configuration::tablespace);
184180
map.from(properties.getBaselineDescription()).to(configuration::baselineDescription);
185181
map.from(properties.getBaselineVersion()).to(configuration::baselineVersion);
186182
map.from(properties.getInstalledBy()).to(configuration::installedBy);
187183
map.from(properties.getPlaceholders()).to(configuration::placeholders);
188184
map.from(properties.getPlaceholderPrefix()).to(configuration::placeholderPrefix);
189185
map.from(properties.getPlaceholderSuffix()).to(configuration::placeholderSuffix);
190-
// No method reference for compatibility with Flyway version < 8.0
191-
map.from(properties.getPlaceholderSeparator())
192-
.to((placeHolderSeparator) -> configuration.placeholderSeparator(placeHolderSeparator));
186+
map.from(properties.getPlaceholderSeparator()).to(configuration::placeholderSeparator);
193187
map.from(properties.isPlaceholderReplacement()).to(configuration::placeholderReplacement);
194188
map.from(properties.getSqlMigrationPrefix()).to(configuration::sqlMigrationPrefix);
195189
map.from(properties.getSqlMigrationSuffixes()).as(StringUtils::toStringArray)
@@ -205,7 +199,7 @@ private void configureProperties(FluentConfiguration configuration, FlywayProper
205199
map.from(properties.isOutOfOrder()).to(configuration::outOfOrder);
206200
map.from(properties.isSkipDefaultCallbacks()).to(configuration::skipDefaultCallbacks);
207201
map.from(properties.isSkipDefaultResolvers()).to(configuration::skipDefaultResolvers);
208-
configureValidateMigrationNaming(configuration, properties.isValidateMigrationNaming());
202+
map.from(properties.isValidateMigrationNaming()).to(configuration::validateMigrationNaming);
209203
map.from(properties.isValidateOnMigrate()).to(configuration::validateOnMigrate);
210204
map.from(properties.getInitSqls()).whenNot(CollectionUtils::isEmpty)
211205
.as((initSqls) -> StringUtils.collectionToDelimitedString(initSqls, "\n"))
@@ -214,63 +208,27 @@ private void configureProperties(FluentConfiguration configuration, FlywayProper
214208
.to((prefix) -> configuration.scriptPlaceholderPrefix(prefix));
215209
map.from(properties.getScriptPlaceholderSuffix())
216210
.to((suffix) -> configuration.scriptPlaceholderSuffix(suffix));
217-
// Pro properties
211+
// Flyway Teams properties
218212
map.from(properties.getBatch()).to(configuration::batch);
219213
map.from(properties.getDryRunOutput()).to(configuration::dryRunOutput);
220214
map.from(properties.getErrorOverrides()).to(configuration::errorOverrides);
221215
map.from(properties.getLicenseKey()).to(configuration::licenseKey);
222216
map.from(properties.getOracleSqlplus()).to(configuration::oracleSqlplus);
223-
// No method reference for compatibility with Flyway 5.x
224-
map.from(properties.getOracleSqlplusWarn())
225-
.to((oracleSqlplusWarn) -> configuration.oracleSqlplusWarn(oracleSqlplusWarn));
217+
map.from(properties.getOracleSqlplusWarn()).to(configuration::oracleSqlplusWarn);
226218
map.from(properties.getStream()).to(configuration::stream);
227219
map.from(properties.getUndoSqlMigrationPrefix()).to(configuration::undoSqlMigrationPrefix);
228-
// No method reference for compatibility with Flyway 6.x
229-
map.from(properties.getCherryPick()).to((cherryPick) -> configuration.cherryPick(cherryPick));
230-
// No method reference for compatibility with Flyway 6.x
231-
map.from(properties.getJdbcProperties()).whenNot(Map::isEmpty)
232-
.to((jdbcProperties) -> configuration.jdbcProperties(jdbcProperties));
233-
// No method reference for compatibility with Flyway 6.x
234-
map.from(properties.getKerberosConfigFile())
235-
.to((configFile) -> configuration.kerberosConfigFile(configFile));
236-
// No method reference for compatibility with Flyway 6.x
237-
map.from(properties.getOracleKerberosCacheFile())
238-
.to((cacheFile) -> configuration.oracleKerberosCacheFile(cacheFile));
239-
// No method reference for compatibility with Flyway 6.x
240-
map.from(properties.getOutputQueryResults())
241-
.to((outputQueryResults) -> configuration.outputQueryResults(outputQueryResults));
220+
map.from(properties.getCherryPick()).to(configuration::cherryPick);
221+
map.from(properties.getJdbcProperties()).whenNot(Map::isEmpty).to(configuration::jdbcProperties);
222+
map.from(properties.getKerberosConfigFile()).to(configuration::kerberosConfigFile);
223+
map.from(properties.getOracleKerberosCacheFile()).to(configuration::oracleKerberosCacheFile);
224+
map.from(properties.getOutputQueryResults()).to(configuration::outputQueryResults);
242225
map.from(properties.getSqlServerKerberosLoginFile()).whenNonNull()
243226
.to((sqlServerKerberosLoginFile) -> configureSqlServerKerberosLoginFile(configuration,
244227
sqlServerKerberosLoginFile));
245-
// No method reference for compatibility with Flyway 6.x
246-
map.from(properties.getSkipExecutingMigrations())
247-
.to((skipExecutingMigrations) -> configuration.skipExecutingMigrations(skipExecutingMigrations));
248-
// No method reference for compatibility with Flyway < 7.8
228+
map.from(properties.getSkipExecutingMigrations()).to(configuration::skipExecutingMigrations);
249229
map.from(properties.getIgnoreMigrationPatterns()).whenNot(List::isEmpty)
250-
.to((ignoreMigrationPatterns) -> configuration
251-
.ignoreMigrationPatterns(ignoreMigrationPatterns.toArray(new String[0])));
252-
// No method reference for compatibility with Flyway version < 7.9
253-
map.from(properties.getDetectEncoding())
254-
.to((detectEncoding) -> configuration.detectEncoding(detectEncoding));
255-
}
256-
257-
private void configureFailOnMissingLocations(FluentConfiguration configuration,
258-
boolean failOnMissingLocations) {
259-
try {
260-
configuration.failOnMissingLocations(failOnMissingLocations);
261-
}
262-
catch (NoSuchMethodError ex) {
263-
// Flyway < 7.9
264-
}
265-
}
266-
267-
private void configureCreateSchemas(FluentConfiguration configuration, boolean createSchemas) {
268-
try {
269-
configuration.createSchemas(createSchemas);
270-
}
271-
catch (NoSuchMethodError ex) {
272-
// Flyway < 6.5
273-
}
230+
.as((patterns) -> patterns.toArray(new String[0])).to(configuration::ignoreMigrationPatterns);
231+
map.from(properties.getDetectEncoding()).to(configuration::detectEncoding);
274232
}
275233

276234
private void configureSqlServerKerberosLoginFile(FluentConfiguration configuration,
@@ -281,16 +239,6 @@ private void configureSqlServerKerberosLoginFile(FluentConfiguration configurati
281239
sqlServerConfigurationExtension.setKerberosLoginFile(sqlServerKerberosLoginFile);
282240
}
283241

284-
private void configureValidateMigrationNaming(FluentConfiguration configuration,
285-
boolean validateMigrationNaming) {
286-
try {
287-
configuration.validateMigrationNaming(validateMigrationNaming);
288-
}
289-
catch (NoSuchMethodError ex) {
290-
// Flyway < 6.2
291-
}
292-
}
293-
294242
private void configureCallbacks(FluentConfiguration configuration, List<Callback> callbacks) {
295243
if (!callbacks.isEmpty()) {
296244
configuration.callbacks(callbacks.toArray(new Callback[0]));
@@ -305,12 +253,7 @@ private void configureFlywayCallbacks(FluentConfiguration flyway, List<Callback>
305253

306254
private void configureJavaMigrations(FluentConfiguration flyway, List<JavaMigration> migrations) {
307255
if (!migrations.isEmpty()) {
308-
try {
309-
flyway.javaMigrations(migrations.toArray(new JavaMigration[0]));
310-
}
311-
catch (NoSuchMethodError ex) {
312-
// Flyway 5.x
313-
}
256+
flyway.javaMigrations(migrations.toArray(new JavaMigration[0]));
314257
}
315258
}
316259

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

+6-6
Original file line numberDiff line numberDiff line change
@@ -73,12 +73,12 @@ public class FlywayProperties {
7373
* duration suffix is not specified, seconds will be used.
7474
*/
7575
@DurationUnit(ChronoUnit.SECONDS)
76-
private Duration connectRetriesInterval;
76+
private Duration connectRetriesInterval = Duration.ofSeconds(120);
7777

7878
/**
7979
* Maximum number of retries when trying to obtain a lock.
8080
*/
81-
private Integer lockRetryCount;
81+
private int lockRetryCount = 50;
8282

8383
/**
8484
* Default schema name managed by Flyway (case-sensitive).
@@ -141,7 +141,7 @@ public class FlywayProperties {
141141
/**
142142
* Separator of default placeholders.
143143
*/
144-
private String placeholderSeparator;
144+
private String placeholderSeparator = ":";
145145

146146
/**
147147
* Perform placeholder replacement in migration scripts.
@@ -355,12 +355,12 @@ public class FlywayProperties {
355355
/**
356356
* Prefix of placeholders in migration scripts.
357357
*/
358-
private String scriptPlaceholderPrefix;
358+
private String scriptPlaceholderPrefix = "FP__";
359359

360360
/**
361361
* Suffix of placeholders in migration scripts.
362362
*/
363-
private String scriptPlaceholderSuffix;
363+
private String scriptPlaceholderSuffix = "__";
364364

365365
public boolean isEnabled() {
366366
return this.enabled;
@@ -410,7 +410,7 @@ public void setConnectRetriesInterval(Duration connectRetriesInterval) {
410410
this.connectRetriesInterval = connectRetriesInterval;
411411
}
412412

413-
public Integer getLockRetryCount() {
413+
public int getLockRetryCount() {
414414
return this.lockRetryCount;
415415
}
416416

spring-boot-project/spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json

+3-23
Original file line numberDiff line numberDiff line change
@@ -1278,24 +1278,20 @@
12781278
"level": "error"
12791279
}
12801280
},
1281-
{
1282-
"name": "spring.flyway.connect-retries-interval",
1283-
"defaultValue": 120
1284-
},
12851281
{
12861282
"name": "spring.flyway.dry-run-output",
12871283
"type": "java.io.OutputStream",
12881284
"deprecation": {
12891285
"level": "error",
1290-
"reason": "Flyway pro edition only."
1286+
"reason": "Flyway Teams only."
12911287
}
12921288
},
12931289
{
12941290
"name": "spring.flyway.error-handlers",
12951291
"type": "org.flywaydb.core.api.errorhandler.ErrorHandler[]",
12961292
"deprecation": {
12971293
"level": "error",
1298-
"reason": "Flyway pro edition only."
1294+
"reason": "Flyway Teams only."
12991295
}
13001296
},
13011297
{
@@ -1345,10 +1341,6 @@
13451341
"classpath:db/migration"
13461342
]
13471343
},
1348-
{
1349-
"name": "spring.flyway.lock-retry-count",
1350-
"defaultValue": 50
1351-
},
13521344
{
13531345
"name": "spring.flyway.oracle-kerberos-config-file",
13541346
"type": "java.lang.String",
@@ -1357,18 +1349,6 @@
13571349
"level": "error"
13581350
}
13591351
},
1360-
{
1361-
"name": "spring.flyway.placeholder-separator",
1362-
"defaultValue": ":"
1363-
},
1364-
{
1365-
"name": "spring.flyway.script-placeholder-prefix",
1366-
"defaultValue": "FP__"
1367-
},
1368-
{
1369-
"name": "spring.flyway.script-placeholder-suffix",
1370-
"defaultValue": "__"
1371-
},
13721352
{
13731353
"name": "spring.flyway.sql-migration-suffix",
13741354
"type": "java.lang.String",
@@ -1389,7 +1369,7 @@
13891369
"type": "java.lang.String",
13901370
"deprecation": {
13911371
"level": "error",
1392-
"reason": "Flyway pro edition only."
1372+
"reason": "Flyway Teams only."
13931373
}
13941374
},
13951375
{

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

-118
This file was deleted.

0 commit comments

Comments
 (0)