diff --git a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/HealthBuildTimeConfig.java b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/HealthBuildTimeConfig.java index b7bbb6ec3f8168..432625ae9ceee8 100644 --- a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/HealthBuildTimeConfig.java +++ b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/HealthBuildTimeConfig.java @@ -5,6 +5,12 @@ @ConfigRoot(name = "health") public class HealthBuildTimeConfig { + /** + * Activate or disable this extension. Disabling this extension means that no health related information is exposed. + */ + @ConfigItem(name = "active", defaultValue = "true") + public boolean active; + /** * Whether extensions published health check should be enabled. */ diff --git a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthActive.java b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthActive.java new file mode 100644 index 00000000000000..b34fc1cbef3f69 --- /dev/null +++ b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthActive.java @@ -0,0 +1,18 @@ +package io.quarkus.smallrye.health.deployment; + +import java.util.function.BooleanSupplier; + +public class SmallRyeHealthActive implements BooleanSupplier { + + private final HealthBuildTimeConfig config; + + SmallRyeHealthActive(HealthBuildTimeConfig config) { + this.config = config; + } + + @Override + public boolean getAsBoolean() { + return config.active; + } + +} diff --git a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java index 8b7101bf107512..cf77fd7dee612d 100644 --- a/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java +++ b/extensions/smallrye-health/deployment/src/main/java/io/quarkus/smallrye/health/deployment/SmallRyeHealthProcessor.java @@ -35,6 +35,7 @@ import io.quarkus.deployment.Feature; import io.quarkus.deployment.annotations.BuildProducer; import io.quarkus.deployment.annotations.BuildStep; +import io.quarkus.deployment.annotations.BuildSteps; import io.quarkus.deployment.annotations.Consume; import io.quarkus.deployment.annotations.ExecutionTime; import io.quarkus.deployment.annotations.Record; @@ -80,6 +81,7 @@ import io.vertx.core.Handler; import io.vertx.ext.web.RoutingContext; +@BuildSteps(onlyIf = SmallRyeHealthActive.class) class SmallRyeHealthProcessor { private static final Logger LOG = Logger.getLogger(SmallRyeHealthProcessor.class); diff --git a/extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/DeactiveHealthWithConfigTest.java b/extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/DeactiveHealthWithConfigTest.java new file mode 100644 index 00000000000000..e283751ee48e90 --- /dev/null +++ b/extensions/smallrye-health/deployment/src/test/java/io/quarkus/smallrye/health/test/DeactiveHealthWithConfigTest.java @@ -0,0 +1,31 @@ +package io.quarkus.smallrye.health.test; + +import org.jboss.shrinkwrap.api.asset.EmptyAsset; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.test.QuarkusUnitTest; +import io.restassured.RestAssured; +import io.restassured.parsing.Parser; + +class DeactiveHealthWithConfigTest { + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .withApplicationRoot((jar) -> jar + .addClasses(BasicHealthCheck.class) + .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml")) + .overrideConfigKey("quarkus.health.active", "false"); + + @Test + void testAdditionalJsonPropertyInclusions() { + try { + RestAssured.defaultParser = Parser.JSON; + RestAssured.when().get("/q/health").then() + .statusCode(404); + } finally { + RestAssured.reset(); + } + } + +}