Monday, 4 March 2024

Two version of exception hadling by controller advice

 

//    @ExceptionHandler({MethodArgumentNotValidException.class})
// public ResponseEntity<ApiFail> handleValidationExceptions(
// MethodArgumentNotValidException ex, HttpStatus httpStatus) {
// Integer error_code_global = ex.hashCode();
// Map<String, String> errors = new HashMap<>();
// ex.getBindingResult().getAllErrors().forEach((error) -> {
// String fieldName = ((FieldError) error).getField();
// String errorMessage = error.getDefaultMessage();
// Integer error_code = error.hashCode();
// errors.put(fieldName, errorMessage);
// });
// Map data = new HashMap();
// data.put("field", errors);
// return new ResponseEntity<ApiFail>(new ApiFail(error_code_global, data), HttpStatus.BAD_REQUEST);
// }
@Override
protected ResponseEntity<Object> handleMethodArgumentNotValid(MethodArgumentNotValidException ex, HttpHeaders headers, HttpStatusCode status, WebRequest request) {
Map<String, Object> errorMessageBody = new LinkedHashMap<>();
Map<String, Object> resBody = new LinkedHashMap<>();
ex.getBindingResult()
.getFieldErrors()
.stream().forEach(error->{
errorMessageBody.put(error.getField(),error.getDefaultMessage());
});
resBody.put("success", false);
resBody.put("message_code", status.value());
resBody.put("data", errorMessageBody);
return new ResponseEntity<>(resBody, headers, status);
}

No comments:

Post a Comment