WIP:initial
[demos/pact] / consumer / src / main / java / de / juplo / demos / consumer / adapter / RemoteUserServiceConsumer.java
1 package de.juplo.demos.consumer.adapter;
2
3 import de.juplo.demos.consumer.domain.User;
4 import de.juplo.demos.consumer.domain.UserService;
5 import lombok.RequiredArgsConstructor;
6 import org.springframework.http.HttpStatus;
7 import org.springframework.http.ResponseEntity;
8 import org.springframework.web.client.RestTemplate;
9
10 import java.util.Optional;
11 import java.util.UUID;
12
13
14 @RequiredArgsConstructor
15 public class RemoteUserServiceConsumer implements UserService
16 {
17   private String uriTemplate;
18   private RestTemplate restTemplate;
19
20
21   @Override
22   public Optional<User> getUser(UUID id) {
23     ResponseEntity<UserDTO> response =
24         restTemplate.getForEntity(uriTemplate, UserDTO.class, id);
25     HttpStatus status = response.getStatusCode();
26     UserDTO dto = response.getBody();
27     switch (response.getStatusCode()) {
28       case OK:
29         return
30             Optional.of(
31                 User.builder()
32                     .id(dto.id)
33                     .email(dto.email)
34                     .build());
35       case NOT_FOUND:
36         return Optional.empty();
37       default:
38         throw new RuntimeException(status.toString());
39     }
40   }
41 }