ResponseStatus responseStatus = findMergedAnnotation(method, ResponseStatus.class); if (responseStatus != null) { operation.response(responseStatus.value().value(), new Response().description(responseStatus.reason()));
public static int httpStatusCode(OperationContext context) { Optional<ResponseStatus> responseStatus = context.findAnnotation(ResponseStatus.class); int httpStatusCode = HttpStatus.OK.value(); if (responseStatus.isPresent()) { httpStatusCode = responseStatus.get().value().value(); } return httpStatusCode; }
@ControllerAdvice public class ExceptionTranslator { private final Logger log = LoggerFactory.getLogger(ExceptionTranslator .class); @ExceptionHandler(RuntimeException.class) public ResponseEntity<ErrorDTO> processRuntimeException(HttpServletRequest req, RuntimeException ex) throws Exception { ErrorDTO errorDTO; ResponseStatus responseStatus = AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class); if (responseStatus != null) { errorDTO = new ErrorDTO(req.getRequestURI(), responseStatus.value().toString(), ex.getMessage()); } else { errorDTO = new ErrorDTO(req.getRequestURI(), HttpStatus.INTERNAL_SERVER_ERROR.toString(), ex.getMessage()); } log.debug(errorDTO.toString()); return new ResponseEntity(errorDTO, HttpStatus.valueOf(Integer.valueOf(errorDTO.getCode()))); } }
private int httpStatusCode(HandlerMethod handlerMethod) { Optional<ResponseStatus> responseStatus = fromNullable(getAnnotation(handlerMethod.getMethod(), ResponseStatus.class)); int httpStatusCode = HttpStatus.OK.value(); if (responseStatus.isPresent()) { httpStatusCode = responseStatus.get().value().value(); } return httpStatusCode; }
protected ModelAndView resolveResponseStatus(ResponseStatus responseStatus, HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { int statusCode = responseStatus.value().value(); String reason = responseStatus.reason(); if (this.messageSource != null) { reason = this.messageSource.getMessage(reason, null, reason, LocaleContextHolder.getLocale()); } if (!StringUtils.hasLength(reason)) { response.sendError(statusCode); } else { response.sendError(statusCode, reason); } return new ModelAndView(); }
@ControllerAdvice public class MVCExceptionHandler { private static final Logger log = LogManager.getLogger(); @ExceptionHandler(Exception.class) public ModelAndView defaultErrorHandler(HttpServletRequest req, HttpServletResponse res, Exception ex) throws Exception { // If the exception is annotated with @ResponseStatus check if it's a 404 in which case deal with it, otherwise 500 it. if (AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class) != null) { ResponseStatus rs = AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class); if (HttpStatus.NOT_FOUND.equals(rs.value())) { res.setStatus(HttpStatus.NOT_FOUND.value()); return new ModelAndView("error/404"); } } log.error("Error while loading", ex); return new ModelAndView("error/500"); } }
private int httpStatusCode(HandlerMethod handlerMethod) { Optional<ResponseStatus> responseStatus = Annotations.findResponseStatusAnnotation(handlerMethod.getMethod()); int httpStatusCode = 200; if (responseStatus.isPresent()) { httpStatusCode = responseStatus.get().value().value(); } return httpStatusCode; }
public static String buildResponseStatusCode(Method method) { if (method.isAnnotationPresent(ResponseStatus.class)) { ResponseStatus responseStatus = method.getAnnotation(ResponseStatus.class); return responseStatus.value().toString() + " - " + responseStatus.value().getReasonPhrase(); } else { return HttpStatus.OK.toString() + " - " + "OK"; } }
@ExceptionHandler(Exception.class) public ResponseEntity<Error> processRuntimeException(Exception ex) throws Exception { BodyBuilder builder; Error error; ResponseStatus responseStatus = AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class); if (responseStatus != null) { builder = ResponseEntity.status(responseStatus.value()); error = new Error("error." + responseStatus.value().value(), responseStatus.reason()); } else { builder = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR); error = new Error(ErrorConstants.ERR_INTERNAL_SERVER_ERROR, "Internal server error"); } return builder.body(error); } }
public static String message(OperationContext context) { Optional<ResponseStatus> responseStatus = context.findAnnotation(ResponseStatus.class); String reasonPhrase = HttpStatus.OK.getReasonPhrase(); if (responseStatus.isPresent()) { reasonPhrase = responseStatus.get().reason(); if (reasonPhrase.isEmpty()) { reasonPhrase = responseStatus.get().value().getReasonPhrase(); } } return reasonPhrase; }
@ExceptionHandler(Exception.class) public ResponseEntity<Error> processRuntimeException(Exception ex) throws Exception { BodyBuilder builder; Error error; ResponseStatus responseStatus = AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class); if (responseStatus != null) { builder = ResponseEntity.status(responseStatus.value()); error = new Error("error." + responseStatus.value().value(), responseStatus.reason()); } else { builder = ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR); error = new Error(ErrorConstants.ERR_INTERNAL_SERVER_ERROR, "Internal server error"); } return builder.body(error); } }
@Override public String getReasonPhrase() { return status.reason().isEmpty() ? status.value().getReasonPhrase() : status.reason(); }
public static String buildResponseStatusCode(Method method) { if (isAnnotated(method, ResponseStatus.class)) { ResponseStatus responseStatus = getAnnotation(method, ResponseStatus.class); return responseStatus.value().toString() + " - " + responseStatus.value().getReasonPhrase(); } else { return HttpStatus.OK.toString() + " - " + "OK"; } }
@Override public String getReasonPhrase() { return status.reason().isEmpty() ? status.value().getReasonPhrase() : status.reason(); }
private ModelAndView getModelAndView(Method handlerMethod, Object returnValue, ServletWebRequest webRequest) throws Exception { ResponseStatus responseStatusAnn = AnnotationUtils.findAnnotation(handlerMethod, ResponseStatus.class); if (responseStatusAnn != null) { HttpStatus responseStatus = responseStatusAnn.value(); String reason = responseStatusAnn.reason(); if (!StringUtils.hasText(reason)) { // this doesn't commit the response webRequest.getResponse().setStatus(responseStatus.value()); } else { // this commits the response such that any more calls to write to the // response are ignored webRequest.getResponse().sendError(responseStatus.value(), reason); } } /// snip }
@Test public void representsHttp404() throws Exception { ResponseStatus responseStatus = NotFoundException.class.getAnnotation(ResponseStatus.class); assertThat(responseStatus.value()).isEqualTo(HttpStatus.NOT_FOUND); }
private ResponseEntity<Object> handleInternal(Exception ex, MultibankingError error, HttpHeaders headers, HttpStatus status, WebRequest request) { ResponseStatus responseStatus = AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class); if (error == null && responseStatus!=null && responseStatus.value()!=null) error = MultibankingError.builder() .status(responseStatus.value()) .text(responseStatus.reason()).exception(ex).build(); if (error == null) error = MultibankingError.builder().status(status).exception(ex).build(); return handleExceptionInternal(ex, error, headers, status, request); }
private ResponseEntity<Object> handleInternal(Exception ex, MultibankingError error, HttpHeaders headers, HttpStatus status, WebRequest request) { ResponseStatus responseStatus = AnnotationUtils.findAnnotation(ex.getClass(), ResponseStatus.class); if (error == null && responseStatus!=null && responseStatus.value()!=null) error = MultibankingError.builder() .status(responseStatus.value()) .text(responseStatus.reason()).exception(ex).build(); if (error == null) error = MultibankingError.builder().status(status).exception(ex).build(); return handleExceptionInternal(ex, error, headers, status, request); }
@ExceptionHandler @ResponseBody public ResponseEntity<Object> handleException(ParametrizedMessageException e, WebRequest request) { ResponseStatus responseStatus = AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class); MultibankingError error = null; if (responseStatus != null) { error = MultibankingError.builder().status(responseStatus.value()).text(responseStatus.reason()).params(e.getParamsMap()).exception(e).build(); } else { error = MultibankingError.builder().status(HttpStatus.BAD_REQUEST).text(e.getMessage()).params(e.getParamsMap()).exception(e).build(); } return handleExceptionInternal(e, error, null, error.getStatus(), request); }
@ExceptionHandler @ResponseBody public ResponseEntity<Object> handleException(ParametrizedMessageException e, WebRequest request) { ResponseStatus responseStatus = AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class); MultibankingError error = null; if (responseStatus != null) { error = MultibankingError.builder().status(responseStatus.value()).text(responseStatus.reason()).params(e.getParamsMap()).exception(e).build(); } else { error = MultibankingError.builder().status(HttpStatus.BAD_REQUEST).text(e.getMessage()).params(e.getParamsMap()).exception(e).build(); } return handleExceptionInternal(e, error, null, error.getStatus(), request); }