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%2Fdomain%2FTransferService.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2Fdomain%2FTransferService.java;h=ed1a98eddd9ee8423ddadc0c12b0a93f252e908e;hp=00c54787a9cfa681e6a948198ff701221360001f;hb=951dcf0533551cccf48062c12e61192035a27a9a;hpb=edc88d6eac8c502ab0297380489ccc9ba706b5f0 diff --git a/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java b/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java index 00c5478..ed1a98e 100644 --- a/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java +++ b/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java @@ -19,14 +19,28 @@ public class TransferService implements CreateTransferUseCase, HandleStateChange private final MessagingService messagingService; @Override - public void create(Transfer transfer) + public void create(Long id, Long payer, Long payee, Integer amount) { repository - .get(transfer.getId()) + .get(id) .ifPresentOrElse( - stored -> log.info("transfer already exisits: {}, ignoring: {}", stored, transfer), + stored -> log.info( + "transfer already exisits: {}, ignoring: id={}, payer={}, payee={}, amount={}", + stored, + payer, + payee, + amount), () -> { + Transfer transfer = + Transfer + .builder() + .id(id) + .payer(payer) + .payee(payee) + .amount(amount) + .build(); + log.info("creating transfer: {}", transfer); repository.store(transfer); messagingService.send(transfer.getId(), CREATED); @@ -34,24 +48,34 @@ public class TransferService implements CreateTransferUseCase, HandleStateChange } @Override - public void handle(Transfer transfer) + public void handleStateChange(Long id, Transfer.State state) { - Transfer.State state = transfer.getState(); - switch (state) - { - case CREATED: - repository.store(transfer); - check(transfer); - break; - - case CHECKED: - repository.store(transfer); - // TODO: What's next...? - break; - - default: - log.warn("TODO: handle {} state {}", state.foreign ? "foreign" : "domain", state); - } + get(id) + .ifPresentOrElse( + transfer -> + { + switch (state) + { + case CREATED: + + transfer.setState(CREATED); + repository.store(transfer); + check(transfer); + break; + + case CHECKED: + + transfer.setState(CHECKED); + repository.store(transfer); + // TODO: What's next...? + break; + + default: + + log.warn("TODO: handle {} state {}", state.foreign ? "foreign" : "domain", state); + } + }, + () -> log.error("unknown transfer: {}", id)); } private void check(Transfer transfer)