HealthController.java
package se.jobtechdev.personaldatagateway.api.controller;
import org.springframework.context.annotation.Primary;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import se.jobtechdev.personaldatagateway.api.Main;
import se.jobtechdev.personaldatagateway.api.generated.api.HealthApi;
import se.jobtechdev.personaldatagateway.api.generated.model.CheckStatus;
import se.jobtechdev.personaldatagateway.api.generated.model.Health;
import se.jobtechdev.personaldatagateway.api.generated.model.HealthChecks;
import se.jobtechdev.personaldatagateway.api.generated.model.Status;
import se.jobtechdev.personaldatagateway.api.util.LinkHeaderUtil;
import se.jobtechdev.personaldatagateway.api.util.ResponseFactory;
@Primary
@Controller
public class HealthController implements HealthApi {
@Override
@CrossOrigin(origins = "*")
public ResponseEntity<Health> health() {
final var liveness = new CheckStatus(Status.UP);
final var readiness = new CheckStatus(Main.isStarted() ? Status.UP : Status.DOWN);
final var checks = new HealthChecks(liveness, readiness);
final var response = ResponseFactory.createHealth(Status.UP, checks);
final var readinessStatus = (Main.isStarted()) ? HttpStatus.OK : HttpStatus.SERVICE_UNAVAILABLE;
final var headers = LinkHeaderUtil.createHeaders(new Class<?>[]{});
return ResponseEntity.status(readinessStatus)
.contentType(MediaType.APPLICATION_JSON)
.headers(headers)
.body(response);
}
}