diff --git a/src/main/java/envoy/server/Startup.java b/src/main/java/envoy/server/Startup.java
index 8991667..0edcfed 100755
--- a/src/main/java/envoy/server/Startup.java
+++ b/src/main/java/envoy/server/Startup.java
@@ -40,7 +40,7 @@ public class Startup {
/**
* Initializes the logger with a new config instance.
- *
+ *
* @since Envoy Server Standalone v0.1-beta
*/
private static void initLogging() {
@@ -60,14 +60,15 @@ public class Startup {
/**
* Starts the server.
*
- * @param args the run configuration. Currently unused.
+ * @param args the run configuration. If it is "no-enter-to-stop" at position 0,
+ * no command to read in an enter press will be generated
* @throws IOException if the server crashes
* @since Envoy Server Standalone v0.1-alpha
*/
public static void main(String[] args) throws IOException {
initLogging();
- Server server = new Server(8080, ObjectMessageReader::new,
+ final Server server = new Server(8080, ObjectMessageReader::new,
new ObjectMessageProcessor(Set.of(new LoginCredentialProcessor(),
new MessageProcessor(),
new GroupMessageProcessor(),
@@ -80,16 +81,18 @@ public class Startup {
new ContactOperationProcessor())));
// Initialize the current message ID
- PersistenceManager persistenceManager = PersistenceManager.getInstance();
+ final PersistenceManager persistenceManager = PersistenceManager.getInstance();
if (persistenceManager.getConfigItemByID("currentMessageId") == null)
persistenceManager.addConfigItem(new envoy.server.data.ConfigItem("currentMessageId", "0"));
server.start();
server.getSocketProcessor().registerSocketIdListener(ConnectionManager.getInstance());
- System.out.println("Press the return key to stop the server...");
- System.in.read();
- System.out.println("Stopped");
- System.exit(0);
+ if (args.length == 0 || !args[0].equalsIgnoreCase("no-enter-to-stop")) {
+ System.out.println("Press the return key to stop the server...");
+ System.in.read();
+ System.out.println("Stopped");
+ System.exit(0);
+ }
}
}
diff --git a/src/main/java/envoy/server/data/GroupMessage.java b/src/main/java/envoy/server/data/GroupMessage.java
index 0cba412..28965ec 100644
--- a/src/main/java/envoy/server/data/GroupMessage.java
+++ b/src/main/java/envoy/server/data/GroupMessage.java
@@ -11,7 +11,7 @@ import javax.persistence.NamedQuery;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
-import envoy.data.MessageBuilder;
+import envoy.data.Group;
/**
* Project: envoy-server-standalone
@@ -71,15 +71,7 @@ public class GroupMessage extends Message {
*/
@Override
public envoy.data.GroupMessage toCommon() {
- // TODO: Attachment
- envoy.data.GroupMessage groupMessage = new MessageBuilder(sender.getID(), recipient.getID(), id).setCreationDate(creationDate)
- .setForwarded(forwarded)
- .setStatus(status)
- .setText(text)
- .buildGroupMessage((envoy.data.Group) recipient.toCommon(), new HashMap<>(memberMessageStatus));
- groupMessage.setReceivedDate(receivedDate);
- groupMessage.setReadDate(readDate);
- return groupMessage;
+ return prepareBuilder().buildGroupMessage((Group) recipient.toCommon(), new HashMap<>(memberMessageStatus));
}
/**
diff --git a/src/main/java/envoy/server/data/Message.java b/src/main/java/envoy/server/data/Message.java
index 7127832..afe66c7 100755
--- a/src/main/java/envoy/server/data/Message.java
+++ b/src/main/java/envoy/server/data/Message.java
@@ -6,6 +6,8 @@ import java.time.LocalDateTime;
import javax.persistence.*;
+import envoy.data.Attachment;
+import envoy.data.Attachment.AttachmentType;
import envoy.data.Message.MessageStatus;
import envoy.data.MessageBuilder;
@@ -63,6 +65,7 @@ public class Message {
protected String text;
protected envoy.data.Message.MessageStatus status;
+ protected AttachmentType attachmentType;
protected byte[] attachment;
protected boolean forwarded;
@@ -91,7 +94,10 @@ public class Message {
sender = persistenceManager.getUserByID(message.getSenderID());
recipient = persistenceManager.getContactByID(message.getRecipientID());
forwarded = message.isForwarded();
- // TODO: Attachment
+ if (message.hasAttachment()) {
+ attachment = message.getAttachment().getData();
+ attachmentType = message.getAttachment().getType();
+ }
}
/**
@@ -102,15 +108,23 @@ public class Message {
* @since Envoy Server Standalone v0.1-alpha
*/
public envoy.data.Message toCommon() {
- // TODO: Attachment
- envoy.data.Message message = new MessageBuilder(sender.getID(), recipient.getID(), id).setText(text)
+ return prepareBuilder().build();
+ }
+
+ /**
+ * @return a message builder containing the state of this message
+ * @since Envoy Server Standalone v0.1-beta
+ */
+ MessageBuilder prepareBuilder() {
+ var builder = new MessageBuilder(sender.getID(), recipient.getID(), id).setText(
+ text)
.setCreationDate(creationDate)
+ .setReceivedDate(receivedDate)
+ .setReadDate(readDate)
.setStatus(status)
- .setForwarded(forwarded)
- .build();
- message.setReceivedDate(receivedDate);
- message.setReadDate(readDate);
- return message;
+ .setForwarded(forwarded);
+ if (attachment != null) builder.setAttachment(new Attachment(attachment, attachmentType));
+ return builder;
}
/**
@@ -250,6 +264,18 @@ public class Message {
*/
public void setAttachment(byte[] attachment) { this.attachment = attachment; }
+ /**
+ * @return the attachmentType
+ * @since Envoy Server Standalone v0.1-beta
+ */
+ public AttachmentType getAttachmentType() { return attachmentType; }
+
+ /**
+ * @param attachmentType the attachmentType to set
+ * @since Envoy Server Standalone v0.1-beta
+ */
+ public void setAttachmentType(AttachmentType attachmentType) { this.attachmentType = attachmentType; }
+
/**
* @return whether this message is a forwarded message
* @since Envoy Server Standalone v0.1-alpha
diff --git a/src/main/java/envoy/server/processors/LoginCredentialProcessor.java b/src/main/java/envoy/server/processors/LoginCredentialProcessor.java
index b562950..fc43207 100755
--- a/src/main/java/envoy/server/processors/LoginCredentialProcessor.java
+++ b/src/main/java/envoy/server/processors/LoginCredentialProcessor.java
@@ -16,7 +16,6 @@ import java.util.logging.Logger;
import javax.persistence.NoResultException;
-import enovy.server.util.VersionUtils;
import envoy.data.LoginCredentials;
import envoy.data.Message.MessageStatus;
import envoy.event.GroupMessageStatusChange;
@@ -27,6 +26,7 @@ import envoy.server.data.PersistenceManager;
import envoy.server.data.User;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
+import envoy.server.util.VersionUtils;
import envoy.util.Bounds;
import envoy.util.EnvoyLog;
diff --git a/src/main/java/enovy/server/util/VersionUtils.java b/src/main/java/envoy/server/util/VersionUtils.java
similarity index 99%
rename from src/main/java/enovy/server/util/VersionUtils.java
rename to src/main/java/envoy/server/util/VersionUtils.java
index ab96890..db4a845 100644
--- a/src/main/java/enovy/server/util/VersionUtils.java
+++ b/src/main/java/envoy/server/util/VersionUtils.java
@@ -1,4 +1,4 @@
-package enovy.server.util;
+package envoy.server.util;
import java.util.regex.Pattern;
diff --git a/src/main/java/enovy/server/util/package-info.java b/src/main/java/envoy/server/util/package-info.java
similarity index 91%
rename from src/main/java/enovy/server/util/package-info.java
rename to src/main/java/envoy/server/util/package-info.java
index f256f4c..f052882 100644
--- a/src/main/java/enovy/server/util/package-info.java
+++ b/src/main/java/envoy/server/util/package-info.java
@@ -8,4 +8,4 @@
* @author Kai S. K. Engelbart
* @since Envoy Server Standalone v0.1-beta
*/
-package enovy.server.util;
+package envoy.server.util;