Commit 3e13970f authored by Craig Andrews's avatar Craig Andrews Committed by Stephane Nicoll

Use configured schema in Liquibase endpoint

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

See gh-98£62
parent ab08cccc
...@@ -28,6 +28,7 @@ import liquibase.database.Database; ...@@ -28,6 +28,7 @@ import liquibase.database.Database;
import liquibase.database.DatabaseFactory; import liquibase.database.DatabaseFactory;
import liquibase.database.jvm.JdbcConnection; import liquibase.database.jvm.JdbcConnection;
import liquibase.integration.spring.SpringLiquibase; import liquibase.integration.spring.SpringLiquibase;
import liquibase.util.StringUtils;
import org.springframework.boot.actuate.endpoint.LiquibaseEndpoint.LiquibaseReport; import org.springframework.boot.actuate.endpoint.LiquibaseEndpoint.LiquibaseReport;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.context.properties.ConfigurationProperties;
...@@ -67,6 +68,10 @@ public class LiquibaseEndpoint extends AbstractEndpoint<List<LiquibaseReport>> { ...@@ -67,6 +68,10 @@ public class LiquibaseEndpoint extends AbstractEndpoint<List<LiquibaseReport>> {
try { try {
Database database = factory Database database = factory
.findCorrectDatabaseImplementation(connection); .findCorrectDatabaseImplementation(connection);
String defaultSchema = entry.getValue().getDefaultSchema();
if (StringUtils.trimToNull(defaultSchema) != null) {
database.setDefaultSchemaName(defaultSchema);
}
reports.add(new LiquibaseReport(entry.getKey(), reports.add(new LiquibaseReport(entry.getKey(),
service.queryDatabaseChangeLogTable(database))); service.queryDatabaseChangeLogTable(database)));
} }
......
...@@ -18,9 +18,10 @@ package org.springframework.boot.actuate.endpoint; ...@@ -18,9 +18,10 @@ package org.springframework.boot.actuate.endpoint;
import liquibase.integration.spring.SpringLiquibase; import liquibase.integration.spring.SpringLiquibase;
import org.junit.Test; import org.junit.Test;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; 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.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
...@@ -44,8 +45,21 @@ public class LiquibaseEndpointTests extends AbstractEndpointTests<LiquibaseEndpo ...@@ -44,8 +45,21 @@ public class LiquibaseEndpointTests extends AbstractEndpointTests<LiquibaseEndpo
assertThat(getEndpointBean().invoke()).hasSize(1); 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 @Configuration
@Import({ EmbeddedDataSourceConfiguration.class, LiquibaseAutoConfiguration.class }) @Import({ DataSourceAutoConfiguration.class, LiquibaseAutoConfiguration.class })
public static class Config { public static class Config {
private final SpringLiquibase liquibase; private final SpringLiquibase liquibase;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment