//Dstl (c) Crown Copyright 2017
package uk.gov.dstl.baleen.core.web.servlets;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Provides a status message for users to check the API is available.
*
* Accessing this resource requires no permissions (and no authentication).
*
*
*
*/
public class StatusServlet extends AbstractApiServlet {
private static final Logger LOGGER = LoggerFactory.getLogger(StatusServlet.class);
private static final long serialVersionUID = 1L;
private final transient BaleenStatus status;
/**
* Short status message.
*
*
*
*/
public static class BaleenStatus {
private String name = "Baleen";
private String version = "2.4.0";
private String status = "ok";
private LocalDateTime timestamp;
/**
* Constructor for BaleenStatus, which also sets the timestamp at which
* this message is valid
*/
public BaleenStatus() {
timestamp = LocalDateTime.now();
}
/**
* Get the name of this instance
*
* @return The name of this instance
*/
public String getName() {
return name;
}
/**
* Set the name of this instance
*
* @param name
* The name of this instance
*/
public void setName(String name) {
this.name = name;
}
/**
* Get the version of this instance
*
* @return The version of this instance
*/
public String getVersion() {
return version;
}
/**
* Set the version of this instance
*
* @param version
* The version of this instance
*/
public void setVersion(String version) {
this.version = version;
}
/**
* Get the status of this instance
*
* @return The status of this instance
*/
public String getStatus() {
return status;
}
/**
* Set the status of this instance
*
* @param status
* The status of this instance
*/
public void setStatus(String status) {
this.status = status;
}
/**
* Get the uptime
*
* @return The time, in seconds, since this StatusMessage was created
*/
public long getUptime() {
return ChronoUnit.SECONDS.between(timestamp, LocalDateTime.now());
}
}
/**
* New instance.
*
*/
public StatusServlet() {
this(new BaleenStatus());
}
/**
* New instance with a specific status
*
* @param status Status to use
*/
public StatusServlet(BaleenStatus status) {
super(LOGGER, StatusServlet.class);
this.status = status;
}
@Override
protected void get(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
respondWithJson(resp, status);
}
}