Skip to content

Commit f8d4d51

Browse files
authored
Merge pull request #103 from AnswerConsulting/BENCH-155
BENCH-155 exception changed
2 parents 4859954 + dfa6b61 commit f8d4d51

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

src/main/java/com/answerdigital/answerking/exception/util/RestResponseEntityExceptionHandler.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import com.answerdigital.answerking.exception.AnswerKingException;
44
import com.answerdigital.answerking.exception.custom.ValidationException;
5-
import com.answerdigital.answerking.exception.generic.BadRequestException;
65
import com.answerdigital.answerking.exception.generic.InternalServerErrorException;
76
import org.springframework.http.HttpStatus;
87
import org.springframework.http.ResponseEntity;
8+
import org.springframework.validation.FieldError;
99
import org.springframework.web.bind.MethodArgumentNotValidException;
1010
import org.springframework.web.bind.annotation.ExceptionHandler;
1111
import org.springframework.web.bind.annotation.RestControllerAdvice;
@@ -15,9 +15,11 @@
1515
import javax.validation.ConstraintViolationException;
1616
import java.util.ArrayList;
1717
import java.util.Collection;
18+
import java.util.Collections;
1819
import java.util.HashMap;
1920
import java.util.Map;
2021
import java.util.Objects;
22+
import java.util.stream.Collectors;
2123
import java.util.stream.StreamSupport;
2224

2325
@RestControllerAdvice
@@ -28,14 +30,17 @@ public ResponseEntity<ErrorResponse> handleMethodArgumentNotValidException(
2830
final MethodArgumentNotValidException exception,
2931
final HttpServletRequest request) {
3032

31-
String detail;
32-
try {
33-
detail = Objects.requireNonNull(exception.getFieldError()).getDefaultMessage();
34-
} catch (NullPointerException nullPointerException) {
35-
detail = "Unknown error - MethodArgumentNotValidException was thrown with no default message";
36-
}
33+
final Map<String, Collection<String>> errorsMap =
34+
exception.getBindingResult().getFieldErrors()
35+
.stream()
36+
.collect(Collectors.toMap(FieldError::getField,
37+
FieldError -> new ArrayList<>(Collections.singletonList(FieldError.getDefaultMessage())),
38+
(mainList, newList) -> {
39+
mainList.addAll(newList);
40+
return mainList;
41+
}));
3742

38-
final ErrorResponse response = new ErrorResponse(new BadRequestException(detail), request);
43+
final ErrorResponse response = new ValidationErrorResponse(new ValidationException(errorsMap), request);
3944
return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
4045
}
4146

0 commit comments

Comments
 (0)