From 1b6aa9e0361e8ec6491b3b9df8b9fe306c172bc7 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 30 Jul 2025 10:40:06 +0200 Subject: [PATCH] Add more nullability annotations to module/spring-boot-actuator See gh-46587 --- .../actuate/endpoint/annotation/EndpointDiscoverer.java | 6 ++++-- .../boot/actuate/health/HealthEndpointWebExtension.java | 5 +++-- .../actuate/health/ReactiveHealthEndpointWebExtension.java | 3 ++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscoverer.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscoverer.java index b63a3bbf9e7..118cf73e209 100644 --- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscoverer.java +++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/annotation/EndpointDiscoverer.java @@ -338,7 +338,8 @@ public abstract class EndpointDiscoverer, O exten return isFilterMatch(filter, getFilterEndpoint(endpointBean)); } - @SuppressWarnings({ "unchecked" }) + // Doesn't detect lambda with correct nullability + @SuppressWarnings({ "unchecked", "NullAway" }) private boolean isFilterMatch(EndpointFilter filter, E endpoint) { Boolean result = LambdaSafe.callback(EndpointFilter.class, filter, endpoint) .withLogger(EndpointDiscoverer.class) @@ -357,7 +358,8 @@ public abstract class EndpointDiscoverer, O exten return false; } - @SuppressWarnings("unchecked") + // Doesn't detect lambda with correct nullability + @SuppressWarnings({ "unchecked", "NullAway" }) private boolean isFilterMatch(OperationFilter filter, Operation operation, EndpointId endpointId, Access defaultAccess) { Boolean result = LambdaSafe.callback(OperationFilter.class, filter, operation) diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/HealthEndpointWebExtension.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/HealthEndpointWebExtension.java index af3d36db46a..010a5599874 100644 --- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/HealthEndpointWebExtension.java +++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/HealthEndpointWebExtension.java @@ -80,8 +80,9 @@ public class HealthEndpointWebExtension extends HealthEndpointSupport health(ApiVersion apiVersion, WebServerNamespace serverNamespace, - SecurityContext securityContext, boolean showAll, String... path) { + public WebEndpointResponse health(ApiVersion apiVersion, + @Nullable WebServerNamespace serverNamespace, SecurityContext securityContext, boolean showAll, + String... path) { Result result = getResult(apiVersion, serverNamespace, securityContext, showAll, path); if (result == null) { return (Arrays.equals(path, EMPTY_PATH)) diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/ReactiveHealthEndpointWebExtension.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/ReactiveHealthEndpointWebExtension.java index 9ba3d44082a..fd4ff9317de 100644 --- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/ReactiveHealthEndpointWebExtension.java +++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/health/ReactiveHealthEndpointWebExtension.java @@ -81,7 +81,8 @@ public class ReactiveHealthEndpointWebExtension } public Mono> health(ApiVersion apiVersion, - WebServerNamespace serverNamespace, SecurityContext securityContext, boolean showAll, String... path) { + @Nullable WebServerNamespace serverNamespace, SecurityContext securityContext, boolean showAll, + String... path) { Result> result = getResult(apiVersion, serverNamespace, securityContext, showAll, path); if (result == null) {