Skip to content

Commit 4ccd003

Browse files
committed
fix: update validation error serialization
1 parent 8b8167d commit 4ccd003

File tree

4 files changed

+14
-15
lines changed

4 files changed

+14
-15
lines changed

server/src/main/java/org/eni/koinoniadaily/config/JwtFilter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ protected void doFilterInternal(HttpServletRequest request, HttpServletResponse
7777
.error(HttpStatus.UNAUTHORIZED.getReasonPhrase())
7878
.message(ex.getMessage())
7979
.path(request.getRequestURI())
80-
.errorCode(ex.getCause().getClass().getSimpleName())
80+
.errorCode(ex.getCause() != null ? ex.getCause().getClass().getSimpleName() : "UNAUTHORIZED")
8181
.timestamp(Instant.now())
8282
.build();
8383

server/src/main/java/org/eni/koinoniadaily/exceptions/GlobalExceptionHandler.java

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package org.eni.koinoniadaily.exceptions;
22

3-
import com.fasterxml.jackson.core.JsonProcessingException;
43
import com.fasterxml.jackson.databind.ObjectMapper;
54
import lombok.RequiredArgsConstructor;
65
import org.eni.koinoniadaily.utils.ErrorResponse;
@@ -30,13 +29,18 @@ public class GlobalExceptionHandler {
3029
private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
3130

3231
private ResponseEntity<ErrorResponse> buildResponse(WebRequest request, String message, HttpStatus status, String errorCode) {
32+
return buildResponse(request, message, status, errorCode, null);
33+
}
34+
35+
private ResponseEntity<ErrorResponse> buildResponse(WebRequest request, String message, HttpStatus status, String errorCode, Object errors) {
3336
ErrorResponse error = ErrorResponse.builder()
3437
.success(false)
3538
.status(status.value())
3639
.error(status.getReasonPhrase())
3740
.message(message)
3841
.path(((ServletWebRequest) request).getRequest().getRequestURI())
3942
.errorCode(errorCode)
43+
.errors(errors)
4044
.timestamp(Instant.now())
4145
.build();
4246

@@ -59,19 +63,11 @@ public ResponseEntity<ErrorResponse> handleValidationException(MethodArgumentNot
5963
.stream()
6064
.collect(Collectors.toMap(
6165
FieldError::getField,
62-
FieldError::getDefaultMessage,
63-
(existing, replacement) -> existing
66+
error -> error.getDefaultMessage() != null ? error.getDefaultMessage() : "Invalid value",
67+
(existing, replacement) -> existing + ";" + replacement
6468
));
6569

66-
String message;
67-
try {
68-
message = objectMapper.writeValueAsString(errors);
69-
} catch (JsonProcessingException e) {
70-
logger.error("Error serializing validation errors", e);
71-
return buildResponse(request, "Validation failed with multiple errors", HttpStatus.UNPROCESSABLE_ENTITY, "VALIDATION_ERROR");
72-
}
73-
74-
return buildResponse(request, message, HttpStatus.UNPROCESSABLE_ENTITY, "VALIDATION_ERROR");
70+
return buildResponse(request, "Validation failed", HttpStatus.UNPROCESSABLE_ENTITY, "VALIDATION_ERROR", errors);
7571
}
7672

7773
// Handle runtime validation errors

server/src/main/java/org/eni/koinoniadaily/exceptions/ValidationException.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,11 @@
55
@Getter
66
public class ValidationException extends RuntimeException {
77

8-
private String code = "VALIDATION_ERROR";
8+
private final String code;
99

1010
public ValidationException(String message) {
1111
super(message);
12+
this.code = "VALIDATION_ERROR";
1213
}
1314

1415
public ValidationException(String code, String message) {

server/src/main/java/org/eni/koinoniadaily/utils/ErrorResponse.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import lombok.Getter;
66
import lombok.experimental.SuperBuilder;
77

8-
//@Getter
8+
@Getter
99
@SuperBuilder
1010
public class ErrorResponse extends ApiResponse {
1111

@@ -17,5 +17,7 @@ public class ErrorResponse extends ApiResponse {
1717

1818
private final String errorCode;
1919

20+
private final Object errors;
21+
2022
private final Instant timestamp;
2123
}

0 commit comments

Comments
 (0)