Skip to content

Commit 86741a8

Browse files
committed
BENCH-196 refactored code and duplications removed
1 parent d6c1da0 commit 86741a8

File tree

4 files changed

+35
-63
lines changed

4 files changed

+35
-63
lines changed

src/main/java/com/answerdigital/answerking/exception/custom/AnswerKingValidationException.java

Lines changed: 0 additions & 27 deletions
This file was deleted.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.answerdigital.answerking.exception.custom;
2+
3+
import com.answerdigital.answerking.exception.generic.BadRequestException;
4+
import lombok.Getter;
5+
6+
import java.util.Collection;
7+
import java.util.Map;
8+
9+
@Getter
10+
public class ValidationException extends BadRequestException {
11+
12+
private static final String TITLE = "Validation Exception";
13+
14+
private static final String DETAIL = "One or more validation errors occurred";
15+
16+
private final Map<String, Collection<String>> errors;
17+
18+
public ValidationException(final Map<String, Collection<String>> errors) {
19+
super(DETAIL);
20+
this.errors = errors;
21+
}
22+
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.answerdigital.answerking.exception.util;
22

33
import com.answerdigital.answerking.exception.AnswerKingException;
4-
import com.answerdigital.answerking.exception.custom.AnswerKingValidationException;
4+
import com.answerdigital.answerking.exception.custom.ValidationException;
55
import com.answerdigital.answerking.exception.generic.BadRequestException;
66
import com.answerdigital.answerking.exception.generic.InternalServerErrorException;
77
import org.springframework.http.HttpStatus;
@@ -40,27 +40,27 @@ public ResponseEntity<ErrorResponse> handleMethodArgumentNotValidException(
4040
}
4141

4242
@ExceptionHandler(ConstraintViolationException.class)
43-
public ResponseEntity<ValidationErrorResponse> handleConstraintViolationException(
43+
public ResponseEntity<ErrorResponse> handleConstraintViolationException(
4444
final ConstraintViolationException exception,
4545
final HttpServletRequest request) {
4646

47-
final Map<String, Collection<String>> newMap = new HashMap<>();
47+
final Map<String, Collection<String>> errorsMap = new HashMap<>();
4848
for (ConstraintViolation<?> constraintViolation : exception.getConstraintViolations()) {
4949
final String mapKey = Objects.requireNonNull(StreamSupport
5050
.stream(constraintViolation.getPropertyPath().spliterator(), false)
5151
.reduce((first, second) -> second)
5252
.orElse(null)).toString();
5353

54-
if (newMap.containsKey(mapKey)) {
55-
newMap.get(mapKey).add(constraintViolation.getMessage());
54+
if (errorsMap.containsKey(mapKey)) {
55+
errorsMap.get(mapKey).add(constraintViolation.getMessage());
5656
} else {
5757
final Collection<String> newCollection = new ArrayList<>();
5858
newCollection.add(constraintViolation.getMessage());
59-
newMap.put(mapKey, newCollection);
59+
errorsMap.put(mapKey, newCollection);
6060
}
6161
}
6262

63-
final ValidationErrorResponse response = new ValidationErrorResponse(new AnswerKingValidationException(newMap), request);
63+
final ErrorResponse response = new ValidationErrorResponse(new ValidationException(errorsMap), request);
6464
return new ResponseEntity<>(response, HttpStatus.BAD_REQUEST);
6565
}
6666

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,21 @@
11
package com.answerdigital.answerking.exception.util;
22

3-
import com.answerdigital.answerking.exception.custom.AnswerKingValidationException;
3+
import com.answerdigital.answerking.exception.custom.ValidationException;
44
import lombok.Getter;
55
import lombok.extern.slf4j.Slf4j;
66

77
import javax.servlet.http.HttpServletRequest;
88
import java.util.Collection;
9-
import java.util.HashMap;
109
import java.util.Map;
1110

1211
@Slf4j
1312
@Getter
14-
public class ValidationErrorResponse {
13+
public class ValidationErrorResponse extends ErrorResponse {
1514

16-
private final String type;
15+
private final Map<String, Collection<String>> errors;
1716

18-
private final String title;
19-
20-
private final int status;
21-
22-
private final String detail;
23-
24-
private final String instance;
25-
26-
private final Map<String, Collection<String>> errors = new HashMap<>();
27-
28-
private final String traceId;
29-
30-
public ValidationErrorResponse(final AnswerKingValidationException exception, final HttpServletRequest request) {
31-
this.type = exception.getType();
32-
this.title = exception.getTitle();
33-
this.status = exception.getStatus().value();
34-
this.detail = exception.getDetail();
35-
this.instance = request.getRequestURI();
36-
this.errors.putAll(exception.getErrors());
37-
this.traceId = CorrelationId.getId();
38-
39-
log.error(String.format(
40-
"RETURNING EXCEPTION - TYPE: %s - TITLE: %s - STATUS: %s - DETAIL: %s - INSTANCE: %s - ERRORS: %s - TRACEID: %s",
41-
type, title, status, detail, instance, errors, traceId)
42-
);
17+
public ValidationErrorResponse(final ValidationException exception, final HttpServletRequest request) {
18+
super(exception, request);
19+
this.errors = exception.getErrors();
4320
}
4421
}

0 commit comments

Comments
 (0)