1 package de.juplo.kafka.payment.transfer.controller;
4 import de.juplo.kafka.payment.transfer.domain.Transfer;
5 import de.juplo.kafka.payment.transfer.domain.TransferService;
6 import lombok.RequiredArgsConstructor;
7 import lombok.extern.slf4j.Slf4j;
8 import org.springframework.http.MediaType;
9 import org.springframework.http.ResponseEntity;
10 import org.springframework.web.bind.annotation.*;
12 import javax.validation.Valid;
17 @RequiredArgsConstructor
19 public class TransferController
21 public final static String PATH = "/transfers";
23 private final TransferService service;
28 consumes = MediaType.APPLICATION_JSON_VALUE,
29 produces = MediaType.APPLICATION_JSON_VALUE)
30 public ResponseEntity<?> transfer(@Valid @RequestBody TransferDTO transferDTO)
35 .id(transferDTO.getId())
36 .payer(transferDTO.getPayer())
37 .payee(transferDTO.getPayee())
38 .amount(transferDTO.getAmount())
41 service.initiate(transfer);
43 return ResponseEntity.created(URI.create(PATH + "/" + transferDTO.getId())).build();
47 path = PATH + "/{id}",
48 produces = MediaType.APPLICATION_JSON_VALUE)
49 public ResponseEntity<TransferDTO> get(@PathVariable Long id)
54 .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer)))
55 .orElse(ResponseEntity.notFound().build());