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 d9ac48c9b0a..975318995f3 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
@@ -79,6 +79,7 @@ import org.springframework.util.StringUtils;
* @author Eddú Meléndez
* @author Dominic Gunn
* @author Dan Zheng
+ * @author András Deák
* @since 1.1.0
*/
@SuppressWarnings("deprecation")
@@ -156,9 +157,10 @@ public class FlywayAutoConfiguration {
private DataSource configureDataSource(FluentConfiguration configuration) {
if (this.properties.isCreateDataSource()) {
- String url = getProperty(this.properties::getUrl, this.dataSourceProperties::getUrl);
- String user = getProperty(this.properties::getUser, this.dataSourceProperties::getUsername);
- String password = getProperty(this.properties::getPassword, this.dataSourceProperties::getPassword);
+ String url = getProperty(this.properties::getUrl, this.dataSourceProperties::determineUrl);
+ String user = getProperty(this.properties::getUser, this.dataSourceProperties::determineUsername);
+ String password = getProperty(this.properties::getPassword,
+ this.dataSourceProperties::determinePassword);
configuration.dataSource(url, user, password);
if (!CollectionUtils.isEmpty(this.properties.getInitSqls())) {
String initSql = StringUtils.collectionToDelimitedString(this.properties.getInitSqls(), "\n");
diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
index 4a414eb0fa4..c8d1aaf9728 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
@@ -61,6 +61,7 @@ import org.springframework.util.Assert;
* @author Andy Wilkinson
* @author Dominic Gunn
* @author Dan Zheng
+ * @author András Deák
* @since 1.1.0
*/
@Configuration
@@ -153,9 +154,9 @@ public class LiquibaseAutoConfiguration {
}
private DataSource createNewDataSource() {
- String url = getProperty(this.properties::getUrl, this.dataSourceProperties::getUrl);
- String user = getProperty(this.properties::getUser, this.dataSourceProperties::getUsername);
- String password = getProperty(this.properties::getPassword, this.dataSourceProperties::getPassword);
+ String url = getProperty(this.properties::getUrl, this.dataSourceProperties::determineUrl);
+ String user = getProperty(this.properties::getUser, this.dataSourceProperties::determineUsername);
+ String password = getProperty(this.properties::getPassword, this.dataSourceProperties::determinePassword);
return DataSourceBuilder.create().url(url).username(user).password(password).build();
}
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 076af512350..579db9c6334 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
@@ -30,6 +30,7 @@ import org.flywaydb.core.api.callback.Callback;
import org.flywaydb.core.api.callback.Context;
import org.flywaydb.core.api.callback.Event;
import org.flywaydb.core.api.callback.FlywayCallback;
+import org.flywaydb.core.internal.jdbc.DriverDataSource;
import org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform;
import org.junit.Test;
import org.mockito.InOrder;
@@ -66,6 +67,7 @@ import static org.mockito.Mockito.mock;
* @author Eddú Meléndez
* @author Stephane Nicoll
* @author Dominic Gunn
+ * @author András Deák
*/
@SuppressWarnings("deprecation")
public class FlywayAutoConfigurationTests {
@@ -98,6 +100,30 @@ public class FlywayAutoConfigurationTests {
});
}
+ @Test
+ public void createDataSourceFallbackToEmbeddedProperties() {
+ this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
+ .withPropertyValues("spring.flyway.url:jdbc:hsqldb:mem:flywaytest").run((context) -> {
+ assertThat(context).hasSingleBean(Flyway.class);
+ assertThat(context.getBean(Flyway.class).getDataSource()).isNotNull();
+ assertThat(((DriverDataSource) context.getBean(Flyway.class).getDataSource()).getUser())
+ .isEqualTo("sa");
+ assertThat(((DriverDataSource) context.getBean(Flyway.class).getDataSource()).getPassword())
+ .isEqualTo("");
+ });
+ }
+
+ @Test
+ public void createDataSourceWithUserAndFallbackToEmbeddedProperties() {
+ this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
+ .withPropertyValues("spring.flyway.user:sa").run((context) -> {
+ assertThat(context).hasSingleBean(Flyway.class);
+ assertThat(context.getBean(Flyway.class).getDataSource()).isNotNull();
+ assertThat(((DriverDataSource) context.getBean(Flyway.class).getDataSource()).getUrl())
+ .startsWith("jdbc:h2:mem:");
+ });
+ }
+
@Test
public void flywayDataSource() {
this.contextRunner
diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java
index dff35ccced1..a99b8dc6b17 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java
@@ -60,6 +60,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Dominic Gunn
+ * @author András Deák
*/
public class LiquibaseAutoConfigurationTests {
@@ -199,6 +200,28 @@ public class LiquibaseAutoConfigurationTests {
}));
}
+ @Test
+ public void overrideDataSourceAndFallbackToEmbeddedProperties() {
+ this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
+ .withPropertyValues("spring.liquibase.url:jdbc:hsqldb:mem:liquibase")
+ .run(assertLiquibase((liquibase) -> {
+ DataSource dataSource = liquibase.getDataSource();
+ assertThat(((HikariDataSource) dataSource).isClosed()).isTrue();
+ assertThat(((HikariDataSource) dataSource).getUsername()).isEqualTo("sa");
+ assertThat(((HikariDataSource) dataSource).getPassword()).isEqualTo("");
+ }));
+ }
+
+ @Test
+ public void overrideUserAndFallbackToEmbeddedProperties() {
+ this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
+ .withPropertyValues("spring.liquibase.user:sa").run(assertLiquibase((liquibase) -> {
+ DataSource dataSource = liquibase.getDataSource();
+ assertThat(((HikariDataSource) dataSource).isClosed()).isTrue();
+ assertThat(((HikariDataSource) dataSource).getJdbcUrl()).startsWith("jdbc:h2:mem:");
+ }));
+ }
+
@Test
public void overrideTestRollbackOnUpdate() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml
index 858ed62c323..5ab2de11dbb 100644
--- a/src/checkstyle/checkstyle-suppressions.xml
+++ b/src/checkstyle/checkstyle-suppressions.xml
@@ -35,4 +35,5 @@
+