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;
14 import java.util.Optional;
18 @RequiredArgsConstructor
20 public class TransferController
22 public final static String PATH = "/transfers";
24 private final TransferService service;
29 consumes = MediaType.APPLICATION_JSON_VALUE,
30 produces = MediaType.APPLICATION_JSON_VALUE)
31 public ResponseEntity<?> transfer(@Valid @RequestBody TransferDTO transferDTO)
36 .id(transferDTO.getId())
37 .payer(transferDTO.getPayer())
38 .payee(transferDTO.getPayee())
39 .amount(transferDTO.getAmount())
42 service.initiate(transfer);
44 return ResponseEntity.created(URI.create(PATH + "/" + transferDTO.getId())).build();
48 path = PATH + "/{id}",
49 produces = MediaType.APPLICATION_JSON_VALUE)
50 public ResponseEntity<TransferDTO> get(@PathVariable Long id)
55 .map(transfer -> ResponseEntity.ok(TransferDTO.of(transfer)))
56 .orElse(ResponseEntity.notFound().build());