Using JAX-RS to retrieve user list
This commit is contained in:
		| @@ -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: <strong>envoy-client</strong><br> | ||||
| @@ -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; | ||||
|  | ||||
| @@ -144,43 +124,16 @@ public class EnvoyClient { | ||||
| 		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; | ||||
| 	} | ||||
| } | ||||
| @@ -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: <strong>envoy-client</strong><br> | ||||
| @@ -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<String> listModel = new DefaultListModel<>(); | ||||
|  | ||||
| 	public ArrayList<User> userList = new ArrayList<User>(); | ||||
|  | ||||
| 	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<String> 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<User> userJList = new JList<>(); | ||||
| 		DefaultListModel<User> 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<User>				userJList		= new JList<>(); | ||||
| 			DefaultListModel<User>	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 { | ||||
| 				+ "</span></html>"); | ||||
| 	} | ||||
|  | ||||
| 	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"); | ||||
| 	} | ||||
| } | ||||
		Reference in New Issue
	
	Block a user