From 7c54c3ff213ee461ed6f089b821255ba67086709 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Fri, 12 Aug 2016 13:11:23 +0100 Subject: [PATCH] =?UTF-8?q?Ensure=20that=20@LiquibaseDataSource=20is=20pre?= =?UTF-8?q?ferred=20to=20=E2=80=9Cnormal=E2=80=9D=20DataSource?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Closes gh-6604 --- .../liquibase/LiquibaseAutoConfiguration.java | 8 ++++---- .../autoconfigure/liquibase/LiquibaseDataSource.java | 4 ++-- .../liquibase/LiquibaseAutoConfigurationTests.java | 11 ++++++++++- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java index be92343de6..152b87b31d 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java @@ -116,12 +116,12 @@ public class LiquibaseAutoConfiguration { } private DataSource getDataSource() { - if (this.properties.getUrl() == null) { - return this.dataSource; - } - else if (this.liquibaseDataSource != null) { + if (this.liquibaseDataSource != null) { return this.liquibaseDataSource; } + else if (this.properties.getUrl() == null) { + return this.dataSource; + } return DataSourceBuilder.create().url(this.properties.getUrl()) .username(this.properties.getUser()) .password(this.properties.getPassword()).build(); diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseDataSource.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseDataSource.java index fb7837a867..6939449563 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseDataSource.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseDataSource.java @@ -25,8 +25,8 @@ import java.lang.annotation.Target; import org.springframework.beans.factory.annotation.Qualifier; /** - * Qualifier annotation for a DataSource to be injected in to Liquibase. If used for a second - * data source, the other (main) one would normally be marked as {@code @Primary}. + * Qualifier annotation for a DataSource to be injected in to Liquibase. If used for a + * second data source, the other (main) one would normally be marked as {@code @Primary}. * * @author EddĂș MelĂ©ndez * @since 1.4.1 diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java index 94e4bee296..1ea2f94d95 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java @@ -38,6 +38,7 @@ import org.springframework.boot.test.util.EnvironmentTestUtils; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.test.util.ReflectionTestUtils; import org.springframework.util.FileCopyUtils; @@ -254,12 +255,20 @@ public class LiquibaseAutoConfigurationTests { PropertyPlaceholderAutoConfiguration.class); this.context.refresh(); SpringLiquibase liquibase = this.context.getBean(SpringLiquibase.class); - assertThat(liquibase.getDataSource()).isNotNull(); + assertThat(liquibase.getDataSource()) + .isEqualTo(this.context.getBean("liquibaseDataSource")); } @Configuration static class LiquibaseDataSourceConfiguration { + @Bean + @Primary + public DataSource normalDataSource() { + return DataSourceBuilder.create().url("jdbc:hsqldb:mem:normal").username("sa") + .build(); + } + @LiquibaseDataSource @Bean public DataSource liquibaseDataSource() {