Moved GET request implementations into a single method

This commit is contained in:
Kai S. K. Engelbart 2019-10-26 18:31:49 +02:00
parent b7b4e95e65
commit 4147df262d

View File

@ -60,7 +60,7 @@ public class Client {
public void sendMessage(Message message) {
new Thread(() -> {
// Wrap single message into messages list
Messages messages = wrapMessage(message);
Messages messages = wrapMessages(message);
// Print message XML to console
JAXBContext jc;
@ -109,22 +109,10 @@ public class Client {
return message;
}
public Messages wrapMessage(Message... messages) {
Messages wrapper = objectFactory.createMessages();
wrapper.getMessage().addAll(Arrays.asList(messages));
return wrapper;
}
public Users getUsersListXml() { return get(String.format("%s:%d/envoy-server/rest/user", config.getServer(), config.getPort()), Users.class); }
public Users getUsersListXml() {
javax.ws.rs.client.Client client = ClientBuilder.newClient();
WebTarget target = client
.target(String.format("%s:%d/envoy-server/rest/user", config.getServer(), config.getPort()));
Response response = target.request("application/xml").get();
Users users = response.readEntity(Users.class);
System.out.println("Response code: " + response.getStatus());
response.close();
client.close();
return users;
public Messages getUnreadMessages(long userId) {
return get(String.format("%s:%d/envoy-server/rest/message/receive?userId=%d", config.getServer(), config.getPort(), userId), Messages.class);
}
/**
@ -132,35 +120,49 @@ public class Client {
*
* @param name - the name of the {@link User}
* @return a {@link User} with the specified name
* @since Envoy 0.1
* @since Envoy v0.1-alpha
*/
private User getUser(String name) {
javax.ws.rs.client.Client client = ClientBuilder.newClient();
WebTarget target = client.target(String
.format("%s:%d/envoy-server/rest/user/sender?name=%s", config.getServer(), config.getPort(), name));
Response response = target.request("application/xml").get();
Users users = response.readEntity(Users.class);
System.out.println("Response code: " + response.getStatus());
response.close();
client.close();
return users.getUser().get(0);
return get(String.format("%s:%d/envoy-server/rest/user/sender?name=%s", config.getServer(), config.getPort(), name), Users.class).getUser()
.get(0);
}
public Messages getUnreadMessages(long userId) {
/**
* Invokes the GET method of a web service.
*
* @param <T> the type of the object returned by the web service
* @param uri the URI of the web service
* @param responseClass the class of the object returned by the web service
* @return the object returned by the web service
* @since Envoy v0.1-alpha
*/
private <T> T get(String uri, Class<T> responseClass) {
javax.ws.rs.client.Client client = ClientBuilder.newClient();
WebTarget target = client.target(String
.format("%s:%d/envoy-server/rest/message/receive?userId=%d", config.getServer(), config.getPort(), userId));
WebTarget target = client.target(uri);
Response response = target.request("application/xml").get();
Messages unreadMessages = response.readEntity(Messages.class);
T responseObject = response.readEntity(responseClass);
System.out.println("Response code: " + response.getStatus());
response.close();
client.close();
return unreadMessages;
return responseObject;
}
/**
* Wraps one or more {@link Message} objects into a {@link Messages} object.
*
* @param messages the {@link Message} objects to wrap
* @return {@link Messages} object with all messages as its children
* @since Envoy v0.1-alpha
*/
private Messages wrapMessages(Message... messages) {
Messages wrapper = objectFactory.createMessages();
wrapper.getMessage().addAll(Arrays.asList(messages));
return wrapper;
}
/**
* @return the sender object that represents this client
* @since Envoy 0.1
* @since Envoy v0.1-alpha
*/
public User getSender() { return sender; }