Skip to content

Commit 2847d0a

Browse files
authored
Merge pull request #85 from AnswerConsulting/BENCH-155
Bench 155 - Error handling updated to match API Contract
2 parents b4810c3 + 86741a8 commit 2847d0a

13 files changed

+79
-80
lines changed
Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package com.answerdigital.answerking.exception;
22

3-
import java.util.Collection;
43
import lombok.Getter;
54
import org.springframework.http.HttpStatus;
65

@@ -15,20 +14,16 @@ public abstract class AnswerKingException extends RuntimeException {
1514

1615
private final String detail;
1716

18-
private final Collection<String> errors;
19-
2017
protected AnswerKingException(
2118
final String type,
2219
final String title,
2320
final HttpStatus status,
24-
final String detail,
25-
final Collection<String> errors
21+
final String detail
2622
) {
27-
super(errors.toString());
23+
super(detail);
2824
this.type = type;
2925
this.title = title;
3026
this.status = status;
3127
this.detail = detail;
32-
this.errors = errors;
3328
}
3429
}

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22

33
import com.answerdigital.answerking.exception.generic.BadRequestException;
44

5-
import java.util.Collection;
6-
75
public class NameUnavailableException extends BadRequestException {
8-
public NameUnavailableException(final Collection<String> errors) {
9-
super(errors);
10-
}
116

127
public NameUnavailableException(final String error) {
138
super(error);

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,7 @@
22

33
import com.answerdigital.answerking.exception.generic.BadRequestException;
44

5-
import java.util.Collection;
6-
75
public class ProductAlreadyPresentException extends BadRequestException {
8-
public ProductAlreadyPresentException(final Collection<String> errors) {
9-
super(errors);
10-
}
116

127
public ProductAlreadyPresentException(final String error) {
138
super(error);

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

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import com.answerdigital.answerking.exception.AnswerKingException;
44
import org.springframework.http.HttpStatus;
55

6-
import java.util.Collection;
7-
import java.util.List;
8-
96
public class RetirementException extends AnswerKingException {
107

118
private static final String TYPE = "https://www.rfc-editor.org/rfc/rfc7231";
@@ -14,13 +11,8 @@ public class RetirementException extends AnswerKingException {
1411

1512
private static final HttpStatus STATUS = HttpStatus.GONE;
1613

17-
private static final String DETAIL = null;
18-
19-
public RetirementException(final Collection<String> errors) {
20-
super(TYPE, TITLE, STATUS, DETAIL, errors);
21-
}
22-
2314
public RetirementException(final String error) {
24-
this(List.of(error));
15+
super(TYPE, TITLE, STATUS, error);
2516
}
17+
2618
}
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/generic/BadRequestException.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import com.answerdigital.answerking.exception.AnswerKingException;
44
import org.springframework.http.HttpStatus;
55

6-
import java.util.Collection;
7-
import java.util.List;
8-
96
public class BadRequestException extends AnswerKingException {
107

118
private static final String TYPE = "https://www.rfc-editor.org/rfc/rfc7231";
@@ -14,13 +11,7 @@ public class BadRequestException extends AnswerKingException {
1411

1512
private static final HttpStatus STATUS = HttpStatus.BAD_REQUEST;
1613

17-
private static final String DETAIL = null;
18-
19-
public BadRequestException(final Collection<String> errors) {
20-
super(TYPE, TITLE, STATUS, DETAIL, errors);
21-
}
22-
2314
public BadRequestException(final String error) {
24-
this(List.of(error));
15+
super(TYPE, TITLE, STATUS, error);
2516
}
2617
}

src/main/java/com/answerdigital/answerking/exception/generic/ConflictException.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import com.answerdigital.answerking.exception.AnswerKingException;
44
import org.springframework.http.HttpStatus;
55

6-
import java.util.Collection;
7-
import java.util.List;
8-
96
public class ConflictException extends AnswerKingException {
107

118
private static final String TYPE = "https://www.rfc-editor.org/rfc/rfc7231";
@@ -14,13 +11,8 @@ public class ConflictException extends AnswerKingException {
1411

1512
private static final HttpStatus STATUS = HttpStatus.CONFLICT;
1613

17-
private static final String DETAIL = null;
18-
19-
public ConflictException(final Collection<String> errors) {
20-
super(TYPE, TITLE, STATUS, DETAIL, errors);
21-
}
22-
2314
public ConflictException(final String error) {
24-
this(List.of(error));
15+
super(TYPE, TITLE, STATUS, error);
2516
}
17+
2618
}

src/main/java/com/answerdigital/answerking/exception/generic/InternalServerErrorException.java

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import com.answerdigital.answerking.exception.AnswerKingException;
44
import org.springframework.http.HttpStatus;
55

6-
import java.util.Collection;
7-
import java.util.List;
8-
96
public class InternalServerErrorException extends AnswerKingException {
107

118
private static final String TYPE = "https://www.rfc-editor.org/rfc/rfc7231";
@@ -14,13 +11,8 @@ public class InternalServerErrorException extends AnswerKingException {
1411

1512
private static final HttpStatus STATUS = HttpStatus.INTERNAL_SERVER_ERROR;
1613

17-
private static final String DETAIL = null;
18-
19-
public InternalServerErrorException(final Collection<String> errors) {
20-
super(TYPE, TITLE, STATUS, DETAIL, errors);
21-
}
22-
2314
public InternalServerErrorException(final String error) {
24-
this(List.of(error));
15+
super(TYPE, TITLE, STATUS, error);
2516
}
17+
2618
}

src/main/java/com/answerdigital/answerking/exception/generic/NotFoundException.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
import com.answerdigital.answerking.exception.AnswerKingException;
44
import org.springframework.http.HttpStatus;
55

6-
import java.util.Collection;
7-
import java.util.List;
8-
96
public class NotFoundException extends AnswerKingException {
107

118
private static final String TYPE = "https://www.rfc-editor.org/rfc/rfc7231";
@@ -14,13 +11,7 @@ public class NotFoundException extends AnswerKingException {
1411

1512
private static final HttpStatus STATUS = HttpStatus.NOT_FOUND;
1613

17-
private static final String DETAIL = null;
18-
19-
public NotFoundException(final Collection<String> errors) {
20-
super(TYPE, TITLE, STATUS, DETAIL, errors);
21-
}
22-
2314
public NotFoundException(final String error) {
24-
this(List.of(error));
15+
super(TYPE, TITLE, STATUS, error);
2516
}
2617
}

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import lombok.extern.slf4j.Slf4j;
66

77
import javax.servlet.http.HttpServletRequest;
8-
import java.util.Collection;
98

109
@Slf4j
1110
@Getter
@@ -21,8 +20,6 @@ public class ErrorResponse {
2120

2221
private final String instance;
2322

24-
private final Collection<String> errors;
25-
2623
private final String traceId;
2724

2825
public ErrorResponse(final AnswerKingException exception, final HttpServletRequest request) {
@@ -31,12 +28,11 @@ public ErrorResponse(final AnswerKingException exception, final HttpServletReque
3128
this.status = exception.getStatus().value();
3229
this.detail = exception.getDetail();
3330
this.instance = request.getRequestURI();
34-
this.errors = exception.getErrors();
3531
this.traceId = CorrelationId.getId();
3632

3733
log.error(String.format(
38-
"RETURNING EXCEPTION - TYPE: %s - TITLE: %s - STATUS: %s - DETAIL: %s - INSTANCE: %s - ERRORS: %s - TRACEID: %s",
39-
type, title, status, detail, instance, errors.toString(), traceId)
34+
"RETURNING EXCEPTION - TYPE: %s - TITLE: %s - STATUS: %s - DETAIL: %s - INSTANCE: %s - TRACEID: %s",
35+
type, title, status, detail, instance, traceId)
4036
);
4137
}
4238
}

0 commit comments

Comments
 (0)