package hudson.plugins.tfs.util;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.kohsuke.stapler.HttpResponses;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;
public class EndpointHelper {
public static final ObjectMapper MAPPER;
static {
MAPPER = new ObjectMapper();
MAPPER.enable(DeserializationFeature.READ_ENUMS_USING_TO_STRING);
MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
}
public static void error(final int code, final Throwable cause) {
throw new HttpResponses.HttpResponseException(cause) {
public void generateResponse(final StaplerRequest req, final StaplerResponse rsp, final Object node) throws IOException, ServletException {
rsp.setStatus(code);
rsp.setHeader("X-Error-Message", cause.getMessage());
rsp.setContentType("text/plain;charset=UTF-8");
final PrintWriter w = new PrintWriter(rsp.getWriter());
// TODO: serialize "cause" to JSON write that, instead
cause.printStackTrace(w);
w.close();
}
};
}
}