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%2Fports%2FTransferService.java;fp=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2Fports%2FTransferService.java;h=7ee043271bdfca0f26dc4affbc72633775b26a7a;hp=d4eb3effa7cec510a8b7fcd2c572f29b15613434;hb=6d64dff7c410dd644e42a25b0a67513c3b30cfd3;hpb=9b5a2fb9d42baeb4ddde2ac146e2f8e61a1fc550 diff --git a/src/main/java/de/juplo/kafka/payment/transfer/ports/TransferService.java b/src/main/java/de/juplo/kafka/payment/transfer/ports/TransferService.java index d4eb3ef..7ee0432 100644 --- a/src/main/java/de/juplo/kafka/payment/transfer/ports/TransferService.java +++ b/src/main/java/de/juplo/kafka/payment/transfer/ports/TransferService.java @@ -1,6 +1,7 @@ package de.juplo.kafka.payment.transfer.ports; +import de.juplo.kafka.payment.transfer.adapter.TransferStateChangedEvent; import de.juplo.kafka.payment.transfer.domain.Transfer; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -19,36 +20,35 @@ public class TransferService implements CreateTransferUseCase, HandleStateChange private final MessagingService messagingService; @Override - public void create(Long id, Long payer, Long payee, Integer amount) + public Optional create(Long id, Long payer, Long payee, Integer amount) { + return repository .get(id) - .ifPresentOrElse( - stored -> log.info( + .flatMap( + stored -> + {log.info( "transfer already exisits: {}, ignoring: id={}, payer={}, payee={}, amount={}", stored, payer, payee, - amount), - () -> + amount); + return Optional.empty(); + }) + .or(() -> { - Transfer transfer = - Transfer + log.info("creating transfer: {}", transfer); + return + TransferStateChangedEvent .builder() - .id(id) - .payer(payer) - .payee(payee) - .amount(amount) + .id(transfer.getId()) + .state(CREATED) .build(); - - log.info("creating transfer: {}", transfer); - repository.store(transfer); - messagingService.send(transfer.getId(), CREATED); }); } @Override - public void handleStateChange(Long id, Transfer.State state) + public TransferStateChangedEvent handleStateChange(Long id, Transfer.State state) { get(id) .ifPresentOrElse(