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) { public void sendMessage(Message message) {
new Thread(() -> { new Thread(() -> {
// Wrap single message into messages list // Wrap single message into messages list
Messages messages = wrapMessage(message); Messages messages = wrapMessages(message);
// Print message XML to console // Print message XML to console
JAXBContext jc; JAXBContext jc;
@ -109,22 +109,10 @@ public class Client {
return message; return message;
} }
public Messages wrapMessage(Message... messages) { public Users getUsersListXml() { return get(String.format("%s:%d/envoy-server/rest/user", config.getServer(), config.getPort()), Users.class); }
Messages wrapper = objectFactory.createMessages();
wrapper.getMessage().addAll(Arrays.asList(messages));
return wrapper;
}
public Users getUsersListXml() { public Messages getUnreadMessages(long userId) {
javax.ws.rs.client.Client client = ClientBuilder.newClient(); return get(String.format("%s:%d/envoy-server/rest/message/receive?userId=%d", config.getServer(), config.getPort(), userId), Messages.class);
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;
} }
/** /**
@ -132,35 +120,49 @@ public class Client {
* *
* @param name - the name of the {@link User} * @param name - the name of the {@link User}
* @return a {@link User} with the specified name * @return a {@link User} with the specified name
* @since Envoy 0.1 * @since Envoy v0.1-alpha
*/ */
private User getUser(String name) { private User getUser(String name) {
javax.ws.rs.client.Client client = ClientBuilder.newClient(); return get(String.format("%s:%d/envoy-server/rest/user/sender?name=%s", config.getServer(), config.getPort(), name), Users.class).getUser()
WebTarget target = client.target(String .get(0);
.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);
} }
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(); javax.ws.rs.client.Client client = ClientBuilder.newClient();
WebTarget target = client.target(String WebTarget target = client.target(uri);
.format("%s:%d/envoy-server/rest/message/receive?userId=%d", config.getServer(), config.getPort(), userId));
Response response = target.request("application/xml").get(); 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()); System.out.println("Response code: " + response.getStatus());
response.close(); response.close();
client.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 * @return the sender object that represents this client
* @since Envoy 0.1 * @since Envoy v0.1-alpha
*/ */
public User getSender() { return sender; } public User getSender() { return sender; }