Refresh.java
package emissary.server.api;
import emissary.server.EmissaryServer;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.ws.rs.POST;
import jakarta.ws.rs.Path;
import jakarta.ws.rs.Produces;
import jakarta.ws.rs.core.Context;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.CompletableFuture;
@Path("") // context is api
public class Refresh {
private static final Logger LOG = LoggerFactory.getLogger(Refresh.class);
public static final String INVALIDATE = "invalidate";
public static final String REFRESH = "refresh";
@POST
@Path("/" + INVALIDATE)
@Produces(MediaType.TEXT_HTML)
public Response invalidatePlaces(@Context HttpServletRequest request) {
try {
EmissaryServer.invalidate();
return Response.ok("Invalidated services").build();
} catch (Exception e) {
LOG.warn("Exception trying to invalidate places", e);
return Response.serverError().entity("error trying to invalidate places").build();
}
}
@POST
@Path("/" + REFRESH)
@Produces(MediaType.TEXT_HTML)
public Response refreshPlaces(@Context HttpServletRequest request) {
try {
var unused = CompletableFuture.runAsync(EmissaryServer::refresh);
return Response.ok("Refreshing services").build();
} catch (RuntimeException e) {
LOG.warn("Exception trying to refresh places", e);
return Response.serverError().entity("error trying to reconfigure places").build();
}
}
}