All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nablarch.fw.web.handler.HealthCheckEndpointHandler Maven / Gradle / Ivy

package nablarch.fw.web.handler;

import nablarch.fw.ExecutionContext;
import nablarch.fw.web.HttpRequest;
import nablarch.fw.web.HttpRequestHandler;
import nablarch.fw.web.HttpResponse;
import nablarch.fw.web.handler.health.HealthCheckResponseBuilder;
import nablarch.fw.web.handler.health.HealthCheckResult;
import nablarch.fw.web.handler.health.HealthChecker;

import java.util.*;

/**
 * ヘルスチェックを行うエンドポイントとなるハンドラ。
 *
 * DBやRedisなどの対象ごとのヘルスチェックは{@link HealthChecker}が行う。
 * ヘルスチェック結果からレスポンスの作成は{@link HealthCheckResponseBuilder}が行う。
 *
 * @author Kiyohito Itoh
 */
public class HealthCheckEndpointHandler implements HttpRequestHandler {

    private List healthCheckers = Collections.emptyList();
    private HealthCheckResponseBuilder healthCheckResponseBuilder = new HealthCheckResponseBuilder();

    @Override
    public HttpResponse handle(HttpRequest request, ExecutionContext context) {
        boolean isMergedHealthy = true;
        List targets = new ArrayList();
        for (HealthChecker healthChecker : healthCheckers) {
            final boolean isHealthy = healthChecker.check(request, context);
            isMergedHealthy = isMergedHealthy && isHealthy;
            targets.add(new HealthCheckResult.Target(healthChecker.getName(), isHealthy));
        }
        return healthCheckResponseBuilder.build(
                request, context, new HealthCheckResult(isMergedHealthy, targets));
    }

    /**
     * DBやRedisなどの対象ごとのヘルスチェックを行う{@link HealthChecker}を設定する。
     * @param healthCheckers DBやRedisなどの対象ごとのヘルスチェックを行う{@link HealthChecker}
     */
    public void setHealthCheckers(List healthCheckers) {
        this.healthCheckers = healthCheckers;
    }

    /**
     * ヘルスチェック結果からレスポンスを作成する{@link HealthCheckResponseBuilder}を設定する。
     * @param healthCheckResponseBuilder ヘルスチェック結果からレスポンスを作成する{@link HealthCheckResponseBuilder}
     */
    public void setHealthCheckResponseBuilder(HealthCheckResponseBuilder healthCheckResponseBuilder) {
        this.healthCheckResponseBuilder = healthCheckResponseBuilder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy