This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/src/main/java/envoy/client/EnvoyClient.java

70 lines
2.2 KiB
Java
Raw Normal View History

2019-09-29 18:53:47 +02:00
package envoy.client;
import java.time.Instant;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import envoy.schema.Message;
import envoy.schema.ObjectFactory;
/**
* Project: <strong>envoy-client</strong><br>
* File: <strong>EnvoyClient.java</strong><br>
* Created: <strong>28 Sep 2019</strong><br>
* Author: <strong>Kai S. K. Engelbart &amp; Maximilian K&aumlfer</strong>
2019-09-29 18:53:47 +02:00
*/
public class EnvoyClient {
private DatatypeFactory datatypeFactory;
public EnvoyClient() {
try {
datatypeFactory = DatatypeFactory.newInstance();
} catch (DatatypeConfigurationException e) {
e.printStackTrace();
}
2019-09-29 18:53:47 +02:00
}
2019-09-29 18:53:47 +02:00
/**
* Sends a message with text content to the server.<br>
* Because sending a request is a blocking operation, it is executed
* asynchronously.
*
* @param sender Name of the sender
* @param recipient Name of the recipient
* @param textContent Content (text) of the message
2019-09-29 18:53:47 +02:00
*/
public void sendMessage(String sender, String recipient, String textContent) {
new Thread(() -> {
ObjectFactory factory = new ObjectFactory();
2019-09-29 18:53:47 +02:00
Message.MetaData metaData = factory.createMessageMetaData();
metaData.setSender(sender);
metaData.setRecipient(recipient);
metaData.setState(false);
metaData.setDate(datatypeFactory.newXMLGregorianCalendar(Instant.now().toString()));
2019-09-29 18:53:47 +02:00
Message.Content content = factory.createMessageContent();
content.setType("text");
content.setText(textContent);
2019-09-29 18:53:47 +02:00
Message message = factory.createMessage();
message.setMetaData(metaData);
message.getContent().add(content);
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8080/envoy-server/rest/message/send");
Response response = target.request().post(Entity.entity(message, "application/xml"));
System.out.println("Response code: " + response.getStatus());
response.close();
client.close();
}).start();
2019-09-29 18:53:47 +02:00
}
}