WIP
authorKai Moritz <kai@juplo.de>
Sun, 13 Jun 2021 08:07:08 +0000 (10:07 +0200)
committerKai Moritz <kai@juplo.de>
Sun, 13 Jun 2021 08:07:08 +0000 (10:07 +0200)
transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferController.java
transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferDTO.java

index 170d8c8..f7f9ff5 100644 (file)
@@ -5,12 +5,17 @@ import de.juplo.kafka.payment.transfer.domain.Transfer;
 import de.juplo.kafka.payment.transfer.domain.TransferService;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.net.URI;
+import java.util.HashMap;
+import java.util.Map;
 import java.util.Optional;
 
 
@@ -55,4 +60,17 @@ import java.util.Optional;
             .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer)))
             .orElse(ResponseEntity.notFound().build());
   }
+
+  @ResponseStatus(HttpStatus.BAD_REQUEST)
+  @ExceptionHandler(MethodArgumentNotValidException.class)
+  public Map<String, String> handleValidationExceptions(
+      MethodArgumentNotValidException ex) {
+    Map<String, String> errors = new HashMap<>();
+    ex.getBindingResult().getAllErrors().forEach((error) -> {
+      String fieldName = ((FieldError) error).getField();
+      String errorMessage = error.getDefaultMessage();
+      errors.put(fieldName, errorMessage);
+    });
+    return errors;
+  }
 }
index 6f1310e..1d2ffa8 100644 (file)
@@ -4,6 +4,7 @@ import de.juplo.kafka.payment.transfer.domain.Transfer;
 import lombok.Builder;
 import lombok.Data;
 
+import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
 
 
@@ -15,13 +16,17 @@ import javax.validation.constraints.NotNull;
 public class TransferDTO
 {
   @NotNull(message = "Cannot be null")
-  private long id;
+  @Min(value = 1, message = "A valid transfer id must be a positive number")
+  private Long id;
   @NotNull(message = "Cannot be null")
-  private long payer;
+  @Min(value = 1, message = "A valid banc account id must be a positive number")
+  private Long payer;
   @NotNull(message = "Cannot be null")
-  private long payee;
+  @Min(value = 1, message = "A valid banc account id must be a positive number")
+  private Long payee;
   @NotNull(message = "Cannot be null")
-  private int amount;
+  @Min(value = 1, message = "Cannot transfer a non-positiv amount")
+  private Integer amount;
 
   private Transfer.State state;