View Javadoc
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  			// final EntitiesQueryRaw<UserFiltering, UserFiltering.Field> queryRaw =
75  			// EntitiesQueryRawUtils.serialize(query);
76  			//
77  			// final HttpEntity<EntitiesQueryRaw<UserFiltering, UserFiltering.Field>>
78  			// request = new HttpEntity<>(queryRaw,
79  			// headers(correlationId, sessionPropagator));
80  
81  			// return wrap(()
82  			//
83  			// -> exchange(restTemplate, urlBuilder.toUriString(), HttpMethod.POST, request,
84  			// MutableUsersInfo.class)
85  //					.getBody());
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 }