1 package net.avcompris.examples.users3.client;
2
3 import static com.google.common.base.Preconditions.checkNotNull;
4 import static net.avcompris.commons3.utils.EnvUtils.getEnvProperty;
5
6 import javax.annotation.Nullable;
7
8 import org.apache.commons.lang3.NotImplementedException;
9 import org.springframework.beans.factory.annotation.Autowired;
10 import org.springframework.http.HttpEntity;
11 import org.springframework.http.HttpMethod;
12 import org.springframework.stereotype.Component;
13 import org.springframework.web.client.RestTemplate;
14 import org.springframework.web.util.UriComponentsBuilder;
15
16 import net.avcompris.commons3.api.EntitiesQueryRaw;
17 import net.avcompris.commons3.api.User;
18 import net.avcompris.commons3.api.exception.ServiceException;
19 import net.avcompris.commons3.client.SessionPropagator;
20 import net.avcompris.commons3.client.impl.AbstractClient;
21 import net.avcompris.examples.users3.api.UserCreate;
22 import net.avcompris.examples.users3.api.UserInfo;
23 import net.avcompris.examples.users3.api.UserUpdate;
24 import net.avcompris.examples.users3.api.UsersInfo;
25 import net.avcompris.examples.users3.api.UsersQuery;
26 import net.avcompris.examples.users3.core.api.MutableUserInfo;
27 import net.avcompris.examples.users3.core.api.MutableUsersInfo;
28 import net.avcompris.examples.users3.core.api.UsersService;
29 import net.avcompris.examples.users3.query.UserFiltering;
30
31 @Component
32 public class UsersServiceClient extends AbstractClient implements UsersService {
33
34 @Autowired
35 public UsersServiceClient(final SessionPropagator sessionPropagator) {
36
37 super(getEnvProperty("users.baseURL", "http://localhost:8080/api/v1/"), sessionPropagator);
38 }
39
40 @Override
41 public UsersQuery validateUsersQuery(final String correlationId, final User user, @Nullable final String q,
42 @Nullable final String sort, @Nullable final Integer start, @Nullable final Integer limit,
43 @Nullable final String expand) throws ServiceException {
44
45 checkNotNull(correlationId, "correlationId");
46 checkNotNull(user, "user");
47
48 throw new NotImplementedException("");
49 }
50
51 @Override
52 public UsersInfo getUsers(final String correlationId, final User user, @Nullable final UsersQuery query)
53 throws ServiceException {
54
55 checkNotNull(correlationId, "correlationId");
56 checkNotNull(user, "user");
57
58 final RestTemplate restTemplate = createRestTemplate(MutableUsersInfo.class,
59 UserInfo.class, MutableUserInfo.class);
60
61 final UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(baseURL);
62
63 if (query == null) {
64
65 final HttpEntity<EntitiesQueryRaw<UserFiltering, UserFiltering.Field>> request = null;
66
67 return wrap(()
68
69 -> exchange(restTemplate, urlBuilder.toUriString(), HttpMethod.GET, request, MutableUsersInfo.class)
70 .getBody());
71
72 } else {
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 throw new NotImplementedException("query: " + query);
88 }
89 }
90
91 @Override
92 public boolean hasUser(final String correlationId, final User user, final String username) throws ServiceException {
93
94 checkNotNull(correlationId, "correlationId");
95 checkNotNull(user, "user");
96 checkNotNull(username, "username");
97
98 throw new NotImplementedException("");
99 }
100
101 @Override
102 public UserInfo createUser(final String correlationId, final User user, String username, final UserCreate create)
103 throws ServiceException {
104
105 checkNotNull(correlationId, "correlationId");
106 checkNotNull(user, "user");
107 checkNotNull(username, "username");
108 checkNotNull(create, "create");
109
110 final RestTemplate restTemplate = createRestTemplate(MutableUserInfo.class);
111
112 final UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(baseURL)
113 .pathSegment("users")
114 .pathSegment(username);
115
116 final HttpEntity<UserCreate> request = new HttpEntity<>(create, headers(correlationId, sessionPropagator));
117
118 return wrap(()
119
120 -> exchange(restTemplate, urlBuilder.toUriString(), HttpMethod.POST, request, MutableUserInfo.class).getBody());
121 }
122
123 @Override
124 public UserInfo getUser(final String correlationId, final User user, final String username)
125 throws ServiceException {
126
127 checkNotNull(correlationId, "correlationId");
128 checkNotNull(user, "user");
129 checkNotNull(username, "username");
130
131 final RestTemplate restTemplate = createRestTemplate(MutableUserInfo.class);
132
133 final UriComponentsBuilder urlBuilder = UriComponentsBuilder.fromHttpUrl(baseURL)
134 .pathSegment("users")
135 .pathSegment(username);
136
137 final HttpEntity<String> request = new HttpEntity<>(null, headers(correlationId, sessionPropagator));
138
139 return wrap(()
140
141 -> exchange(restTemplate, urlBuilder.toUriString(), HttpMethod.GET, request, MutableUserInfo.class).getBody());
142 }
143
144 @Override
145 public UserInfo updateUser(final String correlationId, final User user, final String username,
146 final UserUpdate update) throws ServiceException {
147
148 checkNotNull(correlationId, "correlationId");
149 checkNotNull(user, "user");
150 checkNotNull(username, "username");
151 checkNotNull(update, "update");
152
153 throw new NotImplementedException("");
154 }
155
156 @Override
157 public void deleteUser(final String correlationId, final User user, final String username) throws ServiceException {
158
159 checkNotNull(correlationId, "correlationId");
160 checkNotNull(user, "user");
161 checkNotNull(username, "username");
162
163 throw new NotImplementedException("");
164 }
165
166 @Override
167 public UserInfo getUserMe(final String correlationId, final User user) throws ServiceException {
168
169 checkNotNull(correlationId, "correlationId");
170 checkNotNull(user, "user");
171
172 throw new NotImplementedException("");
173 }
174
175 @Override
176 public UserInfo updateUserMe(final String correlationId, final User user, final UserUpdate update)
177 throws ServiceException {
178
179 checkNotNull(correlationId, "correlationId");
180 checkNotNull(user, "user");
181 checkNotNull(update, "update");
182
183 throw new NotImplementedException("");
184 }
185 }