@RequestMapping()
@ResponseBody
public Object error(HttpServletRequest request) {
Object specialError = request.getAttribute(SPECIAL_ERROR_FLAG);
if (specialError instanceof Resp.FallbackException) {
return ResponseEntity.status(FALL_BACK_STATUS).contentType(MediaType.APPLICATION_JSON_UTF8).body(((Resp.FallbackException) specialError).getMessage());
}
Map<String, Object> error = getErrorAttributes(request, true);
String path;
if (error.containsKey("path")) {
path = (String) error.getOrDefault("path", Dew.context().getRequestUri());
} else {
path = ((RequestFacade) ((ServletRequestWrapper) request).getRequest()).getRequestURI();
}
int statusCode = (int) error.getOrDefault("status", -1);
String message = error.getOrDefault("message", "").toString();
String exClass = (String) error.getOrDefault("exception", "");
String exMsg = (String) error.getOrDefault("error", "");
List exDetail = null;
if (error.containsKey("errors") && !((List) error.get("errors")).isEmpty()) {
exDetail = (List) error.get("errors");
}
Object[] result = error(request, path, statusCode, message, exClass, exMsg, exDetail, (Throwable) specialError);
if (statusCode > 499) {
Dew.notify.sendAsync(Dew.dewConfig.getBasic().getFormat().getErrorFlag(), (Throwable) specialError, ((Throwable) specialError).getMessage());
}
return ResponseEntity.status((int) result[0]).contentType(MediaType.APPLICATION_JSON_UTF8).body(result[1]);
}