diff --git a/config/checkstyle/checkstyle-suppressions.xml b/config/checkstyle/checkstyle-suppressions.xml
index 482da4a39e1..0b0e17a6c67 100644
--- a/config/checkstyle/checkstyle-suppressions.xml
+++ b/config/checkstyle/checkstyle-suppressions.xml
@@ -75,4 +75,5 @@
+
diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/AuditEvent.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/AuditEvent.java
index a0f894fbbba..bf8ee1fac2b 100644
--- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/AuditEvent.java
+++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/AuditEvent.java
@@ -53,7 +53,7 @@ public class AuditEvent implements Serializable {
private final String type;
- private final Map data;
+ private final Map data;
/**
* Create a new audit event for the current time.
@@ -61,7 +61,7 @@ public class AuditEvent implements Serializable {
* @param type the event type
* @param data the event data
*/
- public AuditEvent(String principal, String type, Map data) {
+ public AuditEvent(String principal, String type, Map data) {
this(Instant.now(), principal, type, data);
}
@@ -83,7 +83,7 @@ public class AuditEvent implements Serializable {
* @param type the event type
* @param data the event data
*/
- public AuditEvent(Instant timestamp, @Nullable String principal, String type, Map data) {
+ public AuditEvent(Instant timestamp, @Nullable String principal, String type, Map data) {
Assert.notNull(timestamp, "'timestamp' must not be null");
Assert.notNull(type, "'type' must not be null");
this.timestamp = timestamp;
@@ -92,8 +92,8 @@ public class AuditEvent implements Serializable {
this.data = Collections.unmodifiableMap(data);
}
- private static Map convert(String[] data) {
- Map result = new HashMap<>();
+ private static Map convert(String[] data) {
+ Map result = new HashMap<>();
for (String entry : data) {
int index = entry.indexOf('=');
if (index != -1) {
@@ -135,7 +135,7 @@ public class AuditEvent implements Serializable {
* Returns the event data.
* @return the event data
*/
- public Map getData() {
+ public Map getData() {
return this.data;
}
diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/listener/AuditApplicationEvent.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/listener/AuditApplicationEvent.java
index 357247a0152..92c05695a3b 100644
--- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/listener/AuditApplicationEvent.java
+++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/audit/listener/AuditApplicationEvent.java
@@ -19,6 +19,8 @@ package org.springframework.boot.actuate.audit.listener;
import java.time.Instant;
import java.util.Map;
+import org.jspecify.annotations.Nullable;
+
import org.springframework.boot.actuate.audit.AuditEvent;
import org.springframework.context.ApplicationEvent;
import org.springframework.util.Assert;
@@ -41,7 +43,7 @@ public class AuditApplicationEvent extends ApplicationEvent {
* @param data the event data
* @see AuditEvent#AuditEvent(String, String, Map)
*/
- public AuditApplicationEvent(String principal, String type, Map data) {
+ public AuditApplicationEvent(String principal, String type, Map data) {
this(new AuditEvent(principal, type, data));
}
@@ -66,7 +68,7 @@ public class AuditApplicationEvent extends ApplicationEvent {
* @param data the event data
* @see AuditEvent#AuditEvent(Instant, String, String, Map)
*/
- public AuditApplicationEvent(Instant timestamp, String principal, String type, Map data) {
+ public AuditApplicationEvent(Instant timestamp, String principal, String type, Map data) {
this(new AuditEvent(timestamp, principal, type, data));
}
diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator.java
index 08b95c2fed7..a83dc6639f2 100644
--- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator.java
+++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/availability/AvailabilityStateHealthIndicator.java
@@ -45,7 +45,7 @@ public class AvailabilityStateHealthIndicator extends AbstractHealthIndicator {
private final Class extends AvailabilityState> stateType;
- private final Map statusMappings = new HashMap<>();
+ private final Map<@Nullable AvailabilityState, Status> statusMappings = new HashMap<>();
/**
* Create a new {@link AvailabilityStateHealthIndicator} instance.
diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java
index 9f3b8f8e551..be8ea82da60 100644
--- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java
+++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/beans/BeansEndpoint.java
@@ -29,6 +29,7 @@ import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
import org.springframework.boot.actuate.endpoint.annotation.ReadOperation;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.lang.Contract;
import org.springframework.util.StringUtils;
/**
@@ -56,7 +57,7 @@ public class BeansEndpoint {
@ReadOperation
public BeansDescriptor beans() {
- Map contexts = new HashMap<>();
+ Map<@Nullable String, ContextBeansDescriptor> contexts = new HashMap<>();
ConfigurableApplicationContext context = this.context;
while (context != null) {
contexts.put(context.getId(), ContextBeansDescriptor.describing(context));
@@ -79,13 +80,13 @@ public class BeansEndpoint {
*/
public static final class BeansDescriptor implements OperationResponseBody {
- private final Map contexts;
+ private final Map<@Nullable String, ContextBeansDescriptor> contexts;
- private BeansDescriptor(Map contexts) {
+ private BeansDescriptor(Map<@Nullable String, ContextBeansDescriptor> contexts) {
this.contexts = contexts;
}
- public Map getContexts() {
+ public Map<@Nullable String, ContextBeansDescriptor> getContexts() {
return this.contexts;
}
@@ -113,6 +114,7 @@ public class BeansEndpoint {
return this.beans;
}
+ @Contract("!null -> !null")
private static @Nullable ContextBeansDescriptor describing(@Nullable ConfigurableApplicationContext context) {
if (context == null) {
return null;
diff --git a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java
index 56980a51453..1266264028c 100644
--- a/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java
+++ b/module/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/context/properties/ConfigurationPropertiesReportEndpoint.java
@@ -152,7 +152,7 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext
private ConfigurationPropertiesDescriptor getConfigurationProperties(ApplicationContext context,
Predicate beanFilterPredicate, boolean showUnsanitized) {
ObjectMapper mapper = getObjectMapper();
- Map contexts = new HashMap<>();
+ Map<@Nullable String, ContextConfigurationPropertiesDescriptor> contexts = new HashMap<>();
ApplicationContext target = context;
while (target != null) {
@@ -221,8 +221,8 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext
private ConfigurationPropertiesBeanDescriptor describeBean(ObjectMapper mapper, ConfigurationPropertiesBean bean,
boolean showUnsanitized) {
String prefix = bean.getAnnotation().prefix();
- Map serialized = safeSerialize(mapper, bean.getInstance(), prefix);
- Map properties = sanitize(prefix, serialized, showUnsanitized);
+ Map serialized = safeSerialize(mapper, bean.getInstance(), prefix);
+ Map properties = sanitize(prefix, serialized, showUnsanitized);
Map inputs = getInputs(prefix, serialized, showUnsanitized);
return new ConfigurationPropertiesBeanDescriptor(prefix, properties, inputs);
}
@@ -236,7 +236,7 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext
* @return the serialized instance
*/
@SuppressWarnings({ "unchecked" })
- private Map safeSerialize(ObjectMapper mapper, @Nullable Object bean, String prefix) {
+ private Map safeSerialize(ObjectMapper mapper, @Nullable Object bean, String prefix) {
try {
return new HashMap<>(mapper.convertValue(bean, Map.class));
}
@@ -254,11 +254,12 @@ public class ConfigurationPropertiesReportEndpoint implements ApplicationContext
* @return the sanitized map
*/
@SuppressWarnings("unchecked")
- private Map sanitize(String prefix, Map map, boolean showUnsanitized) {
+ private Map sanitize(String prefix, Map map,
+ boolean showUnsanitized) {
map.forEach((key, value) -> {
String qualifiedKey = getQualifiedKey(prefix, key);
if (value instanceof Map) {
- map.put(key, sanitize(qualifiedKey, (Map) value, showUnsanitized));
+ map.put(key, sanitize(qualifiedKey, (Map) value, showUnsanitized));
}
else if (value instanceof List) {
map.put(key, sanitize(qualifiedKey, (List