Skip to content

Commit 818a58d

Browse files
authored
Merge pull request #42444 from gsmet/fix-smallrye-health-roots
Fix consistency of SmallRye Health config roots
2 parents 7e7de79 + 5f3f6e7 commit 818a58d

File tree

7 files changed

+94
-16
lines changed

7 files changed

+94
-16
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.quarkus.smallrye.health.deployment;
2+
3+
import io.quarkus.runtime.annotations.ConfigItem;
4+
import io.quarkus.runtime.annotations.ConfigRoot;
5+
6+
/**
7+
* This class is deprecated, don't add any more properties here.
8+
*
9+
* When dropping this class please make the properties in {@link SmallRyeHealthBuildTimeConfig} non optional.
10+
*
11+
* @deprecated Use {@link SmallRyeHealthBuildTimeConfig} instead.
12+
*/
13+
@ConfigRoot(name = "health")
14+
@Deprecated(since = "3.14", forRemoval = true)
15+
public class DeprecatedHealthBuildTimeConfig {
16+
17+
/**
18+
* Whether extensions published health check should be enabled.
19+
*
20+
* @deprecated Use {@code quarkus.smallrye-health.extensions.enabled} instead.
21+
*/
22+
@ConfigItem(name = "extensions.enabled", defaultValue = "true")
23+
@Deprecated(since = "3.14", forRemoval = true)
24+
public boolean extensionsEnabled;
25+
26+
/**
27+
* Whether to include the Liveness and Readiness Health endpoints in the generated OpenAPI document
28+
*
29+
* @deprecated Use {@code quarkus.smallrye-health.openapi.included} instead.
30+
*/
31+
@ConfigItem(name = "openapi.included", defaultValue = "false")
32+
@Deprecated(since = "3.14", forRemoval = true)
33+
public boolean openapiIncluded;
34+
}

extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthActive.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44

55
public class SmallRyeHealthActive implements BooleanSupplier {
66

7-
private final HealthBuildTimeConfig config;
7+
private final SmallRyeHealthBuildTimeConfig config;
88

9-
SmallRyeHealthActive(HealthBuildTimeConfig config) {
9+
SmallRyeHealthActive(SmallRyeHealthBuildTimeConfig config) {
1010
this.config = config;
1111
}
1212

Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package io.quarkus.smallrye.health.deployment;
22

3+
import java.util.Optional;
4+
35
import io.quarkus.runtime.annotations.ConfigItem;
46
import io.quarkus.runtime.annotations.ConfigRoot;
57

6-
@ConfigRoot(name = "health")
7-
public class HealthBuildTimeConfig {
8+
@ConfigRoot(name = "smallrye-health")
9+
public class SmallRyeHealthBuildTimeConfig {
810
/**
911
* Activate or disable this extension. Disabling this extension means that no health related information is exposed.
1012
*/
@@ -14,12 +16,12 @@ public class HealthBuildTimeConfig {
1416
/**
1517
* Whether extensions published health check should be enabled.
1618
*/
17-
@ConfigItem(name = "extensions.enabled", defaultValue = "true")
18-
public boolean extensionsEnabled;
19+
@ConfigItem(name = "extensions.enabled", defaultValueDocumentation = "true")
20+
public Optional<Boolean> extensionsEnabled;
1921

2022
/**
2123
* Whether to include the Liveness and Readiness Health endpoints in the generated OpenAPI document
2224
*/
23-
@ConfigItem(name = "openapi.included", defaultValue = "false")
24-
public boolean openapiIncluded;
25+
@ConfigItem(name = "openapi.included", defaultValueDocumentation = "false")
26+
public Optional<Boolean> openapiIncluded;
2527
}

extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -118,15 +118,14 @@ class SmallRyeHealthProcessor {
118118
"key-files");
119119

120120
static class OpenAPIIncluded implements BooleanSupplier {
121-
HealthBuildTimeConfig config;
121+
SmallRyeHealthBuildTimeConfig smallryeHealthBuildTimeConfig;
122+
DeprecatedHealthBuildTimeConfig deprecatedHealthBuildTimeConfig;
122123

123124
public boolean getAsBoolean() {
124-
return config.openapiIncluded;
125+
return smallryeHealthBuildTimeConfig.openapiIncluded.orElse(deprecatedHealthBuildTimeConfig.openapiIncluded);
125126
}
126127
}
127128

128-
HealthBuildTimeConfig config;
129-
130129
@BuildStep
131130
List<HotDeploymentWatchedFileBuildItem> brandingFiles() {
132131
return Stream.of(BRANDING_LOGO_GENERAL,
@@ -140,8 +139,11 @@ List<HotDeploymentWatchedFileBuildItem> brandingFiles() {
140139

141140
@BuildStep
142141
void healthCheck(BuildProducer<AdditionalBeanBuildItem> buildItemBuildProducer,
143-
List<HealthBuildItem> healthBuildItems) {
144-
boolean extensionsEnabled = config.extensionsEnabled &&
142+
List<HealthBuildItem> healthBuildItems,
143+
SmallRyeHealthBuildTimeConfig smallryeHealthBuildTimeConfig,
144+
DeprecatedHealthBuildTimeConfig deprecatedHealthBuildTimeConfig) {
145+
boolean extensionsEnabled = smallryeHealthBuildTimeConfig.extensionsEnabled
146+
.orElse(deprecatedHealthBuildTimeConfig.extensionsEnabled) &&
145147
!ConfigProvider.getConfig().getOptionalValue("mp.health.disable-default-procedures", boolean.class)
146148
.orElse(false);
147149
if (extensionsEnabled) {

extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/DeactiveHealthWithConfigTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ class DeactiveHealthWithConfigTest {
1515
.withApplicationRoot((jar) -> jar
1616
.addClasses(BasicHealthCheck.class)
1717
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"))
18-
.overrideConfigKey("quarkus.health.enabled", "false");
18+
.overrideConfigKey("quarkus.smallrye-health.enabled", "false");
1919

2020
@Test
2121
void testAdditionalJsonPropertyInclusions() {
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.quarkus.smallrye.health.test;
2+
3+
import org.hamcrest.Matchers;
4+
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
5+
import org.jboss.shrinkwrap.api.asset.StringAsset;
6+
import org.junit.jupiter.api.Test;
7+
import org.junit.jupiter.api.extension.RegisterExtension;
8+
9+
import io.quarkus.test.QuarkusUnitTest;
10+
import io.restassured.RestAssured;
11+
12+
@Deprecated(since = "3.14", forRemoval = true)
13+
class DeprecatedHealthOpenAPITest {
14+
15+
private static final String OPEN_API_PATH = "/q/openapi";
16+
17+
@RegisterExtension
18+
static final QuarkusUnitTest config = new QuarkusUnitTest()
19+
.withApplicationRoot((jar) -> jar
20+
.addClasses(BasicHealthCheck.class, OpenApiRoute.class)
21+
.addAsResource(new StringAsset("quarkus.health.openapi.included=true\n"
22+
+ "quarkus.smallrye-openapi.store-schema-directory=target"), "application.properties")
23+
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"));
24+
25+
@Test
26+
void testOpenApiPathAccessResource() {
27+
28+
RestAssured.given().header("Accept", "application/json")
29+
.when().get(OPEN_API_PATH)
30+
.then()
31+
.header("Content-Type", "application/json;charset=UTF-8")
32+
.body("paths", Matchers.hasKey("/q/health/ready"))
33+
.body("paths", Matchers.hasKey("/q/health/live"))
34+
.body("paths", Matchers.hasKey("/q/health/started"))
35+
.body("paths", Matchers.hasKey("/q/health"))
36+
.body("components.schemas.HealthCheckResponse.type", Matchers.equalTo("object"));
37+
38+
}
39+
40+
}

extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/HealthOpenAPITest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class HealthOpenAPITest {
1717
static final QuarkusUnitTest config = new QuarkusUnitTest()
1818
.withApplicationRoot((jar) -> jar
1919
.addClasses(BasicHealthCheck.class, OpenApiRoute.class)
20-
.addAsResource(new StringAsset("quarkus.health.openapi.included=true\n"
20+
.addAsResource(new StringAsset("quarkus.smallrye-health.openapi.included=true\n"
2121
+ "quarkus.smallrye-openapi.store-schema-directory=target"), "application.properties")
2222
.addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"));
2323

0 commit comments

Comments
 (0)