From a749855cb5d32306aa9969151f89fc2e0f428683 Mon Sep 17 00:00:00 2001 From: Jacques-Etienne Beaudet Date: Tue, 19 Jan 2016 12:55:39 -0500 Subject: [PATCH] Allow indexed access of `flyway.locations` This commit allows to use the `flyway.locations` in an indexed fashion (i.e. typically in YAML configuration). See gh-4973 --- .../boot/autoconfigure/flyway/FlywayAutoConfiguration.java | 2 ++ .../boot/autoconfigure/flyway/FlywayProperties.java | 3 ++- .../autoconfigure/flyway/FlywayAutoConfigurationTests.java | 4 ++-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java index faac6d1564d..3417e4f34a7 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration.java @@ -114,6 +114,8 @@ public class FlywayAutoConfiguration { else { flyway.setDataSource(this.dataSource); } + //Explicitly set locations because the getter doesn't return a mutable value + flyway.setLocations(this.properties.getLocations().toArray(new String[0])); return flyway; } diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java index b4dca435b98..b80d4327b73 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/flyway/FlywayProperties.java @@ -16,6 +16,7 @@ package org.springframework.boot.autoconfigure.flyway; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -39,7 +40,7 @@ public class FlywayProperties { /** * Locations of migrations scripts. */ - private List locations = Arrays.asList("db/migration"); + private List locations = new ArrayList(Arrays.asList("db/migration")); /** * Check that migration scripts location exists. diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java index 708be5fadd6..47cfe3907f4 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/flyway/FlywayAutoConfigurationTests.java @@ -104,8 +104,8 @@ public class FlywayAutoConfigurationTests { @Test public void overrideLocations() throws Exception { - EnvironmentTestUtils.addEnvironment(this.context, - "flyway.locations:classpath:db/changelog,classpath:db/migration"); + EnvironmentTestUtils.addEnvironment(this.context, "flyway.locations[0]:classpath:db/changelog", + "flyway.locations[1]:classpath:db/migration"); registerAndRefresh(EmbeddedDataSourceConfiguration.class, FlywayAutoConfiguration.class, PropertyPlaceholderAutoConfiguration.class);