From 5c495e5bd8667a80dfc1cde7dc6b0c79bcbcca4f Mon Sep 17 00:00:00 2001 From: kske Date: Mon, 7 Oct 2019 17:35:57 +0200 Subject: [PATCH] Using JAX-RS to retrieve user list --- src/main/java/envoy/client/EnvoyClient.java | 69 ++--------- src/main/java/envoy/client/ui/ChatWindow.java | 114 ++++++++---------- 2 files changed, 60 insertions(+), 123 deletions(-) diff --git a/src/main/java/envoy/client/EnvoyClient.java b/src/main/java/envoy/client/EnvoyClient.java index 5380aed..5d9dca4 100644 --- a/src/main/java/envoy/client/EnvoyClient.java +++ b/src/main/java/envoy/client/EnvoyClient.java @@ -1,12 +1,8 @@ package envoy.client; -import java.io.BufferedReader; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.StringReader; import java.time.Instant; import java.util.Arrays; -import java.util.List; import java.util.Properties; import javax.ws.rs.client.Client; @@ -19,28 +15,12 @@ import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.datatype.DatatypeConfigurationException; import javax.xml.datatype.DatatypeFactory; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.util.EntityUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; -import org.xml.sax.SAXException; import envoy.client.ui.ChatWindow; import envoy.schema.Message; import envoy.schema.Messages; -import envoy.schema.User; -import envoy.schema.Users; import envoy.schema.ObjectFactory; +import envoy.schema.Users; /** * Project: envoy-client
@@ -51,7 +31,7 @@ import envoy.schema.ObjectFactory; public class EnvoyClient { - ChatWindow chatWindow = new ChatWindow(); + ChatWindow chatWindow = new ChatWindow(); private ObjectFactory objectFactory = new ObjectFactory(); private DatatypeFactory datatypeFactory; @@ -143,44 +123,17 @@ public class EnvoyClient { wrapper.getMessage().addAll(Arrays.asList(messages)); return wrapper; } - - public void getUsersListXml () throws ClientProtocolException, IOException, SAXException, ParserConfigurationException { - /*HttpClient client = new DefaultHttpClient(); - HttpGet request = new HttpGet(String.format("%s:%s/envoy-server/rest/user", + public Users getUsersListXml() { + Client client = ClientBuilder.newClient(); + WebTarget target = client.target(String.format("%s:%s/envoy-server/rest/user", serverProps.getProperty("server"), serverProps.getProperty("port"))); - HttpResponse response = client.execute(request); - - BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); - System.out.println(rd.readLine()); - - String inputLine; - StringBuffer response1 = new StringBuffer(); - while((inputLine = rd.readLine()) != null) { - response1.append(inputLine); - } - */ - - Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder() - .parse(String.format("%s:%s/envoy-server/rest/user", - serverProps.getProperty("server"), - serverProps.getProperty("port"))); - NodeList errNodes = doc.getElementsByTagName("User"); - - for (int i = 0; i < errNodes.getLength(); i++) { - if(errNodes.getLength() > 0) { - Element err = (Element)errNodes.item(i); - //System.out.println("Name: " + err.getElementsByTagName("Name").item(0).getTextContent()); - //System.out.println("Id: " + err.getElementsByTagName("ID").item(0).getTextContent()); - User user = new User(); - user.setName(err.getElementsByTagName("Name").item(0).getTextContent()); - user.setID(Long.parseLong(err.getElementsByTagName("ID").item(0).getTextContent())); - chatWindow.addUserToList(user); - - } - } - chatWindow.printUserListElements(); - chatWindow.loadUserJList(); + 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; } } \ No newline at end of file diff --git a/src/main/java/envoy/client/ui/ChatWindow.java b/src/main/java/envoy/client/ui/ChatWindow.java index 056a4c5..2398e52 100644 --- a/src/main/java/envoy/client/ui/ChatWindow.java +++ b/src/main/java/envoy/client/ui/ChatWindow.java @@ -7,9 +7,7 @@ import java.awt.Font; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; -import java.awt.List; import java.io.IOException; -import java.util.ArrayList; import javax.swing.DefaultListModel; import javax.swing.JButton; @@ -19,6 +17,7 @@ import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; +import javax.swing.SwingUtilities; import javax.swing.border.EmptyBorder; import javax.xml.parsers.ParserConfigurationException; @@ -28,6 +27,7 @@ import org.xml.sax.SAXException; import envoy.client.EnvoyClient; import envoy.schema.Message; import envoy.schema.User; +import envoy.schema.Users; /** * Project: envoy-client
@@ -39,13 +39,11 @@ public class ChatWindow extends JFrame { private static final long serialVersionUID = 6865098428255463649L; - private JPanel contentPane = new JPanel(); - private static EnvoyClient envoyClient = new EnvoyClient(); + private JPanel contentPane = new JPanel(); + private static EnvoyClient envoyClient = new EnvoyClient(); public DefaultListModel listModel = new DefaultListModel<>(); - public ArrayList userList = new ArrayList(); - public ChatWindow() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 600, 800); @@ -57,10 +55,10 @@ public class ChatWindow extends JFrame { contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); GridBagLayout gbl_contentPane = new GridBagLayout(); - gbl_contentPane.columnWidths = new int[] { 1, 1, 1 }; - gbl_contentPane.rowHeights = new int[] { 1, 1, 1 }; - gbl_contentPane.columnWeights = new double[] { 0.3, 1.0, 0.1 }; - gbl_contentPane.rowWeights = new double[] { 0.05, 1, 0.07 }; + gbl_contentPane.columnWidths = new int[] { 1, 1, 1 }; + gbl_contentPane.rowHeights = new int[] { 1, 1, 1 }; + gbl_contentPane.columnWeights = new double[] { 0.3, 1.0, 0.1 }; + gbl_contentPane.rowWeights = new double[] { 0.05, 1, 0.07 }; contentPane.setLayout(gbl_contentPane); JList elementList = new JList<>(); @@ -84,10 +82,10 @@ public class ChatWindow extends JFrame { scrollPane.setBorder(null); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); - gbc_scrollPane.fill = GridBagConstraints.BOTH; - gbc_scrollPane.gridwidth = 2; - gbc_scrollPane.gridx = 1; - gbc_scrollPane.gridy = 1; + gbc_scrollPane.fill = GridBagConstraints.BOTH; + gbc_scrollPane.gridwidth = 2; + gbc_scrollPane.gridx = 1; + gbc_scrollPane.gridy = 1; gbc_scrollPane.insets = new Insets(10, 10, 10, 10); @@ -104,9 +102,9 @@ public class ChatWindow extends JFrame { messageEnterTextfield.setBorder(new EmptyBorder(5, 5, 5, 5)); GridBagConstraints gbc_moveSelectionMessageEnterTextfield = new GridBagConstraints(); - gbc_moveSelectionMessageEnterTextfield.fill = GridBagConstraints.BOTH; - gbc_moveSelectionMessageEnterTextfield.gridx = 1; - gbc_moveSelectionMessageEnterTextfield.gridy = 2; + gbc_moveSelectionMessageEnterTextfield.fill = GridBagConstraints.BOTH; + gbc_moveSelectionMessageEnterTextfield.gridx = 1; + gbc_moveSelectionMessageEnterTextfield.gridy = 2; gbc_moveSelectionMessageEnterTextfield.insets = new Insets(10, 10, 10, 10); @@ -120,50 +118,52 @@ public class ChatWindow extends JFrame { GridBagConstraints gbc_moveSelectionPostButton = new GridBagConstraints(); - gbc_moveSelectionPostButton.fill = GridBagConstraints.BOTH; - gbc_moveSelectionPostButton.gridx = 2; - gbc_moveSelectionPostButton.gridy = 2; + gbc_moveSelectionPostButton.fill = GridBagConstraints.BOTH; + gbc_moveSelectionPostButton.gridx = 2; + gbc_moveSelectionPostButton.gridy = 2; gbc_moveSelectionPostButton.insets = new Insets(10, 10, 10, 10); contentPane.add(postButton, gbc_moveSelectionPostButton); postButton.addActionListener((evt) -> { - if (!messageEnterTextfield.getText().isEmpty()) - try { - final Message message = envoyClient.createMessage("Kai", "Maxi", messageEnterTextfield.getText()); - envoyClient.sendMessage(message); - appendMessageToChat(message); - messageEnterTextfield.setText(""); - } catch (Exception e) { - JOptionPane.showMessageDialog(this, - "An exception occured while sending a message. See the log for more details.", - "Exception occured", JOptionPane.ERROR_MESSAGE); - e.printStackTrace(); - } + if (!messageEnterTextfield.getText().isEmpty()) try { + final Message message = envoyClient.createMessage("Kai", "Maxi", messageEnterTextfield.getText()); + envoyClient.sendMessage(message); + appendMessageToChat(message); + messageEnterTextfield.setText(""); + } catch (Exception e) { + JOptionPane.showMessageDialog(this, + "An exception occured while sending a message. See the log for more details.", + "Exception occured", + JOptionPane.ERROR_MESSAGE); + e.printStackTrace(); + } }); - + new Thread(() -> loadUserJList()).start(); } public void loadUserJList() { - // User List - JList userJList = new JList<>(); - DefaultListModel userJListModel = new DefaultListModel<>(); - for (int i = 0; i < userList.size(); i++) { - userJListModel.addElement(userList.get(i)); - } - userJList.setModel(userJListModel); + Users users = envoyClient.getUsersListXml(); - GridBagConstraints gbc_userList = new GridBagConstraints(); - gbc_userList.fill = GridBagConstraints.BOTH; - gbc_userList.gridx = 0; - gbc_userList.gridy = 1; + SwingUtilities.invokeLater(() -> { + // User List + JList userJList = new JList<>(); + DefaultListModel userJListModel = new DefaultListModel<>(); + users.getUser().forEach(user -> userJListModel.addElement(user)); + userJList.setModel(userJListModel); - // gbc_userList.insets = new Insets(10, 10, 10, 10); - System.out.println(userJListModel.getSize()); - System.out.println("test"); + GridBagConstraints gbc_userList = new GridBagConstraints(); + gbc_userList.fill = GridBagConstraints.BOTH; + gbc_userList.gridx = 0; + gbc_userList.gridy = 1; - contentPane.add(userJList, gbc_userList); + // gbc_userList.insets = new Insets(10, 10, 10, 10); + System.out.println(userJListModel.getSize()); + System.out.println("test"); + + contentPane.add(userJList, gbc_userList); + }); } /** @@ -172,9 +172,7 @@ public class ChatWindow extends JFrame { * @param message The message from which to return the text content * @return The first content of type 'text' */ - public String getFirstTextContent(Message message) { - return message.getContent().get(0).getText(); - } + public String getFirstTextContent(Message message) { return message.getContent().get(0).getText(); } /** * Appends a message with sender and message content to the message list. @@ -187,18 +185,6 @@ public class ChatWindow extends JFrame { + ""); } - public void addUserToList(User user) { - userList.add(user); - - } - - public void printUserListElements() { - for (int i = 0; i < userList.size(); i++) { - System.out.println(userList.get(i).getName()); - System.out.println(userList.get(i).getID()); - } - } - public static void main(String[] args) throws ClientProtocolException, IOException, SAXException, ParserConfigurationException { EventQueue.invokeLater(() -> { @@ -209,7 +195,5 @@ public class ChatWindow extends JFrame { e.printStackTrace(); } }); - envoyClient.getUsersListXml(); - System.out.println("asd"); } } \ No newline at end of file