| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package com.its.op.exception;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.context.support.DefaultMessageSourceResolvable;
- import org.springframework.http.HttpStatus;
- import org.springframework.http.ResponseEntity;
- import org.springframework.web.bind.MethodArgumentNotValidException;
- import org.springframework.web.bind.annotation.ControllerAdvice;
- import org.springframework.web.bind.annotation.ExceptionHandler;
- import javax.servlet.http.HttpServletRequest;
- import java.time.LocalDateTime;
- import java.util.List;
- import java.util.stream.Collectors;
- @Slf4j
- @ControllerAdvice
- public class ExceptionControllerAdvisor {//} extends ResponseEntityExceptionHandler {
- /*@Override
- protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatus status, WebRequest request) {
- List<String> errorList = ex
- .getBindingResult()
- .getFieldErrors()
- .stream()
- .map(DefaultMessageSourceResolvable::getDefaultMessage)
- .collect(Collectors.toList());
- return new ResponseEntity<>(
- NotValidExceptionResponse.builder()
- .timestamp(LocalDateTime.now())
- .status(HttpStatus.BAD_REQUEST.value())
- .title("Arguments Not Valid")
- .developerMessage(ex.getClass().getName())
- .err(errorList)
- .build(), HttpStatus.BAD_REQUEST
- );
- }*/
- @ExceptionHandler(MethodArgumentNotValidException.class)
- public ResponseEntity<ErrorResponse> methodValidException(MethodArgumentNotValidException ex, HttpServletRequest request) {
- log.warn("MethodArgumentNotValidException 발생!!! url:{}, trace:{}",request.getRequestURI(), ex.getStackTrace());
- List<String> errorList = ex
- .getBindingResult()
- .getFieldErrors()
- .stream()
- .map(DefaultMessageSourceResolvable::getDefaultMessage)
- .collect(Collectors.toList());
- //ErrorResponse errorResponse = makeErrorResponse(e.getBindingResult());
- //return new ResponseEntity<ErrorResponse>(errorResponse, HttpStatus.BAD_REQUEST);
- return new ResponseEntity<>(
- ErrorResponse.builder()
- .timestamp(LocalDateTime.now())
- .status(HttpStatus.BAD_REQUEST.value())
- .title("Arguments Not Valid")
- .message(ex.getClass().getName())
- .errors(errorList)
- .build(), HttpStatus.BAD_REQUEST);
- }
- /*
- private ErrorResponse makeErrorResponse(BindingResult bindingResult) {
- String code = "";
- String description = "";
- String detail = "";
- //에러가 있다면
- if (bindingResult.hasErrors()) {
- //DTO에 설정한 meaasge값을 가져온다
- detail = bindingResult.getFieldError().getDefaultMessage();
- //DTO에 유효성체크를 걸어놓은 어노테이션명을 가져온다.
- String bindResultCode = bindingResult.getFieldError().getCode();
- switch (bindResultCode){
- case "NotNull":
- //code = ErrorCode.NOT_NULL.getCode();
- //description = ErrorCode.NOT_NULL.getDescription();
- break;
- case "Min":
- //code = ErrorCode.MIN_VALUE.getCode();
- //description = ErrorCode.MIN_VALUE.getDescription();
- break;
- }
- }
- return new ErrorResponse(0, code, null);
- }
- */
- }
|