Polish "Add Spring Session JDBC database initializer"
Closes gh-5879
This commit is contained in:
parent
a251ea8bc7
commit
2fea5a869d
|
|
@ -20,11 +20,13 @@ import javax.sql.DataSource;
|
|||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Conditional;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.session.SessionRepository;
|
||||
import org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessionConfiguration;
|
||||
|
||||
|
|
@ -36,6 +38,7 @@ import org.springframework.session.jdbc.config.annotation.web.http.JdbcHttpSessi
|
|||
* @author Vedran Pavic
|
||||
*/
|
||||
@Configuration
|
||||
@ConditionalOnClass(JdbcTemplate.class)
|
||||
@ConditionalOnMissingBean(SessionRepository.class)
|
||||
@ConditionalOnBean(DataSource.class)
|
||||
@Conditional(SessionCondition.class)
|
||||
|
|
|
|||
|
|
@ -52,22 +52,21 @@ public class JdbcSessionDatabaseInitializer {
|
|||
|
||||
@PostConstruct
|
||||
protected void initialize() {
|
||||
if (!this.properties.getJdbc().getInitializer().isEnabled()) {
|
||||
return;
|
||||
if (this.properties.getJdbc().getInitializer().isEnabled()) {
|
||||
String platform = getDatabaseType();
|
||||
if ("hsql".equals(platform)) {
|
||||
platform = "hsqldb";
|
||||
}
|
||||
if ("postgres".equals(platform)) {
|
||||
platform = "postgresql";
|
||||
}
|
||||
ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
|
||||
String schemaLocation = this.properties.getJdbc().getSchema();
|
||||
schemaLocation = schemaLocation.replace("@@platform@@", platform);
|
||||
populator.addScript(this.resourceLoader.getResource(schemaLocation));
|
||||
populator.setContinueOnError(true);
|
||||
DatabasePopulatorUtils.execute(populator, this.dataSource);
|
||||
}
|
||||
String platform = getDatabaseType();
|
||||
if ("hsql".equals(platform)) {
|
||||
platform = "hsqldb";
|
||||
}
|
||||
if ("postgres".equals(platform)) {
|
||||
platform = "postgresql";
|
||||
}
|
||||
ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
|
||||
String schemaLocation = this.properties.getJdbc().getSchema();
|
||||
schemaLocation = schemaLocation.replace("@@platform@@", platform);
|
||||
populator.addScript(this.resourceLoader.getResource(schemaLocation));
|
||||
populator.setContinueOnError(true);
|
||||
DatabasePopulatorUtils.execute(populator, this.dataSource);
|
||||
}
|
||||
|
||||
private String getDatabaseType() {
|
||||
|
|
|
|||
|
|
@ -18,8 +18,6 @@ package org.springframework.boot.autoconfigure.session;
|
|||
|
||||
import java.util.Arrays;
|
||||
|
||||
import javax.persistence.EntityManagerFactory;
|
||||
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.rules.ExpectedException;
|
||||
|
|
@ -27,11 +25,9 @@ import org.junit.rules.ExpectedException;
|
|||
import org.springframework.beans.DirectFieldAccessor;
|
||||
import org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.jdbc.EmbeddedDataSourceConfiguration;
|
||||
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
|
||||
import org.springframework.jdbc.BadSqlGrammarException;
|
||||
import org.springframework.jdbc.core.JdbcOperations;
|
||||
import org.springframework.session.jdbc.JdbcOperationsSessionRepository;
|
||||
import org.springframework.transaction.PlatformTransactionManager;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
|
|
@ -39,11 +35,12 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
* JDBC specific tests for {@link SessionAutoConfiguration}.
|
||||
*
|
||||
* @author Vedran Pavic
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
public class SessionAutoConfigurationJdbcTests extends AbstractSessionAutoConfigurationTests {
|
||||
|
||||
@Rule
|
||||
public ExpectedException expected = ExpectedException.none();
|
||||
public ExpectedException thrown = ExpectedException.none();
|
||||
|
||||
@Test
|
||||
public void defaultConfig() {
|
||||
|
|
@ -58,24 +55,6 @@ public class SessionAutoConfigurationJdbcTests extends AbstractSessionAutoConfig
|
|||
.queryForList("select * from SPRING_SESSION")).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void usingJpa() {
|
||||
load(Arrays.<Class<?>>asList(EmbeddedDataSourceConfiguration.class,
|
||||
HibernateJpaAutoConfiguration.class),
|
||||
"spring.session.store-type=jdbc");
|
||||
PlatformTransactionManager transactionManager = this.context
|
||||
.getBean(PlatformTransactionManager.class);
|
||||
assertThat(transactionManager.toString().contains("JpaTransactionManager"))
|
||||
.isTrue();
|
||||
assertThat(this.context.getBean(EntityManagerFactory.class)).isNotNull();
|
||||
JdbcOperationsSessionRepository repository = validateSessionRepository(
|
||||
JdbcOperationsSessionRepository.class);
|
||||
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
|
||||
.isEqualTo("SPRING_SESSION");
|
||||
assertThat(this.context.getBean(JdbcOperations.class)
|
||||
.queryForList("select * from SPRING_SESSION")).isEmpty();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void disableDatabaseInitializer() {
|
||||
load(Arrays.asList(EmbeddedDataSourceConfiguration.class,
|
||||
|
|
@ -86,7 +65,7 @@ public class SessionAutoConfigurationJdbcTests extends AbstractSessionAutoConfig
|
|||
JdbcOperationsSessionRepository.class);
|
||||
assertThat(new DirectFieldAccessor(repository).getPropertyValue("tableName"))
|
||||
.isEqualTo("SPRING_SESSION");
|
||||
this.expected.expect(BadSqlGrammarException.class);
|
||||
this.thrown.expect(BadSqlGrammarException.class);
|
||||
assertThat(this.context.getBean(JdbcOperations.class)
|
||||
.queryForList("select * from SPRING_SESSION")).isEmpty();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue