Skip to content

Commit b812368

Browse files
committed
Improve null-safety of module/spring-boot-actuator-autoconfigure
See spring-projectsgh-46587
1 parent 86adab2 commit b812368

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

module/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityProbesHealthEndpointGroups.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,11 @@ private boolean isProbeGroup(String name) {
122122
}
123123
List<String> additionalPaths = new ArrayList<>();
124124
if (this.groups instanceof AdditionalPathsMapper additionalPathsMapper) {
125-
additionalPaths.addAll(additionalPathsMapper.getAdditionalPaths(endpointId, webServerNamespace));
125+
List<String> mappedAdditionalPaths = getAdditionalPaths(endpointId, webServerNamespace,
126+
additionalPathsMapper);
127+
if (mappedAdditionalPaths != null) {
128+
additionalPaths.addAll(mappedAdditionalPaths);
129+
}
126130
}
127131
additionalPaths.addAll(this.probeGroups.values()
128132
.stream()
@@ -134,4 +138,9 @@ private boolean isProbeGroup(String name) {
134138
return additionalPaths;
135139
}
136140

141+
private static @Nullable List<String> getAdditionalPaths(EndpointId endpointId,
142+
WebServerNamespace webServerNamespace, AdditionalPathsMapper additionalPathsMapper) {
143+
return additionalPathsMapper.getAdditionalPaths(endpointId, webServerNamespace);
144+
}
145+
137146
}

module/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/condition/ConditionsReportEndpoint.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public ConditionsReportEndpoint(ConfigurableApplicationContext context) {
6363

6464
@ReadOperation
6565
public ConditionsDescriptor conditions() {
66-
Map<String, ContextConditionsDescriptor> contextConditionEvaluations = new HashMap<>();
66+
Map<@Nullable String, ContextConditionsDescriptor> contextConditionEvaluations = new HashMap<>();
6767
ConfigurableApplicationContext target = this.context;
6868
while (target != null) {
6969
contextConditionEvaluations.put(target.getId(), new ContextConditionsDescriptor(target));
@@ -85,13 +85,13 @@ public ConditionsDescriptor conditions() {
8585
*/
8686
public static final class ConditionsDescriptor implements OperationResponseBody {
8787

88-
private final Map<String, ContextConditionsDescriptor> contexts;
88+
private final Map<@Nullable String, ContextConditionsDescriptor> contexts;
8989

90-
private ConditionsDescriptor(Map<String, ContextConditionsDescriptor> contexts) {
90+
private ConditionsDescriptor(Map<@Nullable String, ContextConditionsDescriptor> contexts) {
9191
this.contexts = contexts;
9292
}
9393

94-
public Map<String, ContextConditionsDescriptor> getContexts() {
94+
public Map<@Nullable String, ContextConditionsDescriptor> getContexts() {
9595
return this.contexts;
9696
}
9797

module/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/web/server/ChildManagementContextInitializer.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,32 +85,35 @@ public void start() {
8585
if (!(this.parentContext instanceof WebServerApplicationContext)) {
8686
return;
8787
}
88-
if (this.managementContext == null) {
89-
ConfigurableApplicationContext managementContext = createManagementContext();
88+
ConfigurableApplicationContext managementContext = this.managementContext;
89+
if (managementContext == null) {
90+
managementContext = createManagementContext();
9091
registerBeans(managementContext);
9192
managementContext.refresh();
9293
this.managementContext = managementContext;
9394
}
9495
else {
95-
this.managementContext.start();
96+
managementContext.start();
9697
}
9798
}
9899

99100
@Override
100101
public void stop() {
101-
if (this.managementContext != null) {
102+
ConfigurableApplicationContext managementContext = this.managementContext;
103+
if (managementContext != null) {
102104
if (this.parentContext.isClosed()) {
103-
this.managementContext.close();
105+
managementContext.close();
104106
}
105107
else {
106-
this.managementContext.stop();
108+
managementContext.stop();
107109
}
108110
}
109111
}
110112

111113
@Override
112114
public boolean isRunning() {
113-
return this.managementContext != null && this.managementContext.isRunning();
115+
ConfigurableApplicationContext managementContext = this.managementContext;
116+
return managementContext != null && managementContext.isRunning();
114117
}
115118

116119
@Override

0 commit comments

Comments
 (0)