X-Git-Url: https://juplo.de/gitweb/?p=demos%2Fkafka%2Fdemos-kafka-payment-system-transfer;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2Fadapter%2FTransferController.java;h=d81c554043cefbfabd464b2bb2bb56c92d08d08a;hp=8240310c7d0f4c7c1e90b96323f88a32ceb5d2c9;hb=43ea59755f9673864a3ef95250009f091e99a760;hpb=fae41770a1f65b4ddfe8d51d09a8a8cdc35a5bdd diff --git a/src/main/java/de/juplo/kafka/payment/transfer/adapter/TransferController.java b/src/main/java/de/juplo/kafka/payment/transfer/adapter/TransferController.java index 8240310..d81c554 100644 --- a/src/main/java/de/juplo/kafka/payment/transfer/adapter/TransferController.java +++ b/src/main/java/de/juplo/kafka/payment/transfer/adapter/TransferController.java @@ -24,7 +24,8 @@ import java.util.Optional; import java.util.concurrent.CompletableFuture; -@RestController +@RequestMapping(TransferController.PATH) +@ResponseBody @RequiredArgsConstructor @Slf4j public class TransferController @@ -33,10 +34,11 @@ import java.util.concurrent.CompletableFuture; private final GetTransferUseCase getTransferUseCase; private final MessagingService messagingService; + private final TransferConsumer consumer; @PostMapping( - path = PATH, + path = "", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) public DeferredResult> transfer( @@ -63,7 +65,6 @@ import java.util.concurrent.CompletableFuture; .payer(transferDTO.getPayer()) .payee(transferDTO.getPayee()) .amount(transferDTO.getAmount()) - .state(Transfer.State.RECEIVED) .build()) .thenApply($ -> ResponseEntity @@ -86,15 +87,27 @@ import java.util.concurrent.CompletableFuture; } @GetMapping( - path = PATH + "/{id}", + path = "/{id}", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity get(@PathVariable Long id) { return - getTransferUseCase - .get(id) - .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer))) - .orElse(ResponseEntity.notFound().build()); + consumer + .uriForKey(Long.toString(id)) + .map(uri -> + { + ResponseEntity response = + ResponseEntity + .status(HttpStatus.TEMPORARY_REDIRECT) + .location(URI.create(uri + PATH + "/" + id)) + .build(); + return response; + }) + .orElseGet(() -> + getTransferUseCase + .get(id) + .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer))) + .orElse(ResponseEntity.notFound().build())); } @ResponseStatus(HttpStatus.BAD_REQUEST)