built general message class instead of subtypes of it
additionally fixed malformed Javadoc in the entire repository
This commit is contained in:
		@@ -15,49 +15,23 @@ import java.util.Formatter;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class LoginCredentials implements Serializable {
 | 
					public class LoginCredentials implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final long	serialVersionUID	= -7395245059059523314L;
 | 
				
			||||||
	private final String		name;
 | 
						private final String		name;
 | 
				
			||||||
	private final byte[]		passwordHash;
 | 
						private final byte[]		passwordHash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final long serialVersionUID = -7395245059059523314L;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Creates an in stance of {@link LoginCredentials}.
 | 
						 * Creates an in stance of {@link LoginCredentials}.
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @param name     the name of the user
 | 
						 * @param name     the name of the user
 | 
				
			||||||
	 * @param password the password of the user (will be converted to a hash)
 | 
						 * @param password the password of the user (will be converted to a hash)
 | 
				
			||||||
	 * @throws NoSuchAlgorithmException
 | 
						 * @throws NoSuchAlgorithmException if the algorithm used is unknown
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public LoginCredentials(String name, char[] password) throws NoSuchAlgorithmException {
 | 
						public LoginCredentials(String name, char[] password) throws NoSuchAlgorithmException {
 | 
				
			||||||
		this.name		= name;
 | 
							this.name		= name;
 | 
				
			||||||
		passwordHash	= getSha256(toByteArray(password));
 | 
							passwordHash	= getSha256(toByteArray(password));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
	public String toString() {
 | 
					 | 
				
			||||||
		Formatter form = new Formatter();
 | 
					 | 
				
			||||||
		form.format("LoginCredentials[name=%s,passwordHash=", name);
 | 
					 | 
				
			||||||
		for (int i = 0; i < passwordHash.length; i++)
 | 
					 | 
				
			||||||
			form.format("%02x", passwordHash[i]);
 | 
					 | 
				
			||||||
		form.format("]");
 | 
					 | 
				
			||||||
		String str = form.toString();
 | 
					 | 
				
			||||||
		form.close();
 | 
					 | 
				
			||||||
		return str;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private byte[] toByteArray(char[] chars) {
 | 
					 | 
				
			||||||
		byte[] bytes = new byte[chars.length * 2];
 | 
					 | 
				
			||||||
		for (int i = 0; i < chars.length; ++i) {
 | 
					 | 
				
			||||||
			bytes[i * 2]		= (byte) (chars[i] >> 8);
 | 
					 | 
				
			||||||
			bytes[i * 2 + 1]	= (byte) (chars[i]);
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		return bytes;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private byte[] getSha256(byte[] input) throws NoSuchAlgorithmException {
 | 
					 | 
				
			||||||
		MessageDigest md = MessageDigest.getInstance("SHA-256");
 | 
					 | 
				
			||||||
		return md.digest(input);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return the name of the user performing the login
 | 
						 * @return the name of the user performing the login
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
@@ -69,4 +43,31 @@ public class LoginCredentials implements Serializable {
 | 
				
			|||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public byte[] getPasswordHash() { return passwordHash; }
 | 
						public byte[] getPasswordHash() { return passwordHash; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private byte[] getSha256(byte[] input) throws NoSuchAlgorithmException {
 | 
				
			||||||
 | 
							MessageDigest md = MessageDigest.getInstance("SHA-256");
 | 
				
			||||||
 | 
							return md.digest(input);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private byte[] toByteArray(char[] chars) {
 | 
				
			||||||
 | 
							byte[] bytes = new byte[chars.length * 2];
 | 
				
			||||||
 | 
							for (int i = 0; i < chars.length; ++i) {
 | 
				
			||||||
 | 
								bytes[i * 2]		= (byte) (chars[i] >> 8);
 | 
				
			||||||
 | 
								bytes[i * 2 + 1]	= (byte) (chars[i]);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return bytes;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public String toString() {
 | 
				
			||||||
 | 
							try (Formatter form = new Formatter()) {
 | 
				
			||||||
 | 
								form.format("LoginCredentials[name=%s,passwordHash=", name);
 | 
				
			||||||
 | 
								for (byte element : passwordHash) {
 | 
				
			||||||
 | 
									form.format("%02x", element);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								form.format("]");
 | 
				
			||||||
 | 
								String str = form.toString();
 | 
				
			||||||
 | 
								return str;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -1,7 +1,9 @@
 | 
				
			|||||||
package envoy.data;
 | 
					package envoy.data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.Serializable;
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					import java.text.SimpleDateFormat;
 | 
				
			||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
 | 
					import java.util.Optional;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Represents a unique message with a unique, numeric ID. Further metadata
 | 
					 * Represents a unique message with a unique, numeric ID. Further metadata
 | 
				
			||||||
@@ -13,66 +15,119 @@ import java.util.Date;
 | 
				
			|||||||
 * Created: <strong>28.12.2019</strong><br>
 | 
					 * Created: <strong>28.12.2019</strong><br>
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * @author Kai S. K. Engelbart
 | 
					 * @author Kai S. K. Engelbart
 | 
				
			||||||
 | 
					 * @author Leon Hofmeister
 | 
				
			||||||
 * @since Envoy Common v0.2-alpha
 | 
					 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
public abstract class Message implements Serializable {
 | 
					public abstract class Message implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private final long	id;
 | 
						/**
 | 
				
			||||||
	private final User	sender, recipient;
 | 
						 * This enum defines all possible statuses a {link Message} can have.
 | 
				
			||||||
	private final Date	date;
 | 
						 *
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static enum MessageStatus {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private MessageStatus status;
 | 
							/**
 | 
				
			||||||
 | 
							 * is selected, if a message was sent but not received by the server yet.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							WAITING,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * is selected, if a sent message was received by the server.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							SENT,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * is selected, if a message was delivered from the server to the recipient, but
 | 
				
			||||||
 | 
							 * has not been read yet.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							RECEIVED,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * is selected, if a recipient opened the corresponding chat of said message.
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							READ
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final long	serialVersionUID	= -4393477412979594435L;
 | 
						private static final long	serialVersionUID	= -4393477412979594435L;
 | 
				
			||||||
 | 
						private final long			id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final User sender, recipient;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final Date date;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final String text;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private final MessageAttachment<?> messageAttachment;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private MessageStatus status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Initializes a {@link Message} from the client's perspective. The current date
 | 
						 * Initializes a {@link Message} from the client's perspective. The current date
 | 
				
			||||||
	 * is used as the message date and the status is set to
 | 
						 * is used as the message date and the status is set to
 | 
				
			||||||
	 * {@link MessageStatus#WAITING}.
 | 
						 * {@link MessageStatus#WAITING}.
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
 | 
						 * @param <T>        the type of the attachment
 | 
				
			||||||
	 * @param id         unique ID
 | 
						 * @param id         unique ID
 | 
				
			||||||
	 * @param sender     the user who sends the message
 | 
						 * @param sender     the user who sends the message
 | 
				
			||||||
	 * @param recipient  the user who receives the message
 | 
						 * @param recipient  the user who receives the message
 | 
				
			||||||
 | 
						 * @param text       the text content of the message
 | 
				
			||||||
 | 
						 * @param attachment the attachment of the message, if present
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public Message(long id, User sender, User recipient) {
 | 
						public <T> Message(long id, User sender, User recipient, String text, @SuppressWarnings("rawtypes") Optional<MessageAttachment> attachment) {
 | 
				
			||||||
		this.id					= id;
 | 
							this.id					= id;
 | 
				
			||||||
		this.sender				= sender;
 | 
							this.sender				= sender;
 | 
				
			||||||
		this.recipient			= recipient;
 | 
							this.recipient			= recipient;
 | 
				
			||||||
		date			= new Date();
 | 
							this.text				= text;
 | 
				
			||||||
		status			= MessageStatus.WAITING;
 | 
							this.messageAttachment	= attachment.isEmpty() ? null : attachment.get();
 | 
				
			||||||
 | 
							this.date				= new Date();
 | 
				
			||||||
 | 
							this.status				= MessageStatus.WAITING;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * @return the ID of this message
 | 
					 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public long getId() { return id; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * @return the sender of this message
 | 
					 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public User getSender() { return sender; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * @return the recipient of this message
 | 
					 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public User getRecipient() { return recipient; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return the date at which this message was created
 | 
						 * @return the date at which this message was created
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public Date getDate() { return date; }
 | 
						public Date getDate() { return date; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @return the ID of this message
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public long getId() { return id; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @param <T> the type of the message attachment
 | 
				
			||||||
 | 
						 * @return the messageAttachment
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public <T> MessageAttachment<?> getMessageAttachment() { return messageAttachment; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @return the recipient of this message
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public User getRecipient() { return recipient; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @return the sender of this message
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public User getSender() { return sender; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return the current status of this message
 | 
						 * @return the current status of this message
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public MessageStatus getStatus() { return status; }
 | 
						public MessageStatus getStatus() { return status; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @return the text content of this message
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public String getText() { return text; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Changes the current {@link MessageStatus} to the next logical status.<br>
 | 
						 * Changes the current {@link MessageStatus} to the next logical status.<br>
 | 
				
			||||||
	 * <br>
 | 
						 * <br>
 | 
				
			||||||
@@ -91,7 +146,14 @@ public abstract class Message implements Serializable {
 | 
				
			|||||||
		status = MessageStatus.values()[status.ordinal() + 1];
 | 
							status = MessageStatus.values()[status.ordinal() + 1];
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static enum MessageStatus {
 | 
						@Override
 | 
				
			||||||
		WAITING, SENT, RECEIVED, READ
 | 
						public String toString() {
 | 
				
			||||||
 | 
							return String.format("TextMessage[id=%d,sender=%s,recipient=%s,date=%s,status=%s,content=%s]",
 | 
				
			||||||
 | 
									id,
 | 
				
			||||||
 | 
									sender,
 | 
				
			||||||
 | 
									recipient,
 | 
				
			||||||
 | 
									new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date),
 | 
				
			||||||
 | 
									status,
 | 
				
			||||||
 | 
									text);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
							
								
								
									
										26
									
								
								src/main/java/envoy/data/MessageAttachment.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/main/java/envoy/data/MessageAttachment.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					package envoy.data;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.swing.Scrollable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * This Interface should be used for any type supposed to be a {@link Message}
 | 
				
			||||||
 | 
					 * attachment (i.e. images or sound).<br>
 | 
				
			||||||
 | 
					 * <br>
 | 
				
			||||||
 | 
					 * Project: <strong>envoy-common</strong><br>
 | 
				
			||||||
 | 
					 * File: <strong>MessageAttachment.java</strong><br>
 | 
				
			||||||
 | 
					 * Created: <strong>30 Dec 2019</strong><br>
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author Leon Hofmeister
 | 
				
			||||||
 | 
					 * @param <T> the type of this message attachment
 | 
				
			||||||
 | 
					 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public interface MessageAttachment<T> extends Serializable, Scrollable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @return the type implementing this interface
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						T get();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,54 +0,0 @@
 | 
				
			|||||||
package envoy.data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import java.text.SimpleDateFormat;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					 | 
				
			||||||
 * Represents a {@link Message} with content that is comprised of text.<br>
 | 
					 | 
				
			||||||
 * <br>
 | 
					 | 
				
			||||||
 * Project: <strong>envoy-common</strong><br>
 | 
					 | 
				
			||||||
 * File: <strong>TextMessage.java</strong><br>
 | 
					 | 
				
			||||||
 * Created: <strong>28.12.2019</strong><br>
 | 
					 | 
				
			||||||
 * 
 | 
					 | 
				
			||||||
 * @author Kai S. K. Engelbart
 | 
					 | 
				
			||||||
 * @since Envoy Common v0.2-alpha
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
public class TextMessage extends Message {
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private final String content;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	private static final long serialVersionUID = 1538164720632899917L;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * Initializes a {@link TextMessage} from the client's perspective. The current
 | 
					 | 
				
			||||||
	 * date
 | 
					 | 
				
			||||||
	 * is used as the message date and the status is set to
 | 
					 | 
				
			||||||
	 * {@link envoy.data.Message.MessageStatus#WAITING}.
 | 
					 | 
				
			||||||
	 * 
 | 
					 | 
				
			||||||
	 * @param id        unique ID
 | 
					 | 
				
			||||||
	 * @param sender    the user who sends the message
 | 
					 | 
				
			||||||
	 * @param recipient the user who receives the message
 | 
					 | 
				
			||||||
	 * @param content   the content of the message
 | 
					 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public TextMessage(long id, User sender, User recipient, String content) {
 | 
					 | 
				
			||||||
		super(id, sender, recipient);
 | 
					 | 
				
			||||||
		this.content = content;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
	public String toString() {
 | 
					 | 
				
			||||||
		return String.format("TextMessage[id=%d,sender=%s,recipient=%s,date=%s,status=%s,content=%s]",
 | 
					 | 
				
			||||||
				getId(),
 | 
					 | 
				
			||||||
				getSender(),
 | 
					 | 
				
			||||||
				getRecipient(),
 | 
					 | 
				
			||||||
				new SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(getDate()),
 | 
					 | 
				
			||||||
				getStatus(),
 | 
					 | 
				
			||||||
				content);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
					 | 
				
			||||||
	 * @return the content of this {@link TextMessage}
 | 
					 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
					 | 
				
			||||||
	 */
 | 
					 | 
				
			||||||
	public String getContent() { return content; }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -15,13 +15,43 @@ import java.io.Serializable;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class User implements Serializable {
 | 
					public class User implements Serializable {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * This enum defines all possible statuses a user can have.
 | 
				
			||||||
 | 
						 *
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public static enum UserStatus {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * select this, if a user is online and can be interacted with
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							ONLINE,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * select this, if a user is online but unavailable at the moment (sudden
 | 
				
			||||||
 | 
							 * interruption)
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							AWAY,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * select this, if a user is online but unavailable at the moment (polite way)
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							BUSY,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							/**
 | 
				
			||||||
 | 
							 * select this, if a user is offline
 | 
				
			||||||
 | 
							 */
 | 
				
			||||||
 | 
							OFFLINE;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final long serialVersionUID = 3530947374856708236L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private final long id;
 | 
						private final long id;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private final String name;
 | 
						private final String name;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private UserStatus status;
 | 
						private UserStatus status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static final long serialVersionUID = 3530947374856708236L;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Initializes a {@link User}. The {@link UserStatus} is set to
 | 
						 * Initializes a {@link User}. The {@link UserStatus} is set to
 | 
				
			||||||
	 * {@link UserStatus#OFFLINE}.
 | 
						 * {@link UserStatus#OFFLINE}.
 | 
				
			||||||
@@ -36,9 +66,6 @@ public class User implements Serializable {
 | 
				
			|||||||
		status		= UserStatus.OFFLINE;
 | 
							status		= UserStatus.OFFLINE;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
					 | 
				
			||||||
	public String toString() { return String.format("User[id=%d,name=%s,status=%s]", id, name, status); }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * @return the ID of this {@link User}
 | 
						 * @return the ID of this {@link User}
 | 
				
			||||||
	 * @since Envoy Client v0.2-alpha
 | 
						 * @since Envoy Client v0.2-alpha
 | 
				
			||||||
@@ -65,7 +92,6 @@ public class User implements Serializable {
 | 
				
			|||||||
	 */
 | 
						 */
 | 
				
			||||||
	public void setStatus(UserStatus status) { this.status = status; }
 | 
						public void setStatus(UserStatus status) { this.status = status; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public static enum UserStatus {
 | 
						@Override
 | 
				
			||||||
		ONLINE, AWAY, BUSY, OFFLINE;
 | 
						public String toString() { return String.format("User[id=%d,name=%s,status=%s]", id, name, status); }
 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -12,9 +12,24 @@ public class EnvoyException extends Exception {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	private static final long serialVersionUID = 2096147309395387479L;
 | 
						private static final long serialVersionUID = 2096147309395387479L;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	public EnvoyException(String message, Throwable cause) { super(message, cause); }
 | 
						/**
 | 
				
			||||||
 | 
						 * @param message the message to display once this Exception is thrown
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public EnvoyException(String message) { super(message); }
 | 
						public EnvoyException(String message) { super(message); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @param message the message to display once this Exception is thrown
 | 
				
			||||||
 | 
						 * @param cause   the {@link Throwable} which resulted in the throw of an
 | 
				
			||||||
 | 
						 *                EnvoyException
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						public EnvoyException(String message, Throwable cause) { super(message, cause); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @param cause the {@link Throwable} which resulted in the throw of an
 | 
				
			||||||
 | 
						 *              EnvoyException
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public EnvoyException(Throwable cause) { super(cause); }
 | 
						public EnvoyException(Throwable cause) { super(cause); }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,8 +11,6 @@ import java.io.ObjectOutputStream;
 | 
				
			|||||||
import java.io.OutputStream;
 | 
					import java.io.OutputStream;
 | 
				
			||||||
import java.io.Serializable;
 | 
					import java.io.Serializable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import envoy.exception.EnvoyException;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 * Project: <strong>envoy-client</strong><br>
 | 
					 * Project: <strong>envoy-client</strong><br>
 | 
				
			||||||
 * File: <strong>SerializationUtils.java</strong><br>
 | 
					 * File: <strong>SerializationUtils.java</strong><br>
 | 
				
			||||||
@@ -23,16 +21,19 @@ import envoy.exception.EnvoyException;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class SerializationUtils {
 | 
					public class SerializationUtils {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private SerializationUtils() {}
 | 
						private static byte[] intToBytes(int n) { return new byte[] { (byte) (n >>> 24), (byte) (n >>> 16), (byte) (n >>> 8), (byte) n }; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/**
 | 
						/**
 | 
				
			||||||
	 * Deserializes an arbitrary {@link Serializable} object from a file.
 | 
						 * Deserializes an arbitrary {@link Serializable} object from a file.
 | 
				
			||||||
	 *
 | 
						 *
 | 
				
			||||||
	 * @param <T>             the type of the object to deserialize
 | 
						 * @param <T>             the type of the object to deserialize
 | 
				
			||||||
	 * @param file            the file deserialize from
 | 
						 * @param file            the file to deserialize from
 | 
				
			||||||
	 * @param serializedClass the class of the object to deserialize
 | 
						 * @param serializedClass the class of the object to deserialize
 | 
				
			||||||
	 * @return the deserialized object
 | 
						 * @return the deserialized object
 | 
				
			||||||
	 * @throws EnvoyException if an error occurred during deserialization
 | 
						 * @throws IOException            if something failed while deserializing the
 | 
				
			||||||
 | 
						 *                                object
 | 
				
			||||||
 | 
						 * @throws ClassNotFoundException if the deserialized object can not be linked
 | 
				
			||||||
 | 
						 *                                to a class
 | 
				
			||||||
	 * @since Envoy Common v0.2-alpha
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	public static <T extends Serializable> T read(File file, Class<T> serializedClass) throws IOException, ClassNotFoundException {
 | 
						public static <T extends Serializable> T read(File file, Class<T> serializedClass) throws IOException, ClassNotFoundException {
 | 
				
			||||||
@@ -40,6 +41,18 @@ public class SerializationUtils {
 | 
				
			|||||||
		return read(new FileInputStream(file), serializedClass);
 | 
							return read(new FileInputStream(file), serializedClass);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/**
 | 
				
			||||||
 | 
						 * @param <T>             the deserialized object
 | 
				
			||||||
 | 
						 * @param in              the {@link InputStream} of a serialized Object
 | 
				
			||||||
 | 
						 * @param serializedClass the object type to convert the deserialized object
 | 
				
			||||||
 | 
						 *                        into
 | 
				
			||||||
 | 
						 * @return the deserialized object
 | 
				
			||||||
 | 
						 * @throws IOException            if something failed while deserializing the
 | 
				
			||||||
 | 
						 *                                object
 | 
				
			||||||
 | 
						 * @throws ClassNotFoundException if the deserialized object can not be linked
 | 
				
			||||||
 | 
						 *                                to a class
 | 
				
			||||||
 | 
						 * @since Envoy Common v0.2-alpha
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
	public static <T extends Serializable> T read(InputStream in, Class<T> serializedClass) throws IOException, ClassNotFoundException {
 | 
						public static <T extends Serializable> T read(InputStream in, Class<T> serializedClass) throws IOException, ClassNotFoundException {
 | 
				
			||||||
		try (ObjectInputStream oin = new ObjectInputStream(in)) {
 | 
							try (ObjectInputStream oin = new ObjectInputStream(in)) {
 | 
				
			||||||
			return serializedClass.cast(oin.readObject());
 | 
								return serializedClass.cast(oin.readObject());
 | 
				
			||||||
@@ -90,5 +103,5 @@ public class SerializationUtils {
 | 
				
			|||||||
		out.write(objBytes);
 | 
							out.write(objBytes);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	private static byte[] intToBytes(int n) { return new byte[] { (byte) (n >>> 24), (byte) (n >>> 16), (byte) (n >>> 8), (byte) n }; }
 | 
						private SerializationUtils() {}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user