projects
/
demos
/
kafka
/
demos-kafka-payment-system-transfer
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
5bffe60
)
WIP
author
Kai Moritz
<kai@juplo.de>
Fri, 11 Jun 2021 16:17:38 +0000
(18:17 +0200)
committer
Kai Moritz
<kai@juplo.de>
Fri, 11 Jun 2021 16:17:38 +0000
(18:17 +0200)
transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferServiceApplication.java
patch
|
blob
|
history
transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferController.java
patch
|
blob
|
history
transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferRequest.java
patch
|
blob
|
history
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java
patch
|
blob
|
history
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferRepository.java
patch
|
blob
|
history
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java
patch
|
blob
|
history
diff --git
a/transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferServiceApplication.java
b/transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferServiceApplication.java
index
80f1d4e
..
cc3e056
100644
(file)
--- a/
transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferServiceApplication.java
+++ b/
transfer/src/main/java/de/juplo/kafka/payment/transfer/TransferServiceApplication.java
@@
-2,6
+2,7
@@
package de.juplo.kafka.payment.transfer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
+import de.juplo.kafka.payment.transfer.domain.TransferRepository;
import de.juplo.kafka.payment.transfer.domain.TransferService;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.producer.KafkaProducer;
import de.juplo.kafka.payment.transfer.domain.TransferService;
import lombok.extern.slf4j.Slf4j;
import org.apache.kafka.clients.producer.KafkaProducer;
@@
-35,11
+36,12
@@
public class TransferServiceApplication
@Bean
TransferService transferService(
@Bean
TransferService transferService(
+ TransferRepository repository,
KafkaProducer<UUID, String> producer,
ObjectMapper mapper,
TransferServiceProperties properties)
{
KafkaProducer<UUID, String> producer,
ObjectMapper mapper,
TransferServiceProperties properties)
{
- return new TransferService(producer, mapper, properties.topic);
+ return new TransferService(
repository,
producer, mapper, properties.topic);
}
}
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
12547ef
..
d8dcc83
100644
(file)
--- 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
@@
-31,7
+31,17
@@
public class TransferController
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> transfer(@Valid @RequestBody TransferRequest transferRequest)
{
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<?> transfer(@Valid @RequestBody TransferRequest transferRequest)
{
- service.initiate(transferRequest);
+ Transfer transfer =
+ Transfer
+ .builder()
+ .id(transferRequest.getId())
+ .payer(transferRequest.getPayer())
+ .payee(transferRequest.getPayee())
+ .amount(transferRequest.getAmount())
+ .build();
+
+ service.initiate(transfer);
+
return ResponseEntity.created(URI.create(PATH + transferRequest.getId())).build();
}
}
return ResponseEntity.created(URI.create(PATH + transferRequest.getId())).build();
}
}
diff --git
a/transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferRequest.java
b/transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferRequest.java
index
db3c781
..
43b4f90
100644
(file)
--- a/
transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferRequest.java
+++ b/
transfer/src/main/java/de/juplo/kafka/payment/transfer/controller/TransferRequest.java
@@
-3,7
+3,6
@@
package de.juplo.kafka.payment.transfer.controller;
import lombok.Data;
import javax.validation.constraints.NotNull;
import lombok.Data;
import javax.validation.constraints.NotNull;
-import java.util.UUID;
/**
/**
@@
-13,7
+12,7
@@
import java.util.UUID;
public class TransferRequest
{
@NotNull(message = "Cannot be null")
public class TransferRequest
{
@NotNull(message = "Cannot be null")
- private
UUID
id;
+ private
long
id;
@NotNull(message = "Cannot be null")
private long payer;
@NotNull(message = "Cannot be null")
@NotNull(message = "Cannot be null")
private long payer;
@NotNull(message = "Cannot be null")
diff --git
a/transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java
b/transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java
index
17330f6
..
2aa87fe
100644
(file)
--- a/
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java
+++ b/
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java
@@
-1,14
+1,18
@@
package de.juplo.kafka.payment.transfer.domain;
package de.juplo.kafka.payment.transfer.domain;
+import lombok.Builder;
import lombok.Data;
@Data
import lombok.Data;
@Data
+@Builder
public class Transfer
{
public enum State
{
public class Transfer
{
public enum State
{
+ CREATED,
+ FAILED,
PENDING,
APPROVED,
REJECTED
PENDING,
APPROVED,
REJECTED
diff --git
a/transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferRepository.java
b/transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferRepository.java
index
ac37192
..
908caa1
100644
(file)
--- a/
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferRepository.java
+++ b/
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferRepository.java
@@
-9,5
+9,5
@@
import java.util.UUID;
public interface TransferRepository
{
void put(Transfer transfer);
public interface TransferRepository
{
void put(Transfer transfer);
- Optional<Transfer> get(
UUID uu
id);
+ Optional<Transfer> get(
Long
id);
}
}
diff --git
a/transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java
b/transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java
index
34ef29c
..
6545e29
100644
(file)
--- a/
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java
+++ b/
transfer/src/main/java/de/juplo/kafka/payment/transfer/domain/TransferService.java
@@
-21,19
+21,26
@@
public class TransferService
private final ObjectMapper mapper;
private final String topic;
private final ObjectMapper mapper;
private final String topic;
- public void initiate(Transfer transfer)
+ public
synchronized
void initiate(Transfer transfer)
{
repository
.get(transfer.getId())
.ifPresentOrElse(
stored ->
{
{
repository
.get(transfer.getId())
.ifPresentOrElse(
stored ->
{
-
+ switch (stored.getState())
+ {
+ case FAILED:
+ }
},
() ->
{
},
() ->
{
-
});
});
+ }
+
+
+ private void create(Transfer transfer)
+ {
try
{
ProducerRecord<UUID, String> record =
try
{
ProducerRecord<UUID, String> record =