X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=transfer%2Fsrc%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2Fcontroller%2FTransferController.java;h=b39322a170bc7484afb92031ef150b87bf6f2b97;hb=3c463114918a08d2e727e7e3a656363afb4a5452;hp=c93fb4652e034710e3cca105770ac2d2973276a8;hpb=aa415473c0fced1fc60b876f4afa1909c34c5926;p=demos%2Fkafka%2Fdemos-kafka-payment-system-transfer diff --git a/transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferController.java b/transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferController.java index c93fb46..b39322a 100644 --- a/transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferController.java +++ b/transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferController.java @@ -1,15 +1,13 @@ package de.juplo.kafka.payment.transfer.controller; -import de.juplo.kafka.payment.transfer.api.Transfer; -import de.juplo.kafka.payment.transfer.impl.TransferServiceImpl; +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.MediaType; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.net.URI; @@ -18,20 +16,42 @@ import java.net.URI; @RestController @RequiredArgsConstructor @Slf4j -public class TransferController + public class TransferController { public final static String PATH = "/transfers"; - private final TransferServiceImpl service; + private final TransferService service; @PostMapping( path = PATH, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity transfer(@Valid @RequestBody Transfer transfer) + public ResponseEntity transfer(@Valid @RequestBody TransferDTO transferDTO) { + Transfer transfer = + Transfer + .builder() + .id(transferDTO.getId()) + .payer(transferDTO.getPayer()) + .payee(transferDTO.getPayee()) + .amount(transferDTO.getAmount()) + .build(); + service.initiate(transfer); - return ResponseEntity.created(URI.create(PATH + transfer.getId())).build(); + + return ResponseEntity.created(URI.create(PATH + "/" + transferDTO.getId())).build(); + } + + @GetMapping( + path = PATH + "/{id}", + produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity get(@PathVariable Long id) + { + return + service + .get(id) + .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer))) + .orElse(ResponseEntity.notFound().build()); } }