MAILBOX-277 append message return a ComposedMessageId It starts the transition to a MessageId based API.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9e907560 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9e907560 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9e907560 Branch: refs/heads/master Commit: 9e90756098f7c86d58003b5fd4ac29758d29138e Parents: 3e06733 Author: Matthieu Baechler <matthieu.baech...@linagora.com> Authored: Tue Oct 18 15:14:43 2016 +0200 Committer: Matthieu Baechler <matthieu.baech...@linagora.com> Committed: Tue Oct 25 09:50:45 2016 +0200 ---------------------------------------------------------------------- .../apache/james/mailbox/MessageManager.java | 3 +- .../james/mailbox/model/ComposedMessageId.java | 48 +++++++++++++++++ .../apache/james/mailbox/model/MessageId.java | 24 +++++++++ .../james/mailbox/MailboxManagerStressTest.java | 7 +-- .../mailbox/manager/ManagerTestResources.java | 2 +- .../mailbox/hbase/mail/HBaseMailboxMessage.java | 2 +- .../jcr/mail/model/JCRMailboxMessage.java | 2 +- .../openjpa/AbstractJPAMailboxMessage.java | 2 +- .../maildir/mail/model/MaildirMessage.java | 2 +- .../mailbox/store/StoreMessageManager.java | 14 +++-- .../store/mail/model/DefaultMessageId.java | 1 + .../james/mailbox/store/mail/model/Message.java | 1 + .../mailbox/store/mail/model/MessageId.java | 23 -------- .../store/mail/model/impl/SimpleMessage.java | 2 +- .../search/AbstractMessageSearchIndexTest.java | 18 +++---- .../james/imap/processor/AppendProcessor.java | 8 +-- .../base/MailboxEventAnalyserTest.java | 3 +- .../methods/SetMessagesCreationProcessor.java | 8 +-- .../jmap/methods/GetMessagesMethodTest.java | 55 ++++++++++---------- .../SetMessagesCreationProcessorTest.java | 8 ++- 20 files changed, 148 insertions(+), 85 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java index 888c071..1dc4c33 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MessageManager.java @@ -29,6 +29,7 @@ import javax.mail.Flags; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.UnsupportedCriteriaException; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxACL; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; @@ -146,7 +147,7 @@ public interface MessageManager { * @throws MailboxException * when message cannot be appended */ - MessageUid appendMessage(InputStream msgIn, Date internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) throws MailboxException; + ComposedMessageId appendMessage(InputStream msgIn, Date internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) throws MailboxException; /** * Gets messages in the given range. The messages may get fetched under http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java new file mode 100644 index 0000000..9d6229c --- /dev/null +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/ComposedMessageId.java @@ -0,0 +1,48 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.mailbox.model; + +import org.apache.james.mailbox.MessageUid; + +public class ComposedMessageId { + + private final MailboxId mailboxId; + private final MessageId messageId; + private final MessageUid uid; + + public ComposedMessageId(MailboxId mailboxId, MessageId messageId, MessageUid uid) { + this.mailboxId = mailboxId; + this.messageId = messageId; + this.uid = uid; + } + + public MailboxId getMailboxId() { + return mailboxId; + } + + public MessageId getMessageId() { + return messageId; + } + + public MessageUid getUid() { + return uid; + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java new file mode 100644 index 0000000..975d44a --- /dev/null +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageId.java @@ -0,0 +1,24 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.mailbox.model; + +public interface MessageId { + String serialize(); +} http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java index 8c13ad8..9221557 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java @@ -34,6 +34,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import javax.mail.Flags; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; import org.junit.After; @@ -114,10 +115,10 @@ public class MailboxManagerStressTest<T extends MailboxManager> { mailboxManager.startProcessingRequest(session); MessageManager m = mailboxManager.getMailbox(path, session); - MessageUid uid = m.appendMessage(new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), session, false, new Flags()); + ComposedMessageId messageId = m.appendMessage(new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), session, false, new Flags()); - System.out.println("Append message with uid=" + uid); - if (uids.put(uid, new Object()) != null) { + System.out.println("Append message with uid=" + messageId.getUid()); + if (uids.put(messageId.getUid(), new Object()) != null) { fail.set(true); } mailboxManager.endProcessingRequest(session); http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java index ad51474..8df6b53 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/ManagerTestResources.java @@ -141,7 +141,7 @@ public class ManagerTestResources { public MessageUid appendMessage(MessageManager messageManager, MailboxSession session, Flags flags) throws MailboxException, UnsupportedEncodingException { return messageManager.appendMessage(new ByteArrayInputStream(MockMail.MAIL_TEXT_PLAIN.getBytes("UTF-8")), - Calendar.getInstance().getTime(), session, true, flags); + Calendar.getInstance().getTime(), session, true, flags).getUid(); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/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 5c3bec9..842b0c7 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 @@ -41,10 +41,10 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.hbase.HBaseId; import org.apache.james.mailbox.hbase.io.ChunkInputStream; 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.FlagsBuilder; import org.apache.james.mailbox.store.mail.model.MailboxMessage; -import org.apache.james.mailbox.store.mail.model.MessageId; import org.apache.james.mailbox.store.mail.model.Property; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.search.comparator.UidComparator; http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/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 32c0387..4583227 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 @@ -45,10 +45,10 @@ import org.apache.james.mailbox.jcr.JCRId; import org.apache.james.mailbox.jcr.JCRImapConstants; import org.apache.james.mailbox.jcr.Persistent; 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.FlagsBuilder; import org.apache.james.mailbox.store.mail.model.MailboxMessage; -import org.apache.james.mailbox.store.mail.model.MessageId; import org.apache.james.mailbox.store.mail.model.Property; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.search.comparator.UidComparator; http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/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 1efe777..f797157 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 @@ -49,11 +49,11 @@ import org.apache.james.mailbox.jpa.mail.model.JPAMailbox; import org.apache.james.mailbox.jpa.mail.model.JPAProperty; import org.apache.james.mailbox.jpa.mail.model.JPAUserFlag; 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.DelegatingMailboxMessage; import org.apache.james.mailbox.store.mail.model.FlagsBuilder; import org.apache.james.mailbox.store.mail.model.MailboxMessage; -import org.apache.james.mailbox.store.mail.model.MessageId; import org.apache.james.mailbox.store.mail.model.Property; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.search.comparator.UidComparator; http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/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 9b4c7f9..6c1a599 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 @@ -32,8 +32,8 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang.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.Message; -import org.apache.james.mailbox.store.mail.model.MessageId; import org.apache.james.mailbox.store.mail.model.Property; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.streaming.CountingInputStream; http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/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 171c457..c794073 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 @@ -51,6 +51,7 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.ReadOnlyException; import org.apache.james.mailbox.exception.UnsupportedRightException; import org.apache.james.mailbox.model.Attachment; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxACL; import org.apache.james.mailbox.model.MailboxACL.MailboxACLRights; import org.apache.james.mailbox.model.MailboxId; @@ -69,6 +70,7 @@ import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.AttachmentMapper; import org.apache.james.mailbox.store.mail.MessageMapper; import org.apache.james.mailbox.store.mail.MessageMapper.FetchType; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; @@ -258,7 +260,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } @Override - public MessageUid appendMessage(InputStream msgIn, Date internalDate, final MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet) throws MailboxException { + public ComposedMessageId appendMessage(InputStream msgIn, Date internalDate, final MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet) throws MailboxException { File file = null; TeeInputStream tmpMsgIn = null; @@ -385,16 +387,18 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana new QuotaChecker(quotaManager, quotaRootResolver, mailbox).tryAddition(1, size); - return locker.executeWithLock(mailboxSession, getMailboxPath(), new MailboxPathLocker.LockAwareExecution<MessageUid>() { + return locker.executeWithLock(mailboxSession, getMailboxPath(), new MailboxPathLocker.LockAwareExecution<ComposedMessageId>() { @Override - public MessageUid execute() throws MailboxException { + public ComposedMessageId execute() throws MailboxException { MessageMetaData data = appendMessageToStore(message, attachments, mailboxSession); SortedMap<MessageUid, MessageMetaData> uids = new TreeMap<MessageUid, MessageMetaData>(); - uids.put(data.getUid(), data); + MessageUid messageUid = data.getUid(); + MailboxId mailboxId = getMailboxEntity().getMailboxId(); + uids.put(messageUid, data); dispatcher.added(mailboxSession, uids, getMailboxEntity()); - return data.getUid(); + return new ComposedMessageId(mailboxId, new DefaultMessageId(mailboxId, messageUid), messageUid); } }, true); http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java index 93be2f9..45e6087 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java @@ -20,6 +20,7 @@ package org.apache.james.mailbox.store.mail.model; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxId; +import org.apache.james.mailbox.model.MessageId; import com.google.common.base.Objects; import com.google.common.base.Preconditions; http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java index 430f1ec..a6b9cd7 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/Message.java @@ -24,6 +24,7 @@ import java.util.Date; import java.util.List; import org.apache.james.mailbox.model.MessageAttachment; +import org.apache.james.mailbox.model.MessageId; public interface Message { http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java deleted file mode 100644 index 3a57130..0000000 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MessageId.java +++ /dev/null @@ -1,23 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ -package org.apache.james.mailbox.store.mail.model; - -public interface MessageId { - String serialize(); -} http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java index e6380e1..b517c26 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMessage.java @@ -26,8 +26,8 @@ import java.util.List; import javax.mail.internet.SharedInputStream; import org.apache.james.mailbox.model.MessageAttachment; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.model.Message; -import org.apache.james.mailbox.store.mail.model.MessageId; import org.apache.james.mailbox.store.mail.model.Property; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java index 8b36a1c..49acd2a 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/AbstractMessageSearchIndexTest.java @@ -87,7 +87,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1388617200000L), session, true, - new Flags(Flags.Flag.DELETED)); + new Flags(Flags.Flag.DELETED)).getUid(); // sentDate: Thu, 4 Jun 2015 09:23:37 +0000 // Internal date : 2014/02/02 00:00:00.000 m2 = inboxMessageManager.appendMessage( @@ -95,7 +95,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1391295600000L), session, true, - new Flags(Flags.Flag.ANSWERED)); + new Flags(Flags.Flag.ANSWERED)).getUid(); // sentDate: Thu, 4 Jun 2015 09:27:37 +0000 // Internal date : 2014/03/02 00:00:00.000 m3 = inboxMessageManager.appendMessage( @@ -103,7 +103,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1393714800000L), session, true, - new Flags(Flags.Flag.DRAFT)); + new Flags(Flags.Flag.DRAFT)).getUid(); // sentDate: Tue, 2 Jun 2015 08:16:19 +0000 // Internal date : 2014/05/02 00:00:00.000 m4 = inboxMessageManager.appendMessage( @@ -111,7 +111,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1398981600000L), session, true, - new Flags(Flags.Flag.RECENT)); + new Flags(Flags.Flag.RECENT)).getUid(); // sentDate: Fri, 15 May 2015 06:35:59 +0000 // Internal date : 2014/04/02 00:00:00.000 m5 = inboxMessageManager.appendMessage( @@ -119,7 +119,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1396389600000L), session, true, - new Flags(Flags.Flag.FLAGGED)); + new Flags(Flags.Flag.FLAGGED)).getUid(); // sentDate: Wed, 03 Jun 2015 19:14:32 +0000 // Internal date : 2014/06/02 00:00:00.000 m6 = inboxMessageManager.appendMessage( @@ -127,7 +127,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1401660000000L), session, true, - new Flags(Flags.Flag.SEEN)); + new Flags(Flags.Flag.SEEN)).getUid(); // sentDate: Thu, 04 Jun 2015 07:36:08 +0000 // Internal date : 2014/07/02 00:00:00.000 m7 = inboxMessageManager.appendMessage( @@ -135,7 +135,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1404252000000L), session, false, - new Flags()); + new Flags()).getUid(); // sentDate: Thu, 4 Jun 2015 06:08:41 +0200 // Internal date : 2014/08/02 00:00:00.000 m8 = inboxMessageManager.appendMessage( @@ -143,7 +143,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1406930400000L), session, true, - new Flags("Hello")); + new Flags("Hello")).getUid(); // sentDate: Thu, 4 Jun 2015 06:08:41 +0200 // Internal date : 2014/08/02 00:00:00.000 myFolderMessageManager.appendMessage( @@ -159,7 +159,7 @@ public abstract class AbstractMessageSearchIndexTest { new Date(1409608800000L), session, true, - new Flags("Hello you")); + new Flags("Hello you")).getUid(); await(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java index 4d85ce2..ec3e187 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/AppendProcessor.java @@ -41,9 +41,9 @@ import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageManager.MetaData.FetchGroup; -import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxNotFoundException; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxPath; import org.slf4j.Logger; @@ -134,9 +134,9 @@ public class AppendProcessor extends AbstractMailboxProcessor<AppendRequest> { final SelectedMailbox selectedMailbox = session.getSelected(); final MailboxManager mailboxManager = getMailboxManager(); final boolean isSelectedMailbox = selectedMailbox != null && selectedMailbox.getPath().equals(mailboxPath); - final MessageUid uid = mailbox.appendMessage(message, datetime, mailboxSession, !isSelectedMailbox, flagsToBeSet); + final ComposedMessageId messageId = mailbox.appendMessage(message, datetime, mailboxSession, !isSelectedMailbox, flagsToBeSet); if (isSelectedMailbox) { - selectedMailbox.addRecent(uid); + selectedMailbox.addRecent(messageId.getUid()); } // get folder UIDVALIDITY @@ -146,7 +146,7 @@ public class AppendProcessor extends AbstractMailboxProcessor<AppendRequest> { // in case of MULTIAPPEND support we will push more then one UID // here - okComplete(command, tag, ResponseCode.appendUid(uidValidity, new UidRange[] { new UidRange(uid) }), responder); + okComplete(command, tag, ResponseCode.appendUid(uidValidity, new UidRange[] { new UidRange(messageId.getUid()) }), responder); } catch (MailboxNotFoundException e) { // Indicates that the mailbox does not exist // So TRY CREATE http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java index 6b145d4..0dddfe1 100644 --- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java +++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java @@ -50,6 +50,7 @@ import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.BadCredentialsException; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.Content; import org.apache.james.mailbox.model.Headers; import org.apache.james.mailbox.model.MailboxACL.MailboxACLCommand; @@ -204,7 +205,7 @@ public class MailboxEventAnalyserTest { } - public MessageUid appendMessage(InputStream msgIn, Date internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) throws MailboxException { + public ComposedMessageId appendMessage(InputStream msgIn, Date internalDate, MailboxSession mailboxSession, boolean isRecent, Flags flags) throws MailboxException { throw new UnsupportedOperationException("Not implemented"); } http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java index 93eaca9..ca44d78 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java @@ -58,12 +58,12 @@ import org.apache.james.lifecycle.api.LifecycleUtil; import org.apache.james.mailbox.AttachmentManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; -import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.AttachmentNotFoundException; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxNotFoundException; import org.apache.james.mailbox.model.AttachmentId; import org.apache.james.mailbox.model.Cid; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.mailet.Mail; import org.slf4j.Logger; @@ -282,17 +282,17 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor { Date internalDate = Date.from(createdEntry.getValue().getDate().toInstant()); Flags flags = getMessageFlags(createdEntry.getValue()); - MessageUid uid = outbox.appendMessage(content, internalDate, session, flags.contains(Flags.Flag.RECENT), flags); + ComposedMessageId message = outbox.appendMessage(content, internalDate, session, flags.contains(Flags.Flag.RECENT), flags); return MetaDataWithContent.builder() - .uid(uid) + .uid(message.getUid()) .flags(flags) .size(messageContent.length) .internalDate(internalDate) .sharedContent(content) .attachments(messageAttachments) .mailboxId(outbox.getId()) - .messageId(new MessageId(session.getUser(), outbox.getMailboxPath(), uid)) + .messageId(new MessageId(session.getUser(), outbox.getMailboxPath(), message.getUid())) .build(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java index 4f4b9e4..d80703e 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java @@ -18,13 +18,12 @@ ****************************************************************/ package org.apache.james.jmap.methods; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Matchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; - import java.io.ByteArrayInputStream; import java.util.Date; import java.util.List; @@ -48,11 +47,11 @@ import org.apache.james.jmap.model.MessageProperties.MessageProperty; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; -import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources; import org.apache.james.mailbox.mock.MockMailboxSession; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxPath; import org.assertj.core.api.Condition; import org.assertj.core.data.MapEntry; @@ -156,16 +155,16 @@ public class GetMessagesMethodTest { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); Date now = new Date(); ByteArrayInputStream message1Content = new ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - MessageUid message1Uid = inbox.appendMessage(message1Content, now, session, false, null); + ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); ByteArrayInputStream message2Content = new ByteArrayInputStream("Subject: message 2 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - MessageUid message2Uid = inbox.appendMessage(message2Content, now, session, false, null); + ComposedMessageId message2 = inbox.appendMessage(message2Content, now, session, false, null); ByteArrayInputStream message3Content = new ByteArrayInputStream("Great-Header: message 3 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - MessageUid message3Uid = inbox.appendMessage(message3Content, now, session, false, null); + ComposedMessageId message3 = inbox.appendMessage(message3Content, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1Uid), - new MessageId(ROBERT, inboxPath, message2Uid), - new MessageId(ROBERT, inboxPath, message3Uid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1.getUid()), + new MessageId(ROBERT, inboxPath, message2.getUid()), + new MessageId(ROBERT, inboxPath, message3.getUid()))) .build(); List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); @@ -177,9 +176,9 @@ public class GetMessagesMethodTest { .flatExtracting(GetMessagesResponse::list) .extracting(message -> message.getId().getUid(), Message::getSubject, Message::getTextBody) .containsOnly( - Tuple.tuple(message1Uid, "message 1 subject", Optional.of("my message")), - Tuple.tuple(message2Uid, "message 2 subject", Optional.of("my message")), - Tuple.tuple(message3Uid, "", Optional.of("my message"))); + Tuple.tuple(message1.getUid(), "message 1 subject", Optional.of("my message")), + Tuple.tuple(message2.getUid(), "message 2 subject", Optional.of("my message")), + Tuple.tuple(message3.getUid(), "", Optional.of("my message"))); } @Test @@ -190,10 +189,10 @@ public class GetMessagesMethodTest { + "Subject: message 1 subject\r\n" + "\r\n" + "my <b>HTML</b> message").getBytes(Charsets.UTF_8)); - MessageUid messageUid = inbox.appendMessage(messageContent, now, session, false, null); + ComposedMessageId messageId = inbox.appendMessage(messageContent, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, messageUid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, messageId.getUid()))) .build(); List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); @@ -204,7 +203,7 @@ public class GetMessagesMethodTest { .extracting(GetMessagesResponse.class::cast) .flatExtracting(GetMessagesResponse::list) .extracting(message -> message.getId().getUid(), Message::getTextBody, Message::getHtmlBody) - .containsOnly(Tuple.tuple(messageUid, Optional.empty(), Optional.of("my <b>HTML</b> message"))); + .containsOnly(Tuple.tuple(messageId.getUid(), Optional.empty(), Optional.of("my <b>HTML</b> message"))); } @Test @@ -212,10 +211,10 @@ public class GetMessagesMethodTest { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); Date now = new Date(); ByteArrayInputStream message1Content = new ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - MessageUid message1Uid = inbox.appendMessage(message1Content, now, session, false, null); + ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1Uid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1.getUid()))) .properties(ImmutableList.of()) .build(); @@ -233,10 +232,10 @@ public class GetMessagesMethodTest { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); Date now = new Date(); ByteArrayInputStream message1Content = new ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - MessageUid message1Uid = inbox.appendMessage(message1Content, now, session, false, null); + ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1Uid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1.getUid()))) .build(); Stream<JmapResponse> result = testee.process(request, clientId, session); @@ -253,10 +252,10 @@ public class GetMessagesMethodTest { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); Date now = new Date(); ByteArrayInputStream message1Content = new ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - MessageUid message1Uid = inbox.appendMessage(message1Content, now, session, false, null); + ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1Uid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1.getUid()))) .properties(ImmutableList.of(MessageProperty.subject.asFieldName())) .build(); @@ -276,10 +275,10 @@ public class GetMessagesMethodTest { MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); Date now = new Date(); ByteArrayInputStream message1Content = new ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - MessageUid message1Uid = inbox.appendMessage(message1Content, now, session, false, null); + ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1Uid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1.getUid()))) .properties(ImmutableList.of(MessageProperty.body.asFieldName())) .build(); @@ -302,10 +301,10 @@ public class GetMessagesMethodTest { + "header1: Header1Content\r\n" + "HEADer2: Header2Content\r\n" + "Subject: message 1 subject\r\n\r\nmy message").getBytes(Charsets.UTF_8)); - MessageUid message1Uid = inbox.appendMessage(message1Content, now, session, false, null); + ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1Uid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1.getUid()))) .properties(ImmutableList.of("headers.from", "headers.heADER2")) .build(); @@ -329,10 +328,10 @@ public class GetMessagesMethodTest { + "header1: Header1Content\r\n" + "HEADer2: Header2Content\r\n" + "Subject: message 1 subject\r\n\r\nmy message").getBytes(Charsets.UTF_8)); - MessageUid message1Uid = inbox.appendMessage(message1Content, now, session, false, null); + ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); GetMessagesRequest request = GetMessagesRequest.builder() - .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1Uid))) + .ids(ImmutableList.of(new MessageId(ROBERT, inboxPath, message1.getUid()))) .properties(ImmutableList.of("headers.from", "headers.heADER2")) .build(); http://git-wip-us.apache.org/repos/asf/james-project/blob/9e907560/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java index 11f500c..12346d7 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java @@ -63,7 +63,9 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.inmemory.InMemoryId; import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.AttachmentId; +import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.mailet.Mail; import org.junit.Before; import org.junit.Ignore; @@ -129,7 +131,11 @@ public class SetMessagesCreationProcessorTest { outbox = mock(MessageManager.class); when(outbox.getId()).thenReturn(OUTBOX_ID); when(outbox.getMailboxPath()).thenReturn(new MailboxPath(NAMESPACE, USER, OUTBOX)); - when(outbox.appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), any(Boolean.class), any(Flags.class))).thenReturn(MessageUid.of(1)); + + MessageUid messageUid = MessageUid.of(1); + when(outbox.appendMessage(any(InputStream.class), any(Date.class), any(MailboxSession.class), any(Boolean.class), any(Flags.class))) + .thenReturn(new ComposedMessageId(OUTBOX_ID, new DefaultMessageId(outbox.getId(), messageUid), messageUid)); + drafts = mock(MessageManager.class); when(drafts.getId()).thenReturn(DRAFTS_ID); when(drafts.getMailboxPath()).thenReturn(new MailboxPath(NAMESPACE, USER, DRAFTS)); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org