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

net.javalib.isb.utils.PingStatusHelper Maven / Gradle / Ivy

package net.javalib.isb.utils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.health.Status;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component;

@Component
public class PingStatusHelper {
    private static final Logger LOG = LoggerFactory.getLogger(PingStatusHelper.class);
    private List pingIndicators;
    private List statusIndicators;

    @Autowired
    public PingStatusHelper(Map healthIndicators, @Value(value = "${ping.optional:}") String optionalIndicators) {
        this.statusIndicators = new ArrayList<>(healthIndicators.values());
        this.pingIndicators = new ArrayList<>();
        for (Map.Entry entry : healthIndicators.entrySet()) {
            if (!optionalIndicators.contains(entry.getKey())) {
                this.pingIndicators.add(entry.getValue());
            }
        }
    }

    public ResponseEntity ping() {
        return getResponseForHealthIndicators(pingIndicators);
    }

    public ResponseEntity status() {
        return getResponseForHealthIndicators(statusIndicators);
    }

    protected ResponseEntity getResponseForHealthIndicators(List indicators) {
        for (HealthIndicator indicator : indicators) {
            if (Status.UP != indicator.health().getStatus()) {
                LOG.warn("Returning 'DOWN' due to {}", indicator.health());
                return new ResponseEntity("DOWN", HttpStatus.SERVICE_UNAVAILABLE);
            }
        }
        return new ResponseEntity("UP", HttpStatus.OK);
    }

    public List getPingIndicators() {
        return pingIndicators;
    }

    public List getStatusIndicators() {
        return statusIndicators;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy