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 663976ddaf28..4a3383a38cbd 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 @@
* @author Eddú Meléndez
* @author Dominic Gunn
* @author Dan Zheng
+ * @author András Deák
* @since 1.1.0
*/
@SuppressWarnings("deprecation")
@@ -163,11 +164,11 @@ public Flyway flyway() {
private DataSource configureDataSource(FluentConfiguration configuration) {
if (this.properties.isCreateDataSource()) {
String url = getProperty(this.properties::getUrl,
- this.dataSourceProperties::getUrl);
+ this.dataSourceProperties::determineUrl);
String user = getProperty(this.properties::getUser,
- this.dataSourceProperties::getUsername);
+ this.dataSourceProperties::determineUsername);
String password = getProperty(this.properties::getPassword,
- this.dataSourceProperties::getPassword);
+ this.dataSourceProperties::determinePassword);
configuration.dataSource(url, user, password);
if (!CollectionUtils.isEmpty(this.properties.getInitSqls())) {
String initSql = StringUtils.collectionToDelimitedString(
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 f09f75f607f5..cc49092f10de 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 @@
* @author Andy Wilkinson
* @author Dominic Gunn
* @author Dan Zheng
+ * @author András Deák
* @since 1.1.0
*/
@Configuration
@@ -163,11 +164,11 @@ private DataSource getDataSource() {
private DataSource createNewDataSource() {
String url = getProperty(this.properties::getUrl,
- this.dataSourceProperties::getUrl);
+ this.dataSourceProperties::determineUrl);
String user = getProperty(this.properties::getUser,
- this.dataSourceProperties::getUsername);
+ this.dataSourceProperties::determineUsername);
String password = getProperty(this.properties::getPassword,
- this.dataSourceProperties::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 65dc98ddfe93..8693fe13060a 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.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 @@
* @author Eddú Meléndez
* @author Stephane Nicoll
* @author Dominic Gunn
+ * @author András Deák
*/
@SuppressWarnings("deprecation")
public class FlywayAutoConfigurationTests {
@@ -101,6 +103,31 @@ public void createDataSourceWithUser() {
});
}
+ @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.withUserConfiguration(FlywayDataSourceConfiguration.class,
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 91dfd49e7e26..08fdd8b4d801 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 @@
* @author Andy Wilkinson
* @author Stephane Nicoll
* @author Dominic Gunn
+ * @author András Deák
*/
public class LiquibaseAutoConfigurationTests {
@@ -221,6 +222,32 @@ public void overrideUser() {
}));
}
+ @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 858ed62c3236..5ab2de11dbb3 100644
--- a/src/checkstyle/checkstyle-suppressions.xml
+++ b/src/checkstyle/checkstyle-suppressions.xml
@@ -35,4 +35,5 @@
+