diff --git a/nima/observe/health/src/main/java/io/helidon/nima/observe/health/HealthFeature.java b/nima/observe/health/src/main/java/io/helidon/nima/observe/health/HealthFeature.java index 96beee6f345..48a699be101 100644 --- a/nima/observe/health/src/main/java/io/helidon/nima/observe/health/HealthFeature.java +++ b/nima/observe/health/src/main/java/io/helidon/nima/observe/health/HealthFeature.java @@ -24,6 +24,8 @@ import io.helidon.common.HelidonServiceLoader; import io.helidon.config.Config; +import io.helidon.config.ConfigSources; +import io.helidon.config.spi.ConfigSource; import io.helidon.health.HealthCheck; import io.helidon.health.HealthCheckType; import io.helidon.health.spi.HealthCheckProvider; @@ -139,6 +141,8 @@ public static class Builder extends HelidonFeatureSupport.Builder liveChecks = new ArrayList<>(); private final List startChecks = new ArrayList<>(); + private final List configs = new ArrayList<>(); + private boolean enabled = true; private boolean details = false; @@ -148,11 +152,17 @@ public static class Builder extends HelidonFeatureSupport.Builder Config.empty(); + case 1 -> configs.get(0); + default -> effectiveConfig(); + }; providers.build() .asList() .stream() - // TODO use configuration - .map(provider -> provider.healthChecks(Config.empty())) + .map(provider -> provider.healthChecks(config)) .flatMap(Collection::stream) .forEach(it -> addCheck(it, it.type())); return new HealthFeature(this); @@ -194,6 +204,7 @@ public Builder details(boolean details) { */ public Builder config(Config config) { super.config(config); + configs.add(config); config.get("enabled").asBoolean().ifPresent(this::enabled); config.get("details").asBoolean().ifPresent(this::details); @@ -242,5 +253,12 @@ public Builder useSystemServices(boolean useServices) { providers.useSystemServiceLoader(useServices); return this; } + + private Config effectiveConfig() { + + return Config.create(configs.stream() + .map(ConfigSources::create) + .toArray(ConfigSource[]::new)); + } } }