MAILBOX-359 POJOify MessageMetaData & remove SimpleMessageMetaData
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b16d06f0 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b16d06f0 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b16d06f0 Branch: refs/heads/master Commit: b16d06f0a8ea9e583f71203c6ff3b62ca8aaec60 Parents: ecb6258 Author: Benoit Tellier <[email protected]> Authored: Sat Dec 15 10:59:12 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Wed Dec 19 10:58:07 2018 +0700 ---------------------------------------------------------------------- .../james/mailbox/model/MessageMetaData.java | 72 +++++++++++---- .../mailbox/store/SimpleMessageMetaData.java | 93 -------------------- .../store/mail/model/MailboxMessage.java | 3 +- .../store/AbstractCombinationManagerTest.java | 3 +- .../AbstractMessageIdManagerSideEffectTest.java | 2 +- .../store/mail/model/MetadataMapAssertTest.java | 9 +- .../quota/ListeningCurrentQuotaUpdaterTest.java | 10 +-- .../base/MailboxEventAnalyserTest.java | 5 +- .../processor/base/SelectedMailboxImplTest.java | 3 +- 9 files changed, 73 insertions(+), 127 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java index 6f629fc..03b26f3 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMetaData.java @@ -24,23 +24,35 @@ import javax.mail.Flags; import org.apache.james.mailbox.MessageUid; -public interface MessageMetaData { +import com.google.common.base.Objects; - MessageUid getUid(); - - - /** - * Return the modify-sequence number of the message. This is kind of optional and the mailbox - * implementation may not support this. If so it will return -1 - */ - long getModSeq(); +public class MessageMetaData { + private final MessageUid uid; + private final Flags flags; + private final long size; + private final Date internalDate; + private final long modSeq; + private final MessageId messageId; + + public MessageMetaData(MessageUid uid, long modSeq, Flags flags, long size, Date internalDate, MessageId messageId) { + this.uid = uid; + this.flags = flags; + this.size = size; + this.modSeq = modSeq; + this.internalDate = internalDate; + this.messageId = messageId; + } + + public Flags getFlags() { + return flags; + } - Flags getFlags(); - /** * Return the size in bytes */ - long getSize(); + public long getSize() { + return size; + } /** * <p> @@ -48,7 +60,37 @@ public interface MessageMetaData { * (by smtp). Clients are also allowed to set the internalDate on append. * </p> */ - Date getInternalDate(); - - MessageId getMessageId(); + public Date getInternalDate() { + return internalDate; + } + + public MessageUid getUid() { + return uid; + } + + public MessageId getMessageId() { + return messageId; + } + + /** + * Return the modify-sequence number of the message. This is kind of optional and the mailbox + * implementation may not support this. If so it will return -1 + */ + public long getModSeq() { + return modSeq; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof MessageMetaData) { + return uid.equals(((MessageMetaData) obj).getUid()); + } + return false; + } + + @Override + public int hashCode() { + return Objects.hashCode(uid); + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java deleted file mode 100644 index 61e2f54..0000000 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java +++ /dev/null @@ -1,93 +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; - -import java.util.Date; - -import javax.mail.Flags; - -import org.apache.james.mailbox.MessageUid; -import org.apache.james.mailbox.model.MessageId; -import org.apache.james.mailbox.model.MessageMetaData; - -import com.google.common.base.Objects; - - -public class SimpleMessageMetaData implements MessageMetaData { - private final MessageUid uid; - private final Flags flags; - private final long size; - private final Date internalDate; - private final long modSeq; - private final MessageId messageId; - - public SimpleMessageMetaData(MessageUid uid, long modSeq, Flags flags, long size, Date internalDate, MessageId messageId) { - this.uid = uid; - this.flags = flags; - this.size = size; - this.modSeq = modSeq; - this.internalDate = internalDate; - this.messageId = messageId; - } - - @Override - public Flags getFlags() { - return flags; - } - - @Override - public long getSize() { - return size; - } - - @Override - public Date getInternalDate() { - return internalDate; - } - - @Override - public MessageUid getUid() { - return uid; - } - - @Override - public MessageId getMessageId() { - return messageId; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof SimpleMessageMetaData) { - return uid.equals(((SimpleMessageMetaData) obj).getUid()); - } - return false; - } - - @Override - public int hashCode() { - return Objects.hashCode(uid); - } - - @Override - public long getModSeq() { - return modSeq; - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java index 2842356..7d0df02 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java @@ -24,7 +24,6 @@ import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageMetaData; -import org.apache.james.mailbox.store.SimpleMessageMetaData; /** * A MIME message, consisting of meta-data (including MIME headers) @@ -129,7 +128,7 @@ public interface MailboxMessage extends Message, Comparable<MailboxMessage> { Flags createFlags(); default MessageMetaData metaData() { - return new SimpleMessageMetaData(getUid(), getModSeq(), createFlags(), getFullContentOctets(), getInternalDate(), getMessageId()); + return new MessageMetaData(getUid(), getModSeq(), createFlags(), getFullContentOctets(), getInternalDate(), getMessageId()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java index 0ed6dda..08d8747 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java @@ -384,7 +384,8 @@ public abstract class AbstractCombinationManagerTest { assertThat(messageManager1.getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, session)).isEmpty(); assertThat(messageManager2.getMessages(MessageRange.all(), FetchGroupImpl.MINIMAL, session)) .hasSize(1) - .extractingResultOf("getMessageId").containsOnly(messageId); + .extracting(MessageResult::getMessageId) + .containsOnly(messageId); } @Test http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java index b916395..0a02502 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java @@ -210,7 +210,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest { assertThat(messageResults).hasSize(2); messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(), mailbox3.getMailboxId()), session); - verify(dispatcher).expunged(eq(session), any(SimpleMessageMetaData.class), eq(mailbox2)); + verify(dispatcher).expunged(eq(session), any(MessageMetaData.class), eq(mailbox2)); verify(dispatcher).added(eq(session), eq(mailbox3), any(MailboxMessage.class)); verify(dispatcher).moved(eq(session), any(), any()); verifyNoMoreInteractions(dispatcher); http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java index 0fd78d7..e8870b9 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MetadataMapAssertTest.java @@ -30,7 +30,6 @@ import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.TestId; -import org.apache.james.mailbox.store.SimpleMessageMetaData; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage; import org.junit.Before; @@ -59,14 +58,14 @@ public class MetadataMapAssertTest { @Test public void metadataMapAssertShouldSucceedWhenContainingRightMetadata() { Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>(); - metaDataMap.put(UID, new SimpleMessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID)); + metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID)); MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1); } @Test(expected = AssertionError.class) public void metadataMapAssertShouldFailWhenUidMismatch() { Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>(); - metaDataMap.put(UID, new SimpleMessageMetaData(UID.next(), MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID)); + metaDataMap.put(UID, new MessageMetaData(UID.next(), MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), DATE, MESSAGE_ID)); MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1); } @@ -75,14 +74,14 @@ public class MetadataMapAssertTest { Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>(); Date date = new Date(); date.setTime(DATE.getTime() + 100L); - metaDataMap.put(UID, new SimpleMessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), date, MESSAGE_ID)); + metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length(), date, MESSAGE_ID)); MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1); } @Test(expected = AssertionError.class) public void metadataMapAssertShouldFailWhenSizeMismatch() { Map<MessageUid, MessageMetaData> metaDataMap = new HashMap<>(); - metaDataMap.put(UID, new SimpleMessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length() + 1, DATE, MESSAGE_ID)); + metaDataMap.put(UID, new MessageMetaData(UID, MODSEQ, new Flags(), HEADER_STRING.length() + BODY_STRING.length() + 1, DATE, MESSAGE_ID)); MetadataMapAssert.assertThat(metaDataMap).containsMetadataForMessages(message1); } http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java index 241b62b..0d62a90 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java @@ -37,11 +37,11 @@ import org.apache.james.core.quota.QuotaSize; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxId; +import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.model.TestId; import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; -import org.apache.james.mailbox.store.SimpleMessageMetaData; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.junit.Before; @@ -73,8 +73,8 @@ public class ListeningCurrentQuotaUpdaterTest { public void addedEventShouldIncreaseCurrentQuotaValues() throws Exception { MailboxListener.Added added = mock(MailboxListener.Added.class); when(added.getMailboxId()).thenReturn(MAILBOX_ID); - when(added.getMetaData(MessageUid.of(36))).thenReturn(new SimpleMessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); - when(added.getMetaData(MessageUid.of(38))).thenReturn(new SimpleMessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); + when(added.getMetaData(MessageUid.of(36))).thenReturn(new MessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); + when(added.getMetaData(MessageUid.of(38))).thenReturn(new MessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); when(added.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), MessageUid.of(38))); when(added.getUser()).thenReturn(USER_BENWA); when(mockedQuotaRootResolver.getQuotaRoot(eq(MAILBOX_ID))).thenReturn(QUOTA_ROOT); @@ -87,8 +87,8 @@ public class ListeningCurrentQuotaUpdaterTest { @Test public void expungedEventShouldDecreaseCurrentQuotaValues() throws Exception { MailboxListener.Expunged expunged = mock(MailboxListener.Expunged.class); - when(expunged.getMetaData(MessageUid.of(36))).thenReturn(new SimpleMessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); - when(expunged.getMetaData(MessageUid.of(38))).thenReturn(new SimpleMessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); + when(expunged.getMetaData(MessageUid.of(36))).thenReturn(new MessageMetaData(MessageUid.of(36),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); + when(expunged.getMetaData(MessageUid.of(38))).thenReturn(new MessageMetaData(MessageUid.of(38),0,new Flags(), SIZE, new Date(), new DefaultMessageId())); when(expunged.getUids()).thenReturn(Lists.newArrayList(MessageUid.of(36), MessageUid.of(38))); when(expunged.getMailboxId()).thenReturn(MAILBOX_ID); when(expunged.getUser()).thenReturn(USER_BENWA); http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/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 e26ff4f..cc12128 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 @@ -46,7 +46,6 @@ import org.apache.james.mailbox.model.MessageResult; import org.apache.james.mailbox.model.MessageResultIterator; import org.apache.james.mailbox.model.TestId; import org.apache.james.mailbox.model.UpdatedFlags; -import org.apache.james.mailbox.store.SimpleMessageMetaData; import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; @@ -149,7 +148,7 @@ public class MailboxEventAnalyserTest { MailboxListener.Added mailboxAdded = eventFactory.added( MAILBOX_SESSION, ImmutableSortedMap.of(MessageUid.of(11), - new SimpleMessageMetaData(MessageUid.of(11), 0, new Flags(), 45, new Date(), new DefaultMessageId())), + new MessageMetaData(MessageUid.of(11), 0, new Flags(), 45, new Date(), new DefaultMessageId())), DEFAULT_MAILBOX); testee.event(mailboxAdded); assertThat(testee.isSizeChanged()).isTrue(); @@ -160,7 +159,7 @@ public class MailboxEventAnalyserTest { MailboxListener.Added mailboxAdded = eventFactory.added( MAILBOX_SESSION, ImmutableSortedMap.of(MessageUid.of(11), - new SimpleMessageMetaData(MessageUid.of(11), 0, new Flags(), 45, new Date(), new DefaultMessageId())), + new MessageMetaData(MessageUid.of(11), 0, new Flags(), 45, new Date(), new DefaultMessageId())), DEFAULT_MAILBOX); testee.event(mailboxAdded); testee.resetEvents(); http://git-wip-us.apache.org/repos/asf/james-project/blob/b16d06f0/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java ---------------------------------------------------------------------- diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java index 7973ab2..437c41f 100644 --- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java +++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java @@ -50,7 +50,6 @@ import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.SearchQuery; import org.apache.james.mailbox.model.TestId; -import org.apache.james.mailbox.store.SimpleMessageMetaData; import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.Mailbox; @@ -168,7 +167,7 @@ public class SelectedMailboxImplTest { private void emitEvent(MailboxListener mailboxListener) { SecureRandom random = new SecureRandom(); TreeMap<MessageUid, MessageMetaData> result = new TreeMap<>(); - result.put(EMITTED_EVENT_UID, new SimpleMessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId())); + result.put(EMITTED_EVENT_UID, new MessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId())); mailboxListener.event(new EventFactory().added(MailboxSession.SessionId.of(random.nextLong()), mock(User.class), result, mailbox)); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
