diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionDatabaseInitializer.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionDatabaseInitializer.java index bac0adf0b6e..dbd3cbba267 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionDatabaseInitializer.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/JdbcSessionDatabaseInitializer.java @@ -16,6 +16,10 @@ package org.springframework.boot.autoconfigure.session; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + import javax.annotation.PostConstruct; import javax.sql.DataSource; @@ -34,6 +38,15 @@ import org.springframework.util.Assert; */ public class JdbcSessionDatabaseInitializer { + private static Map ALIASES; + + static { + Map aliases = new HashMap(); + aliases.put("hsql", "hsqldb"); + aliases.put("postgres", "postgresql"); + ALIASES = Collections.unmodifiableMap(aliases); + } + private SessionProperties properties; private DataSource dataSource; @@ -53,26 +66,28 @@ public class JdbcSessionDatabaseInitializer { @PostConstruct protected void initialize() { 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); + schemaLocation = schemaLocation.replace("@@platform@@", getPlatform()); populator.addScript(this.resourceLoader.getResource(schemaLocation)); populator.setContinueOnError(true); DatabasePopulatorUtils.execute(populator, this.dataSource); } } - private String getDatabaseType() { + private String getPlatform() { + String databaseName = getDatabaseName(); + if (ALIASES.containsKey(databaseName)) { + return ALIASES.get(databaseName); + } + return databaseName; + } + + private String getDatabaseName() { try { - String databaseProductName = JdbcUtils.extractDatabaseMetaData( - this.dataSource, "getDatabaseProductName").toString(); + String databaseProductName = JdbcUtils + .extractDatabaseMetaData(this.dataSource, "getDatabaseProductName") + .toString(); return JdbcUtils.commonDatabaseName(databaseProductName).toLowerCase(); } catch (MetaDataAccessException ex) { diff --git a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionProperties.java b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionProperties.java index 5fa4c607192..5134a91a337 100644 --- a/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionProperties.java +++ b/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionProperties.java @@ -136,7 +136,7 @@ public class SessionProperties { } public Initializer getInitializer() { - return initializer; + return this.initializer; } public static class Initializer { diff --git a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java index 10381eae152..c9fe9d7f521 100644 --- a/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java +++ b/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationJdbcTests.java @@ -37,7 +37,8 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Vedran Pavic * @author Stephane Nicoll */ -public class SessionAutoConfigurationJdbcTests extends AbstractSessionAutoConfigurationTests { +public class SessionAutoConfigurationJdbcTests + extends AbstractSessionAutoConfigurationTests { @Rule public ExpectedException thrown = ExpectedException.none();