Use configured schema in Liquibase endpoint

This commit makes sure that the Liquibase endpoint uses the configured
schema.

See gh-98£62
This commit is contained in:
Craig Andrews 2017-07-25 13:35:03 -04:00 committed by Stephane Nicoll
parent ab08cccc21
commit 3e13970fe0
3 changed files with 23 additions and 3 deletions

View File

@ -28,6 +28,7 @@ import liquibase.database.Database;
import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection;
import liquibase.integration.spring.SpringLiquibase;
import liquibase.util.StringUtils;
import org.springframework.boot.actuate.endpoint.LiquibaseEndpoint.LiquibaseReport;
import org.springframework.boot.context.properties.ConfigurationProperties;
@ -67,6 +68,10 @@ public class LiquibaseEndpoint extends AbstractEndpoint<List<LiquibaseReport>> {
try {
Database database = factory
.findCorrectDatabaseImplementation(connection);
String defaultSchema = entry.getValue().getDefaultSchema();
if (StringUtils.trimToNull(defaultSchema) != null) {
database.setDefaultSchemaName(defaultSchema);
}
reports.add(new LiquibaseReport(entry.getKey(),
service.queryDatabaseChangeLogTable(database)));
}

View File

@ -18,9 +18,10 @@ package org.springframework.boot.actuate.endpoint;
import liquibase.integration.spring.SpringLiquibase;
import org.junit.Test;
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
@ -44,8 +45,21 @@ public class LiquibaseEndpointTests extends AbstractEndpointTests<LiquibaseEndpo
assertThat(getEndpointBean().invoke()).hasSize(1);
}
@Test
public void invokeDifferentDefaultSchema() throws Exception {
this.context = new AnnotationConfigApplicationContext();
TestPropertyValues
.ofPair("liquibase.defaultSchema","SOMESCHEMA")
.and("spring.datasource.generate-unique-name","true")
.and("spring.datasource.schema","classpath:/db/non-default-schema.sql")
.applyTo(this.context);
this.context.register(Config.class);
this.context.refresh();
assertThat(getEndpointBean().invoke()).hasSize(1);
}
@Configuration
@Import({ EmbeddedDataSourceConfiguration.class, LiquibaseAutoConfiguration.class })
@Import({ DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class })
public static class Config {
private final SpringLiquibase liquibase;

View File

@ -0,0 +1 @@
CREATE SCHEMA SOMESCHEMA;