WIP
[demos/kafka/demos-kafka-payment-system-transfer] / transfer / src / main / java / de / juplo / kafka / payment / transfer / controller / TransferController.java
index f7f9ff5..2d83ad9 100644 (file)
@@ -12,8 +12,10 @@ import org.springframework.validation.FieldError;
 import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
 import java.net.URI;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
@@ -63,14 +65,24 @@ import java.util.Optional;
 
   @ResponseStatus(HttpStatus.BAD_REQUEST)
   @ExceptionHandler(MethodArgumentNotValidException.class)
-  public Map<String, String> handleValidationExceptions(
-      MethodArgumentNotValidException ex) {
+  public Map<String, Object> handleValidationExceptions(
+      HttpServletRequest request,
+      MethodArgumentNotValidException e)
+  {
+    Map<String, Object> errorAttributes = new HashMap<>();
+    errorAttributes.put("status", HttpStatus.BAD_REQUEST.value());
+    errorAttributes.put("error", HttpStatus.BAD_REQUEST.getReasonPhrase());
+    errorAttributes.put("path", request.getRequestURI());
+    errorAttributes.put("method", request.getMethod());
+    errorAttributes.put("timestamp", new Date());
     Map<String, String> errors = new HashMap<>();
-    ex.getBindingResult().getAllErrors().forEach((error) -> {
+    e.getBindingResult().getAllErrors().forEach((error) -> {
       String fieldName = ((FieldError) error).getField();
       String errorMessage = error.getDefaultMessage();
       errors.put(fieldName, errorMessage);
     });
-    return errors;
+    errorAttributes.put("errors", errors);
+    errorAttributes.put("message", "Validation failed: Invalid message format, error count: " + errors.size());
+    return errorAttributes;
   }
 }