From 35c6dc4e3b1455db255fc22d9bf90a5085eb8e6e Mon Sep 17 00:00:00 2001 From: "petar.tahchiev" Date: Wed, 29 Nov 2017 13:53:49 +0200 Subject: [PATCH 1/2] Fix NullPointer when requesting a session that does not exist See gh-11202 --- .../boot/actuate/session/SessionsEndpoint.java | 3 +++ .../session/SessionsEndpointWebIntegrationTests.java | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/session/SessionsEndpoint.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/session/SessionsEndpoint.java index 36554ce435a..10c29f69bdd 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/session/SessionsEndpoint.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/session/SessionsEndpoint.java @@ -60,6 +60,9 @@ public class SessionsEndpoint { @ReadOperation public SessionDescriptor getSession(@Selector String sessionId) { Session session = this.sessionRepository.findById(sessionId); + if (session == null) { + return null; + } return new SessionDescriptor(session); } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java index 14ff946e074..ab80decafb6 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java @@ -80,6 +80,12 @@ public class SessionsEndpointWebIntegrationTests { .isEqualTo(new JSONArray().appendElement(session.getId())); } + @Test + public void sessionForIdNotFound() { + client.get().uri((builder) -> builder.path("/actuator/sessions/some-session-id-that-does-not-exist") + .build()).exchange().expectStatus().isNotFound(); + } + @Configuration protected static class TestConfiguration { From b6609ff3921824eee50d546c9312aac29dc2f1b2 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 30 Nov 2017 10:05:30 +0100 Subject: [PATCH 2/2] Polish "Fix NullPointer when requesting a session that does not exist" Closes gh-11202 --- .../boot/actuate/session/SessionsEndpointTests.java | 6 ++++++ .../session/SessionsEndpointWebIntegrationTests.java | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointTests.java index 871c7cb8e79..b0dd0df0474 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointTests.java @@ -81,6 +81,12 @@ public class SessionsEndpointTests { assertThat(result.isExpired()).isEqualTo(session.isExpired()); } + @Test + public void getSessionWithIdNotFound() { + given(this.repository.findById("not-found")).willReturn(null); + assertThat(this.endpoint.getSession("not-found")).isNull(); + } + @Test public void deleteSession() { this.endpoint.deleteSession(session.getId()); diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java index ab80decafb6..0fb7578ec35 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/session/SessionsEndpointWebIntegrationTests.java @@ -82,8 +82,10 @@ public class SessionsEndpointWebIntegrationTests { @Test public void sessionForIdNotFound() { - client.get().uri((builder) -> builder.path("/actuator/sessions/some-session-id-that-does-not-exist") - .build()).exchange().expectStatus().isNotFound(); + client.get() + .uri((builder) -> builder.path( + "/actuator/sessions/session-id-not-found").build()) + .exchange().expectStatus().isNotFound(); } @Configuration