Browse Source

Improve null-safety of module/spring-boot-web-server

See gh-47263
pull/47637/head
Moritz Halbritter 2 months ago
parent
commit
5906185fd8
  1. 2
      module/spring-boot-jetty/src/main/java/org/springframework/boot/jetty/servlet/JettyServletWebServerFactory.java
  2. 3
      module/spring-boot-session-data-mongodb/src/dockerTest/java/org/springframework/boot/session/data/mongodb/autoconfigure/SessionDataMongoAutoConfigurationTests.java
  3. 2
      module/spring-boot-tomcat/src/main/java/org/springframework/boot/tomcat/servlet/TomcatServletWebServerFactory.java
  4. 6
      module/spring-boot-web-server/src/main/java/org/springframework/boot/web/server/servlet/Session.java

2
module/spring-boot-jetty/src/main/java/org/springframework/boot/jetty/servlet/JettyServletWebServerFactory.java

@ -89,6 +89,7 @@ import org.springframework.boot.web.server.servlet.ServletWebServerSettings; @@ -89,6 +89,7 @@ import org.springframework.boot.web.server.servlet.ServletWebServerSettings;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.ResourceLoader;
import org.springframework.lang.Contract;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.CollectionUtils;
@ -263,6 +264,7 @@ public class JettyServletWebServerFactory extends JettyWebServerFactory @@ -263,6 +264,7 @@ public class JettyServletWebServerFactory extends JettyWebServerFactory
}
}
@Contract("null -> true")
private boolean isNegative(@Nullable Duration sessionTimeout) {
return sessionTimeout == null || sessionTimeout.isNegative();
}

3
module/spring-boot-session-data-mongodb/src/dockerTest/java/org/springframework/boot/session/data/mongodb/autoconfigure/SessionDataMongoAutoConfigurationTests.java

@ -18,6 +18,7 @@ package org.springframework.boot.session.data.mongodb.autoconfigure; @@ -18,6 +18,7 @@ package org.springframework.boot.session.data.mongodb.autoconfigure;
import java.time.Duration;
import org.jspecify.annotations.Nullable;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.testcontainers.containers.MongoDBContainer;
@ -90,7 +91,7 @@ class SessionDataMongoAutoConfigurationTests extends AbstractSessionAutoConfigur @@ -90,7 +91,7 @@ class SessionDataMongoAutoConfigurationTests extends AbstractSessionAutoConfigur
}
private ContextConsumer<AssertableWebApplicationContext> validateSpringSessionUsesMongo(String collectionName,
Duration timeout) {
@Nullable Duration timeout) {
return (context) -> {
MongoIndexedSessionRepository repository = validateSessionRepository(context,
MongoIndexedSessionRepository.class);

2
module/spring-boot-tomcat/src/main/java/org/springframework/boot/tomcat/servlet/TomcatServletWebServerFactory.java

@ -85,6 +85,7 @@ import org.springframework.boot.web.server.servlet.ServletWebServerSettings; @@ -85,6 +85,7 @@ import org.springframework.boot.web.server.servlet.ServletWebServerSettings;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.ResourceLoaderAware;
import org.springframework.core.io.ResourceLoader;
import org.springframework.lang.Contract;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.CollectionUtils;
@ -382,6 +383,7 @@ public class TomcatServletWebServerFactory extends TomcatWebServerFactory @@ -382,6 +383,7 @@ public class TomcatServletWebServerFactory extends TomcatWebServerFactory
return Math.max(sessionTimeout.toMinutes(), 1);
}
@Contract("null -> true")
private boolean isZeroOrLess(@Nullable Duration sessionTimeout) {
return sessionTimeout == null || sessionTimeout.isNegative() || sessionTimeout.isZero();
}

6
module/spring-boot-web-server/src/main/java/org/springframework/boot/web/server/servlet/Session.java

@ -41,7 +41,7 @@ public class Session { @@ -41,7 +41,7 @@ public class Session {
* Session timeout. If a duration suffix is not specified, seconds will be used.
*/
@DurationUnit(ChronoUnit.SECONDS)
private Duration timeout = Duration.ofMinutes(30);
private @Nullable Duration timeout = Duration.ofMinutes(30);
/**
* Session tracking modes.
@ -63,11 +63,11 @@ public class Session { @@ -63,11 +63,11 @@ public class Session {
private final SessionStoreDirectory sessionStoreDirectory = new SessionStoreDirectory();
public Duration getTimeout() {
public @Nullable Duration getTimeout() {
return this.timeout;
}
public void setTimeout(Duration timeout) {
public void setTimeout(@Nullable Duration timeout) {
this.timeout = timeout;
}

Loading…
Cancel
Save