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 {
 | 
			
		||||
 | 
			
		||||
	private final String	name;
 | 
			
		||||
	private final byte[]	passwordHash;
 | 
			
		||||
 | 
			
		||||
	private static final long serialVersionUID = -7395245059059523314L;
 | 
			
		||||
	private static final long	serialVersionUID	= -7395245059059523314L;
 | 
			
		||||
	private final String		name;
 | 
			
		||||
	private final byte[]		passwordHash;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Creates an in stance of {@link LoginCredentials}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param name     the name of the user
 | 
			
		||||
	 * @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 {
 | 
			
		||||
		this.name		= name;
 | 
			
		||||
		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
 | 
			
		||||
	 * @since Envoy Common v0.2-alpha
 | 
			
		||||
@@ -69,4 +43,31 @@ public class LoginCredentials implements Serializable {
 | 
			
		||||
	 * @since Envoy Common v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	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;
 | 
			
		||||
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
import java.text.SimpleDateFormat;
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 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>
 | 
			
		||||
 *
 | 
			
		||||
 * @author Kai S. K. Engelbart
 | 
			
		||||
 * @author Leon Hofmeister
 | 
			
		||||
 * @since Envoy Common v0.2-alpha
 | 
			
		||||
 */
 | 
			
		||||
public abstract class Message implements Serializable {
 | 
			
		||||
 | 
			
		||||
	private final long	id;
 | 
			
		||||
	private final User	sender, recipient;
 | 
			
		||||
	private final Date	date;
 | 
			
		||||
	/**
 | 
			
		||||
	 * This enum defines all possible statuses a {link Message} can have.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy Common v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public static enum MessageStatus {
 | 
			
		||||
 | 
			
		||||
		/**
 | 
			
		||||
		 * 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 final long			id;
 | 
			
		||||
 | 
			
		||||
	private final User sender, recipient;
 | 
			
		||||
 | 
			
		||||
	private final Date date;
 | 
			
		||||
 | 
			
		||||
	private final String text;
 | 
			
		||||
 | 
			
		||||
	private final MessageAttachment<?> messageAttachment;
 | 
			
		||||
 | 
			
		||||
	private MessageStatus status;
 | 
			
		||||
 | 
			
		||||
	private static final long serialVersionUID = -4393477412979594435L;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initializes a {@link Message} from the client's perspective. The current date
 | 
			
		||||
	 * is used as the message date and the status is set to
 | 
			
		||||
	 * {@link MessageStatus#WAITING}.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param id        unique ID
 | 
			
		||||
	 * @param sender    the user who sends the message
 | 
			
		||||
	 * @param recipient the user who receives the message
 | 
			
		||||
	 * @param <T>        the type of the attachment
 | 
			
		||||
	 * @param id         unique ID
 | 
			
		||||
	 * @param sender     the user who sends 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
 | 
			
		||||
	 */
 | 
			
		||||
	public Message(long id, User sender, User recipient) {
 | 
			
		||||
		this.id			= id;
 | 
			
		||||
		this.sender		= sender;
 | 
			
		||||
		this.recipient	= recipient;
 | 
			
		||||
		date			= new Date();
 | 
			
		||||
		status			= MessageStatus.WAITING;
 | 
			
		||||
	public <T> Message(long id, User sender, User recipient, String text, @SuppressWarnings("rawtypes") Optional<MessageAttachment> attachment) {
 | 
			
		||||
		this.id					= id;
 | 
			
		||||
		this.sender				= sender;
 | 
			
		||||
		this.recipient			= recipient;
 | 
			
		||||
		this.text				= text;
 | 
			
		||||
		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
 | 
			
		||||
	 * @since Envoy Common v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	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
 | 
			
		||||
	 * @since Envoy Common v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	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>
 | 
			
		||||
	 * <br>
 | 
			
		||||
@@ -91,7 +146,14 @@ public abstract class Message implements Serializable {
 | 
			
		||||
		status = MessageStatus.values()[status.ordinal() + 1];
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	public static enum MessageStatus {
 | 
			
		||||
		WAITING, SENT, RECEIVED, READ
 | 
			
		||||
	@Override
 | 
			
		||||
	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 {
 | 
			
		||||
 | 
			
		||||
	private final long		id;
 | 
			
		||||
	private final String	name;
 | 
			
		||||
	/**
 | 
			
		||||
	 * This enum defines all possible statuses a user can have.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @since Envoy Common v0.2-alpha
 | 
			
		||||
	 */
 | 
			
		||||
	public static enum UserStatus {
 | 
			
		||||
 | 
			
		||||
	private UserStatus status;
 | 
			
		||||
		/**
 | 
			
		||||
		 * 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 String name;
 | 
			
		||||
 | 
			
		||||
	private UserStatus status;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Initializes a {@link User}. The {@link UserStatus} is set to
 | 
			
		||||
	 * {@link UserStatus#OFFLINE}.
 | 
			
		||||
@@ -36,9 +66,6 @@ public class User implements Serializable {
 | 
			
		||||
		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}
 | 
			
		||||
	 * @since Envoy Client v0.2-alpha
 | 
			
		||||
@@ -65,7 +92,6 @@ public class User implements Serializable {
 | 
			
		||||
	 */
 | 
			
		||||
	public void setStatus(UserStatus status) { this.status = status; }
 | 
			
		||||
 | 
			
		||||
	public static enum UserStatus {
 | 
			
		||||
		ONLINE, AWAY, BUSY, OFFLINE;
 | 
			
		||||
	}
 | 
			
		||||
	@Override
 | 
			
		||||
	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;
 | 
			
		||||
 | 
			
		||||
	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); }
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @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); }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,6 @@ import java.io.ObjectOutputStream;
 | 
			
		||||
import java.io.OutputStream;
 | 
			
		||||
import java.io.Serializable;
 | 
			
		||||
 | 
			
		||||
import envoy.exception.EnvoyException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Project: <strong>envoy-client</strong><br>
 | 
			
		||||
 * File: <strong>SerializationUtils.java</strong><br>
 | 
			
		||||
@@ -23,16 +21,19 @@ import envoy.exception.EnvoyException;
 | 
			
		||||
 */
 | 
			
		||||
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.
 | 
			
		||||
	 *
 | 
			
		||||
	 * @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
 | 
			
		||||
	 * @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
 | 
			
		||||
	 */
 | 
			
		||||
	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);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * @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 {
 | 
			
		||||
		try (ObjectInputStream oin = new ObjectInputStream(in)) {
 | 
			
		||||
			return serializedClass.cast(oin.readObject());
 | 
			
		||||
@@ -90,5 +103,5 @@ public class SerializationUtils {
 | 
			
		||||
		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