Skip to content

Commit

Permalink
[HWKMETRICS-185] Return proper JSON for errors from metrics service f…
Browse files Browse the repository at this point in the history
…ilter.
  • Loading branch information
Stefan Negrea committed Aug 13, 2015
1 parent 96ca30c commit 27467d3
Showing 1 changed file with 10 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.Response.Status;
import javax.ws.rs.ext.Provider;

Expand All @@ -39,6 +38,8 @@
import org.hawkular.metrics.api.jaxrs.MetricsServiceLifecycle.State;
import org.hawkular.metrics.api.jaxrs.handler.StatusHandler;

import com.fasterxml.jackson.databind.ObjectMapper;

/**
* @author Matt Wringe
*/
Expand Down Expand Up @@ -69,44 +70,29 @@ public void doFilter(ServletRequest request, ServletResponse response, FilterCha
return;
}

if (metricsServiceLifecycle.getState() == State.STARTING) {
// Fail since the Cassandra cluster is not yet up yet.
Response actualResponse = Response.status(Status.SERVICE_UNAVAILABLE)
.type(APPLICATION_JSON_TYPE)
.entity(new ApiError(STARTING))
.build();
ObjectMapper mapper = new ObjectMapper();

if (metricsServiceLifecycle.getState() == State.STARTING) {
final HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(actualResponse.getStatus());
httpResponse.setStatus(Status.SERVICE_UNAVAILABLE.getStatusCode());
httpResponse.setContentType(APPLICATION_JSON_TYPE.toString());
PrintWriter out = response.getWriter();
out.println(new ApiError(STARTING).toString());
mapper.writeValue(out, new ApiError(STARTING));
return;
} else if (metricsServiceLifecycle.getState() == State.FAILED) {
// Fail since an error has occured trying to start the Metrics service
Response actualResponse = Response.status(Status.INTERNAL_SERVER_ERROR)
.type(APPLICATION_JSON_TYPE)
.entity(new ApiError(FAILED))
.build();

final HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(actualResponse.getStatus());
httpResponse.setStatus(Status.INTERNAL_SERVER_ERROR.getStatusCode());
httpResponse.setContentType(APPLICATION_JSON_TYPE.toString());
PrintWriter out = response.getWriter();
out.println(new ApiError(FAILED).toString());
mapper.writeValue(out, new ApiError(FAILED));
return;
} else if (metricsServiceLifecycle.getState() == State.STOPPED
|| metricsServiceLifecycle.getState() == State.STOPPING) {
Response actualResponse = Response.status(Status.SERVICE_UNAVAILABLE)
.type(APPLICATION_JSON_TYPE)
.entity(new ApiError(STOPPED))
.build();

final HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.setStatus(actualResponse.getStatus());
httpResponse.setStatus(Status.SERVICE_UNAVAILABLE.getStatusCode());
httpResponse.setContentType(APPLICATION_JSON_TYPE.toString());
PrintWriter out = response.getWriter();
out.println(new ApiError(STOPPED).toString());
mapper.writeValue(out, new ApiError(STOPPED));
return;
}

Expand Down

0 comments on commit 27467d3

Please sign in to comment.