From c4f156e36b67276ddbf5afca4090c8d43fe59d0d Mon Sep 17 00:00:00 2001 From: Reinier van den Born Date: Tue, 12 Jan 2016 12:33:25 +0100 Subject: [PATCH] Added message ID and received date Added method to retrieve message by ID. --- .../java/org/subethamail/wiser/Wiser.java | 23 +++++++++++++- .../org/subethamail/wiser/WiserMessage.java | 31 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/subethamail/wiser/Wiser.java b/src/main/java/org/subethamail/wiser/Wiser.java index 6efe1f113..8d5cd34b8 100644 --- a/src/main/java/org/subethamail/wiser/Wiser.java +++ b/src/main/java/org/subethamail/wiser/Wiser.java @@ -134,7 +134,13 @@ public void deliver(String from, String recipient, InputStream data) throws TooM log.debug("Creating message from data with " + bytes.length + " bytes"); // create a new WiserMessage. - this.messages.add(new WiserMessage(this, from, recipient, bytes)); + WiserMessage mess = new WiserMessage(this, from, recipient, bytes); + if (this.messages.add(mess)) { + mess.setId( this.messages.size()); + } + else { + log.error( "Failed to add new message from "+from+" to list"); + } } /** @@ -157,6 +163,21 @@ public List getMessages() { return this.messages; } + + /** + * Returns WiserMessage identified with ID. + *

+ * Message is currently identified by position in messages array. + * Because arrays are 0 based, we need to subtract 1 to get the proper index + */ + public WiserMessage getMessage( long id ) + { + if (id > 0 && id <= this.messages.size()) { + int index = (int) id-1; + return this.messages.get(index); + } + return null; + } /** * @return the server implementation diff --git a/src/main/java/org/subethamail/wiser/WiserMessage.java b/src/main/java/org/subethamail/wiser/WiserMessage.java index 86fda3adb..9a4fe3e28 100644 --- a/src/main/java/org/subethamail/wiser/WiserMessage.java +++ b/src/main/java/org/subethamail/wiser/WiserMessage.java @@ -2,6 +2,7 @@ import java.io.ByteArrayInputStream; import java.io.PrintStream; +import java.util.Date; import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; @@ -14,10 +15,14 @@ */ public class WiserMessage { + static final long NO_ID = -1L; + byte[] messageData; Wiser wiser; String envelopeSender; String envelopeReceiver; + Date receivedAt; + long id = NO_ID; WiserMessage(Wiser wiser, String envelopeSender, String envelopeReceiver, byte[] messageData) { @@ -25,6 +30,8 @@ public class WiserMessage this.envelopeSender = envelopeSender; this.envelopeReceiver = envelopeReceiver; this.messageData = messageData; + this.receivedAt = new Date(); + this.id = NO_ID; // id is set by Wiser.deliver } /** @@ -36,6 +43,22 @@ public MimeMessage getMimeMessage() throws MessagingException return new MimeMessage(this.wiser.getSession(), new ByteArrayInputStream(this.messageData)); } + /** + * Get message identifier + */ + + public long getId() { + return this.id; + } + + /** + * Set message identifier + */ + + public void setId( long id ) { + this.id = id; + } + /** * Get's the raw message DATA. */ @@ -59,6 +82,14 @@ public String getEnvelopeSender() { return this.envelopeSender; } + + /** + * Get's date the mail was received + */ + public Date getReceivedAt() + { + return this.receivedAt; + } /** * Dumps the rough contents of the message for debugging purposes