Browse Source

Improve Spring Session validation message

Closes gh-9284
pull/8428/merge
Stephane Nicoll 9 years ago
parent
commit
50876382db
  1. 19
      spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionAutoConfiguration.java
  2. 20
      spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java

19
spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/session/SessionAutoConfiguration.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2012-2016 the original author or authors.
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -38,7 +38,6 @@ import org.springframework.context.annotation.ImportSelector; @@ -38,7 +38,6 @@ import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.session.Session;
import org.springframework.session.SessionRepository;
import org.springframework.util.Assert;
/**
* {@link EnableAutoConfiguration Auto-configuration} for Spring Session.
@ -96,11 +95,17 @@ public class SessionAutoConfiguration { @@ -96,11 +95,17 @@ public class SessionAutoConfiguration {
@PostConstruct
public void checkSessionRepository() {
StoreType storeType = this.sessionProperties.getStoreType();
if (storeType != StoreType.NONE) {
Assert.notNull(this.sessionRepositoryProvider.getIfAvailable(),
"No session repository could be auto-configured, check your "
+ "configuration (session store type is '" + storeType
+ "')");
if (storeType != StoreType.NONE
&& this.sessionRepositoryProvider.getIfAvailable() == null) {
if (storeType != null) {
throw new IllegalArgumentException("No session repository could be "
+ "auto-configured, check your configuration (session store "
+ "type is '" + storeType.name().toLowerCase() + "')");
}
else {
throw new IllegalArgumentException("No Spring Session store is "
+ "configured: set the 'spring.session.store-type' property");
}
}
}

20
spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/session/SessionAutoConfigurationTests.java

@ -52,11 +52,19 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat @@ -52,11 +52,19 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat
@Test
public void contextFailsIfStoreTypeNotSet() {
this.thrown.expect(BeanCreationException.class);
this.thrown.expectMessage("No session repository could be auto-configured");
this.thrown.expectMessage("session store type is 'null'");
this.thrown.expectMessage("No Spring Session store is configured");
this.thrown.expectMessage("set the 'spring.session.store-type' property");
load();
}
@Test
public void contextFailsIfStoreTypeNotAvailable() {
this.thrown.expect(BeanCreationException.class);
this.thrown.expectMessage("No session repository could be auto-configured");
this.thrown.expectMessage("session store type is 'mongo'");
load("spring.session.store-type=mongo");
}
@Test
public void autoConfigurationDisabledIfStoreTypeSetToNone() {
load("spring.session.store-type=none");
@ -116,14 +124,6 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat @@ -116,14 +124,6 @@ public class SessionAutoConfigurationTests extends AbstractSessionAutoConfigurat
.isEqualTo("foobar");
}
@Test
public void validationFailsIfSessionRepositoryIsNotConfigured() {
this.thrown.expect(BeanCreationException.class);
this.thrown.expectMessage("No session repository could be auto-configured");
this.thrown.expectMessage("session store type is 'JDBC'");
load("spring.session.store-type=jdbc");
}
@Configuration
static class SessionRepositoryConfiguration {

Loading…
Cancel
Save