Skip to content

Commit 41cedc9

Browse files
philwebbwilkinsona
authored andcommitted
Create spring-boot-health module
Issue: 46155
1 parent 5c78898 commit 41cedc9

File tree

288 files changed

+3104
-2241
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

288 files changed

+3104
-2241
lines changed

settings.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ include "spring-boot-project:spring-boot-gson"
9595
include "spring-boot-project:spring-boot-h2console"
9696
include "spring-boot-project:spring-boot-hateoas"
9797
include "spring-boot-project:spring-boot-hazelcast"
98+
include "spring-boot-project:spring-boot-health"
9899
include "spring-boot-project:spring-boot-hibernate"
99100
include "spring-boot-project:spring-boot-http-client"
100101
include "spring-boot-project:spring-boot-http-converter"

spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@ description = "Spring Boot Actuator AutoConfigure"
2828
dependencies {
2929
api(project(":spring-boot-project:spring-boot-actuator"))
3030
api(project(":spring-boot-project:spring-boot-autoconfigure"))
31-
31+
3232
implementation("com.fasterxml.jackson.core:jackson-databind")
3333
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
3434

35+
optional(project(":spring-boot-project:spring-boot-health"))
3536
optional(project(":spring-boot-project:spring-boot-web-server"))
3637

3738
optional("com.fasterxml.jackson.core:jackson-databind")

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/availability/AvailabilityHealthContributorAutoConfiguration.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2424
import org.springframework.boot.autoconfigure.availability.ApplicationAvailabilityAutoConfiguration;
2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty;
26+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2627
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2728
import org.springframework.boot.availability.ApplicationAvailability;
29+
import org.springframework.boot.health.contributor.Health;
2830
import org.springframework.context.annotation.Bean;
2931

3032
/**
@@ -35,6 +37,7 @@
3537
* @since 2.3.2
3638
*/
3739
@AutoConfiguration(after = ApplicationAvailabilityAutoConfiguration.class)
40+
@ConditionalOnClass(Health.class)
3841
public class AvailabilityHealthContributorAutoConfiguration {
3942

4043
@Bean

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/endpoint/jackson/JacksonEndpointAutoConfiguration.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.endpoint.jackson;
1818

19+
import java.util.HashSet;
20+
import java.util.Set;
21+
1922
import com.fasterxml.jackson.annotation.JsonInclude.Include;
2023
import com.fasterxml.jackson.databind.ObjectMapper;
2124
import com.fasterxml.jackson.databind.SerializationFeature;
@@ -27,6 +30,7 @@
2730
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2831
import org.springframework.context.annotation.Bean;
2932
import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
33+
import org.springframework.util.ClassUtils;
3034

3135
/**
3236
* {@link EnableAutoConfiguration Auto-configuration} for Endpoint Jackson support.
@@ -38,6 +42,8 @@
3842
@SuppressWarnings("removal")
3943
public class JacksonEndpointAutoConfiguration {
4044

45+
private static final String CONTRIBUTED_HEALTH = "org.springframework.boot.health.contributor.ContributedHealth";
46+
4147
@Bean
4248
@ConditionalOnBooleanProperty(name = "management.endpoints.jackson.isolated-object-mapper", matchIfMissing = true)
4349
@ConditionalOnClass({ ObjectMapper.class, Jackson2ObjectMapperBuilder.class })
@@ -47,7 +53,24 @@ public EndpointObjectMapper endpointObjectMapper() {
4753
SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS)
4854
.serializationInclusion(Include.NON_NULL)
4955
.build();
50-
return () -> objectMapper;
56+
Set<Class<?>> supportedTypes = new HashSet<>(EndpointObjectMapper.DEFAULT_SUPPORTED_TYPES);
57+
if (ClassUtils.isPresent(CONTRIBUTED_HEALTH, null)) {
58+
supportedTypes.add(ClassUtils.resolveClassName(CONTRIBUTED_HEALTH, null));
59+
}
60+
return new EndpointObjectMapper() {
61+
62+
@Override
63+
public ObjectMapper get() {
64+
return objectMapper;
65+
}
66+
67+
@Override
68+
public Set<Class<?>> getSupportedTypes() {
69+
return supportedTypes;
70+
}
71+
72+
};
73+
5174
}
5275

5376
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/AutoConfiguredHealthContributorRegistry.java

Lines changed: 0 additions & 55 deletions
This file was deleted.

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/AutoConfiguredReactiveHealthContributorRegistry.java

Lines changed: 0 additions & 55 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Copyright 2012-present the original author or authors.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* https://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
17+
package org.springframework.boot.actuate.autoconfigure.health;
18+
19+
import java.util.Collections;
20+
import java.util.Set;
21+
22+
import org.springframework.boot.actuate.health.HealthEndpointGroups;
23+
import org.springframework.boot.health.registry.HealthContributorNameValidator;
24+
import org.springframework.util.Assert;
25+
26+
/**
27+
* {@link HealthContributorNameValidator} to ensure names don't clash with groups.
28+
*
29+
* @author Phillip Webb
30+
*/
31+
class GroupsHealthContributorNameValidator implements HealthContributorNameValidator {
32+
33+
private final Set<String> groupNames;
34+
35+
GroupsHealthContributorNameValidator(HealthEndpointGroups groups) {
36+
this.groupNames = (groups != null) ? groups.getNames() : Collections.emptySet();
37+
}
38+
39+
@Override
40+
public void validate(String name) throws IllegalStateException {
41+
Assert.state(!this.groupNames.contains(name),
42+
() -> "HealthContributor with name \"" + name + "\" clashes with group");
43+
}
44+
45+
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthEndpointAutoConfiguration.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@
2020
import org.springframework.boot.actuate.health.HealthEndpoint;
2121
import org.springframework.boot.autoconfigure.AutoConfiguration;
2222
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
23+
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
24+
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2325
import org.springframework.boot.context.properties.EnableConfigurationProperties;
26+
import org.springframework.boot.health.contributor.Health;
2427
import org.springframework.context.annotation.Import;
2528

2629
/**
@@ -32,11 +35,14 @@
3235
* @author Scott Frederick
3336
* @since 2.0.0
3437
*/
35-
@AutoConfiguration
38+
@AutoConfiguration(
39+
afterName = "org.springframework.boot.health.autoconfigure.registry.HealthContributorRegistryAutoConfiguration")
40+
@ConditionalOnClass(Health.class)
41+
@ConditionalOnBean(type = "org.springframework.boot.health.registry.HealthContributorRegistry")
3642
@ConditionalOnAvailableEndpoint(HealthEndpoint.class)
3743
@EnableConfigurationProperties(HealthEndpointProperties.class)
38-
@Import({ HealthEndpointConfiguration.class, ReactiveHealthEndpointConfiguration.class,
39-
HealthEndpointWebExtensionConfiguration.class, HealthEndpointReactiveWebExtensionConfiguration.class })
44+
@Import({ HealthEndpointConfiguration.class, HealthEndpointWebExtensionConfiguration.class,
45+
HealthEndpointReactiveWebExtensionConfiguration.class })
4046
public class HealthEndpointAutoConfiguration {
4147

4248
}

0 commit comments

Comments
 (0)