JAMES-2414 provide a default getAttachment implementation to have homogeneous MailboxMessage behavior at runtime
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/2724e893 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/2724e893 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/2724e893 Branch: refs/heads/master Commit: 2724e8937ff06be3108bb48aa31c987770133008 Parents: 71c4d39 Author: Matthieu Baechler <[email protected]> Authored: Mon Jun 18 17:44:10 2018 +0200 Committer: benwa <[email protected]> Committed: Tue Jun 19 15:09:53 2018 +0700 ---------------------------------------------------------------------- .../mailbox/hbase/mail/HBaseMailboxMessage.java | 9 +++++++-- .../jcr/mail/model/JCRMailboxMessage.java | 9 +++++++-- .../openjpa/AbstractJPAMailboxMessage.java | 9 +++++++-- .../maildir/mail/model/MaildirMessage.java | 8 ++++++-- .../mailbox/store/StoreMessageManager.java | 20 +++++++------------- 5 files changed, 34 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/2724e893/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java index 6a45e36..e94f5c8 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessage.java @@ -34,7 +34,6 @@ import java.util.List; import javax.mail.Flags; -import org.apache.commons.lang.NotImplementedException; import org.apache.hadoop.conf.Configuration; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; @@ -47,8 +46,10 @@ import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.FlagsFactory; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.Property; +import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.search.comparator.UidComparator; +import org.apache.james.mime4j.MimeException; import com.google.common.base.Objects; @@ -354,6 +355,10 @@ public class HBaseMailboxMessage implements MailboxMessage { @Override public List<MessageAttachment> getAttachments() { - throw new NotImplementedException("Attachments are not implemented"); + try { + return new MessageParser().retrieveAttachments(getFullContent()); + } catch (MimeException | IOException e) { + throw new RuntimeException(e); + } } } http://git-wip-us.apache.org/repos/asf/james-project/blob/2724e893/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java index 5db9a03..ff095e9 100644 --- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java +++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/mail/model/JCRMailboxMessage.java @@ -36,7 +36,6 @@ import javax.mail.util.SharedByteArrayInputStream; import org.apache.commons.io.IOUtils; import org.apache.commons.io.input.BoundedInputStream; -import org.apache.commons.lang3.NotImplementedException; import org.apache.jackrabbit.JcrConstants; import org.apache.jackrabbit.commons.JcrUtils; import org.apache.james.mailbox.MessageUid; @@ -51,8 +50,10 @@ import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.FlagsFactory; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.Property; +import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.search.comparator.UidComparator; +import org.apache.james.mime4j.MimeException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -710,6 +711,10 @@ public class JCRMailboxMessage implements MailboxMessage, JCRImapConstants, Pers @Override public List<MessageAttachment> getAttachments() { - throw new NotImplementedException("Attachments are not implemented"); + try { + return new MessageParser().retrieveAttachments(getFullContent()); + } catch (MimeException | IOException e) { + throw new RuntimeException(e); + } } } http://git-wip-us.apache.org/repos/asf/james-project/blob/2724e893/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java index 0a37886..5480e1d 100644 --- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java +++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/model/openjpa/AbstractJPAMailboxMessage.java @@ -42,7 +42,6 @@ import javax.persistence.NamedQuery; import javax.persistence.OneToMany; import javax.persistence.OrderBy; -import org.apache.commons.lang.NotImplementedException; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.jpa.JPAId; @@ -58,8 +57,10 @@ import org.apache.james.mailbox.store.mail.model.DelegatingMailboxMessage; import org.apache.james.mailbox.store.mail.model.FlagsFactory; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.Property; +import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.search.comparator.UidComparator; +import org.apache.james.mime4j.MimeException; import org.apache.openjpa.persistence.jdbc.ElementJoinColumn; import org.apache.openjpa.persistence.jdbc.ElementJoinColumns; import org.apache.openjpa.persistence.jdbc.Index; @@ -508,7 +509,11 @@ public abstract class AbstractJPAMailboxMessage implements MailboxMessage { @Override public List<MessageAttachment> getAttachments() { - throw new NotImplementedException("Attachments are not implemented"); + try { + return new MessageParser().retrieveAttachments(getFullContent()); + } catch (MimeException | IOException e) { + throw new RuntimeException(e); + } } } http://git-wip-us.apache.org/repos/asf/james-project/blob/2724e893/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java index 1f42c9c..b1f669d 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/model/MaildirMessage.java @@ -29,13 +29,13 @@ import java.util.List; import javax.mail.util.SharedFileInputStream; import org.apache.commons.io.IOUtils; -import org.apache.commons.lang3.NotImplementedException; import org.apache.james.mailbox.maildir.MaildirMessageName; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.Message; import org.apache.james.mailbox.store.mail.model.Property; +import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.streaming.CountingInputStream; import org.apache.james.mailbox.store.streaming.LimitingFileInputStream; @@ -282,7 +282,11 @@ public class MaildirMessage implements Message { @Override public List<MessageAttachment> getAttachments() { - throw new NotImplementedException("Attachments are not implemented"); + try { + return new MessageParser().retrieveAttachments(getFullContent()); + } catch (MimeException | IOException e) { + throw new RuntimeException(e); + } } } http://git-wip-us.apache.org/repos/asf/james-project/blob/2724e893/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index 72274f6..307994a 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -469,19 +469,13 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana return new SimpleMailboxMessage(messageIdFactory.generate(), internalDate, size, bodyStartOctet, content, flags, propertyBuilder, getMailboxEntity().getMailboxId(), attachments); } - protected MailboxMessage copyMessage(MailboxMessage message) throws MailboxException { - SimpleMailboxMessage copy = copyMessageWithoutMetadata(message); - copy.setUid(message.getUid()); - copy.setModSeq(message.getModSeq()); - return copy; - } - - private SimpleMailboxMessage copyMessageWithoutMetadata(MailboxMessage message) throws MailboxException { - if (messageCapabilities.contains(MailboxManager.MessageCapabilities.Attachment)) { - return SimpleMailboxMessage.copy(message.getMailboxId(), message); - } else { - return SimpleMailboxMessage.copyWithoutAttachments(message.getMailboxId(), message); - } + private MailboxMessage copyMessage(MailboxMessage message) throws MailboxException { + return SimpleMailboxMessage + .from(message) + .mailboxId(message.getMailboxId()) + .uid(message.getUid()) + .modseq(message.getModSeq()) + .build(); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
