MAILBOX-277 Message now have a messageId property
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7882e36f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7882e36f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7882e36f Branch: refs/heads/master Commit: 7882e36f554336dcc865c478a452823d521b82af Parents: bfd0b61 Author: Matthieu Baechler <matthieu.baech...@linagora.com> Authored: Tue Oct 18 17:21:45 2016 +0200 Committer: Matthieu Baechler <matthieu.baech...@linagora.com> Committed: Tue Oct 25 09:50:50 2016 +0200 ---------------------------------------------------------------------- .../apache/james/mailbox/model/MessageId.java | 7 ++ .../james/mailbox/model/MessageMetaData.java | 2 + .../cassandra/CassandraMailboxManager.java | 10 +- .../CassandraMailboxSessionMapperFactory.java | 10 +- .../cassandra/CassandraMessageManager.java | 8 +- .../cassandra/mail/CassandraMessageMapper.java | 9 +- .../META-INF/spring/mailbox-cassandra.xml | 3 + .../cassandra/CassandraMailboxManagerTest.java | 7 +- ...assandraMailboxSessionMapperFactoryTest.java | 16 ++- .../CassandraSubscriptionManagerTest.java | 4 +- .../CassandraMailboxManagerAttachmentTest.java | 8 +- .../cassandra/mail/CassandraMapperProvider.java | 19 +++- .../ElasticSearchIntegrationTest.java | 6 +- .../MailboxMessageToElasticSearchJsonTest.java | 100 ++++++++++--------- .../mailbox/hbase/HBaseMailboxManager.java | 16 ++- .../hbase/HBaseMailboxSessionMapperFactory.java | 8 +- .../mailbox/hbase/HBaseMessageManager.java | 8 +- .../apache/james/mailbox/hbase/HBaseUtils.java | 5 +- .../mailbox/hbase/mail/HBaseMailboxMessage.java | 11 +- .../mailbox/hbase/mail/HBaseMessageMapper.java | 18 ++-- .../mailbox/hbase/HBaseMailboxManagerTest.java | 9 +- .../HBaseMailboxSessionMapperFactoryTest.java | 16 ++- .../james/mailbox/hbase/HBaseUtilsTest.java | 4 +- .../mail/HBaseMailboxMessageMapperTest.java | 9 +- .../hbase/user/HBaseSubscriptionMapperTest.java | 5 +- .../james/mailbox/jcr/JCRMailboxManager.java | 16 ++- .../james/mailbox/jcr/JCRMessageManager.java | 11 +- .../jcr/mail/model/JCRMailboxMessage.java | 10 +- .../mailbox/jcr/JCRMailboxManagerTest.java | 4 +- .../james/mailbox/jpa/JPAMailboxManager.java | 6 +- .../james/mailbox/jpa/JPAMessageManager.java | 5 +- .../openjpa/AbstractJPAMailboxMessage.java | 2 +- .../jpa/openjpa/OpenJPAMailboxManager.java | 22 ++-- .../jpa/openjpa/OpenJPAMessageManager.java | 12 ++- .../resources/META-INF/spring/mailbox-jpa.xml | 4 + .../mailbox/jpa/JPAMailboxManagerTest.java | 3 +- .../LuceneMailboxMessageSearchIndexTest.java | 9 +- .../search/LuceneMessageSearchIndexTest.java | 6 +- .../META-INF/spring/mailbox-maildir.xml | 4 + .../maildir/MaildirMailboxManagerTests.java | 4 +- .../inmemory/InMemoryMailboxManager.java | 10 +- .../inmemory/InMemoryMessageManager.java | 7 +- .../META-INF/spring/mailbox-memory.xml | 3 + .../inmemory/InMemoryMailboxManagerTest.java | 6 +- .../InMemoryMailboxManagerAttachmentTest.java | 9 +- .../inmemory/mail/InMemoryMapperProvider.java | 9 ++ .../manager/InMemoryIntegrationResources.java | 5 +- .../search/SimpleMessageSearchIndexTest.java | 6 +- .../james/mailbox/store/MessageResultImpl.java | 6 ++ .../mailbox/store/SimpleMessageMetaData.java | 12 ++- .../mailbox/store/StoreMailboxManager.java | 22 +++- .../mailbox/store/StoreMessageManager.java | 28 +++--- .../store/StoreMessageResultIterator.java | 11 +- .../dto/MessageMetaDataDataTransferObject.java | 15 +-- .../store/mail/model/DefaultMessageId.java | 54 ++-------- .../mail/model/DelegatingMailboxMessage.java | 5 +- .../mail/model/impl/SimpleMailboxMessage.java | 10 +- .../store/mail/model/impl/SimpleMessage.java | 10 +- .../james/mailbox/store/MessageBuilder.java | 3 +- .../mailbox/store/SimpleMailboxMembership.java | 11 +- .../StoreMailboxManagerAnnotationTest.java | 4 +- .../mailbox/store/StoreMailboxManagerTest.java | 10 +- .../StoreMailboxMessageResultIteratorTest.java | 3 +- .../mailbox/store/json/EventSerializerTest.java | 3 +- .../mail/model/DefaultMailboxMessageIdTest.java | 47 --------- .../mail/model/MailboxMessageAssertTest.java | 14 +-- .../store/mail/model/MapperProvider.java | 3 + .../store/mail/model/MessageMapperTest.java | 37 +++---- .../store/mail/model/MessageMoveTest.java | 7 +- .../store/mail/model/MetadataMapAssertTest.java | 12 ++- .../model/impl/SimpleMailboxMessageTest.java | 5 +- .../quota/ListeningCurrentQuotaUpdaterTest.java | 9 +- .../james/mailbox/copier/MailboxCopierTest.java | 4 +- .../registrations/MailboxRegistrationTest.java | 5 +- .../cassandra/host/CassandraHostSystem.java | 10 +- .../host/ElasticSearchHostSystem.java | 3 +- .../imapmailbox/hbase/host/HBaseHostSystem.java | 8 +- .../InMemoryEventAsynchronousHostSystem.java | 3 +- .../inmemory/host/InMemoryHostSystem.java | 6 +- .../mpt/imapmailbox/jcr/host/JCRHostSystem.java | 6 +- .../mpt/imapmailbox/jpa/host/JPAHostSystem.java | 5 +- .../maildir/host/MaildirHostSystem.java | 6 +- .../base/FakeMailboxListenerAdded.java | 16 ++- .../base/MailboxEventAnalyserTest.java | 6 ++ .../modules/mailbox/CassandraMailboxModule.java | 4 + .../modules/mailbox/MemoryMailboxModule.java | 4 + .../adapter/mailbox/MailboxManagementTest.java | 4 +- .../apache/james/jmap/model/MessageFactory.java | 8 +- .../SetMessagesCreationProcessorTest.java | 3 +- .../apache/james/pop3server/POP3ServerTest.java | 3 +- .../routes/UserMailboxesRoutesTest.java | 6 +- 91 files changed, 579 insertions(+), 363 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/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 index 975d44a..3c2ca6e 100644 --- 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 @@ -20,5 +20,12 @@ package org.apache.james.mailbox.model; public interface MessageId { + + interface Factory { + + MessageId generate(); + + } + String serialize(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/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 ae214ed..6f629fc 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 @@ -49,4 +49,6 @@ public interface MessageMetaData { * </p> */ Date getInternalDate(); + + MessageId getMessageId(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java index 2219604..fdb0092 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxManager.java @@ -30,6 +30,7 @@ import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver; import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.SimpleMailboxACL; import org.apache.james.mailbox.store.Authenticator; import org.apache.james.mailbox.store.StoreMailboxManager; @@ -46,13 +47,15 @@ public class CassandraMailboxManager extends StoreMailboxManager { private final MailboxPathLocker locker; @Inject - public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, MailboxPathLocker locker, MessageParser messageParser) { + public CassandraMailboxManager(CassandraMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, + MailboxPathLocker locker, MessageParser messageParser, MessageId.Factory messageIdFactory) { super(mapperFactory, authenticator, locker, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), - messageParser); + messageParser, + messageIdFactory); this.locker = locker; } @@ -88,7 +91,8 @@ public class CassandraMailboxManager extends StoreMailboxManager { mailboxRow, getQuotaManager(), getQuotaRootResolver(), - getMessageParser()); + getMessageParser(), + getMessageIdFactory()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java index abc0b9d..4a0aaef 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java @@ -29,6 +29,8 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMailboxMapper; import org.apache.james.mailbox.cassandra.mail.CassandraMessageMapper; import org.apache.james.mailbox.cassandra.user.CassandraSubscriptionMapper; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.model.MessageId.Factory; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.mail.AnnotationMapper; import org.apache.james.mailbox.store.mail.AttachmentMapper; @@ -50,13 +52,16 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa private final UidProvider uidProvider; private final ModSeqProvider modSeqProvider; private final CassandraTypesProvider typesProvider; + private final Factory messageIdFactory; private int maxRetry; @Inject - public CassandraMailboxSessionMapperFactory(UidProvider uidProvider, ModSeqProvider modSeqProvider, Session session, CassandraTypesProvider typesProvider) { + public CassandraMailboxSessionMapperFactory(UidProvider uidProvider, ModSeqProvider modSeqProvider, + Session session, CassandraTypesProvider typesProvider, MessageId.Factory messageIdFactory) { this.uidProvider = uidProvider; this.modSeqProvider = modSeqProvider; this.session = session; + this.messageIdFactory = messageIdFactory; this.maxRetry = DEFAULT_MAX_RETRY; this.typesProvider = typesProvider; } @@ -67,7 +72,8 @@ public class CassandraMailboxSessionMapperFactory extends MailboxSessionMapperFa @Override public CassandraMessageMapper createMessageMapper(MailboxSession mailboxSession) { - return new CassandraMessageMapper(session, uidProvider, modSeqProvider, null, maxRetry, typesProvider, createAttachmentMapper(mailboxSession)); + return new CassandraMessageMapper(session, uidProvider, modSeqProvider, null, maxRetry, + typesProvider, createAttachmentMapper(mailboxSession), messageIdFactory); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java index a2845ee..5eeac40 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMessageManager.java @@ -26,6 +26,7 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver; import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; @@ -41,8 +42,11 @@ import org.apache.james.mailbox.store.search.MessageSearchIndex; */ public class CassandraMessageManager extends StoreMessageManager { - public CassandraMessageManager(MailboxSessionMapperFactory mapperFactory, MessageSearchIndex index, MailboxEventDispatcher dispatcher, MailboxPathLocker locker, Mailbox mailbox, QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser) throws MailboxException { - super(mapperFactory, index, dispatcher, locker, mailbox, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), quotaManager, quotaRootResolver, messageParser); + public CassandraMessageManager(MailboxSessionMapperFactory mapperFactory, MessageSearchIndex index, + MailboxEventDispatcher dispatcher, MailboxPathLocker locker, Mailbox mailbox, QuotaManager quotaManager, + QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory) throws MailboxException { + super(mapperFactory, index, dispatcher, locker, mailbox, new UnionMailboxACLResolver(), + new SimpleGroupMembershipResolver(), quotaManager, quotaRootResolver, messageParser, messageIdFactory); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java index 440ee86..044e289 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java @@ -89,6 +89,8 @@ import org.apache.james.mailbox.model.Attachment; import org.apache.james.mailbox.model.AttachmentId; import org.apache.james.mailbox.model.Cid; import org.apache.james.mailbox.model.MessageAttachment; +import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.model.MessageId.Factory; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.UpdatedFlags; @@ -129,8 +131,11 @@ public class CassandraMessageMapper implements MessageMapper { private final CassandraTypesProvider typesProvider; private final int maxRetries; private final AttachmentMapper attachmentMapper; + private final Factory messageIdFactory; - public CassandraMessageMapper(Session session, UidProvider uidProvider, ModSeqProvider modSeqProvider, MailboxSession mailboxSession, int maxRetries, CassandraTypesProvider typesProvider, AttachmentMapper attachmentMapper) { + public CassandraMessageMapper(Session session, UidProvider uidProvider, ModSeqProvider modSeqProvider, + MailboxSession mailboxSession, int maxRetries, CassandraTypesProvider typesProvider, AttachmentMapper attachmentMapper, + MessageId.Factory messageIdFactory) { this.session = session; this.uidProvider = uidProvider; this.modSeqProvider = modSeqProvider; @@ -138,6 +143,7 @@ public class CassandraMessageMapper implements MessageMapper { this.maxRetries = maxRetries; this.typesProvider = typesProvider; this.attachmentMapper = attachmentMapper; + this.messageIdFactory = messageIdFactory; } @Override @@ -310,6 +316,7 @@ public class CassandraMessageMapper implements MessageMapper { private MailboxMessage message(Row row, FetchType fetchType) { SimpleMailboxMessage message = new SimpleMailboxMessage( + messageIdFactory.generate(), row.getDate(INTERNAL_DATE), row.getLong(FULL_CONTENT_OCTETS), row.getInt(BODY_START_OCTET), http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/main/resources/META-INF/spring/mailbox-cassandra.xml ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/main/resources/META-INF/spring/mailbox-cassandra.xml b/mailbox/cassandra/src/main/resources/META-INF/spring/mailbox-cassandra.xml index 3e2c733..331f322 100644 --- a/mailbox/cassandra/src/main/resources/META-INF/spring/mailbox-cassandra.xml +++ b/mailbox/cassandra/src/main/resources/META-INF/spring/mailbox-cassandra.xml @@ -33,6 +33,7 @@ <constructor-arg index="0" ref="cassandra-sessionMapperFactory"/> <constructor-arg index="1" ref="authenticator"/> <constructor-arg index="2" ref="cassandra-locker"/> + <constructor-arg index="3" ref="cassandra-messageIdFactory" /> <property name="messageSearchIndex" ref="elasticsearch-listener"/> <property name="quotaManager" ref="quotaManager"/> <property name="quotaRootResolver" ref="quotaRootResolver"/> @@ -40,6 +41,8 @@ <property name="delegatingMailboxListener" ref="delegating-listener"/> </bean> + <bean id="cassandra-messageIdFactory" class="org.apache.james.mailbox.store.mail.model.DefaultMessageId.Factory" /> + <bean id ="cassandra-subscriptionManager" class="org.apache.james.mailbox.cassandra.CassandraSubscriptionManager" lazy-init="true"> http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java index 230992d..82c502b 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java @@ -33,6 +33,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule; import org.apache.james.mailbox.cassandra.modules.CassandraUidModule; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.store.NoMailboxPathLocker; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.junit.runner.RunWith; import org.xenei.junit.contract.Contract; @@ -64,12 +65,14 @@ public class CassandraMailboxManagerTest { CASSANDRA.ensureAllTables(); CassandraUidProvider uidProvider = new CassandraUidProvider(CASSANDRA.getConf()); CassandraModSeqProvider modSeqProvider = new CassandraModSeqProvider(CASSANDRA.getConf()); + DefaultMessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); CassandraMailboxSessionMapperFactory mapperFactory = new CassandraMailboxSessionMapperFactory(uidProvider, modSeqProvider, CASSANDRA.getConf(), - CASSANDRA.getTypesProvider()); + CASSANDRA.getTypesProvider(), + messageIdFactory); - CassandraMailboxManager manager = new CassandraMailboxManager(mapperFactory, null, new NoMailboxPathLocker(), new MessageParser()); + CassandraMailboxManager manager = new CassandraMailboxManager(mapperFactory, null, new NoMailboxPathLocker(), new MessageParser(), messageIdFactory); try { manager.init(); } catch (MailboxException e) { http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java index 9aa45d4..1bfcbb1 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactoryTest.java @@ -33,6 +33,7 @@ import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MessageMapper; import org.apache.james.mailbox.store.mail.ModSeqProvider; import org.apache.james.mailbox.store.mail.UidProvider; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.user.SubscriptionMapper; import org.junit.Before; import org.junit.Test; @@ -62,7 +63,8 @@ public class CassandraMailboxSessionMapperFactoryTest { public void testCreateMessageMapper() throws Exception { LOG.info("createMessageMapper"); MailboxSession session = null; - CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, null, null, null); + DefaultMessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); + CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, null, null, null, messageIdFactory); MessageMapper messageMapper = instance.createMessageMapper(session); assertNotNull(messageMapper); assertTrue(messageMapper instanceof MessageMapper); @@ -76,7 +78,8 @@ public class CassandraMailboxSessionMapperFactoryTest { public void testCreateMailboxMapper() throws Exception { LOG.info("createMailboxMapper"); MailboxSession session = null; - CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, null, null, null); + DefaultMessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); + CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, null, null, null, messageIdFactory); MailboxMapper mailboxMapper = instance.createMailboxMapper(session); assertNotNull(mailboxMapper); assertTrue(mailboxMapper instanceof MailboxMapper); @@ -90,7 +93,8 @@ public class CassandraMailboxSessionMapperFactoryTest { public void testCreateSubscriptionMapper() throws Exception { LOG.info("createSubscriptionMapper"); MailboxSession session = null; - CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, null, null, null); + DefaultMessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); + CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, null, null, null, messageIdFactory); SubscriptionMapper subscriptionMapper = instance.createSubscriptionMapper(session); assertNotNull(subscriptionMapper); assertTrue(subscriptionMapper instanceof SubscriptionMapper); @@ -104,7 +108,8 @@ public class CassandraMailboxSessionMapperFactoryTest { public void testGetModSeqProvider() { LOG.info("getModSeqProvider"); ModSeqProvider expResult = new CassandraModSeqProvider(CLUSTER.getConf()); - CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, expResult, null, null); + DefaultMessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); + CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory(null, expResult, null, null, messageIdFactory); ModSeqProvider result = instance.getModSeqProvider(); assertEquals(expResult, result); } @@ -117,7 +122,8 @@ public class CassandraMailboxSessionMapperFactoryTest { public void testGetUidProvider() { LOG.info("getUidProvider"); UidProvider expResult = new CassandraUidProvider(CLUSTER.getConf()); - CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory((CassandraUidProvider) expResult, null, null, null); + DefaultMessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); + CassandraMailboxSessionMapperFactory instance = new CassandraMailboxSessionMapperFactory((CassandraUidProvider) expResult, null, null, null, messageIdFactory); UidProvider result = instance.getUidProvider(); assertEquals(expResult, result); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java index 900beb9..7d72d7e 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java @@ -25,6 +25,7 @@ import org.apache.james.mailbox.SubscriptionManager; import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider; import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider; import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; /** * Test Cassandra subscription against some general purpose written code. @@ -40,7 +41,8 @@ public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManage new CassandraUidProvider(cassandra.getConf()), new CassandraModSeqProvider(cassandra.getConf()), cassandra.getConf(), - cassandra.getTypesProvider() + cassandra.getTypesProvider(), + new DefaultMessageId.Factory() ) ); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java index 9e1517c..704d111 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java @@ -38,6 +38,7 @@ import org.apache.james.mailbox.store.AbstractMailboxManagerAttachmentTest; import org.apache.james.mailbox.store.Authenticator; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.NoMailboxPathLocker; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManagerAttachmentTest { @@ -59,14 +60,15 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage new CassandraUidProvider(cassandra.getConf()), new CassandraModSeqProvider(cassandra.getConf()), cassandra.getConf(), - cassandra.getTypesProvider()); + cassandra.getTypesProvider(), + new DefaultMessageId.Factory()); Authenticator noAuthenticator = null; - mailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(), new MessageParser()); + mailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(), new MessageParser(), new DefaultMessageId.Factory()); mailboxManager.init(); MessageParser failingMessageParser = mock(MessageParser.class); when(failingMessageParser.retrieveAttachments(any())) .thenThrow(new RuntimeException("Message parser set to fail")); - parseFailingMailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(), failingMessageParser); + parseFailingMailboxManager = new CassandraMailboxManager(mailboxSessionMapperFactory, noAuthenticator, new NoMailboxPathLocker(), failingMessageParser, new DefaultMessageId.Factory()); parseFailingMailboxManager.init(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java index ae3c1eb..ac8d177 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java @@ -32,10 +32,12 @@ import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule; import org.apache.james.mailbox.cassandra.modules.CassandraUidModule; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.mock.MockMailboxSession; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.AnnotationMapper; import org.apache.james.mailbox.store.mail.AttachmentMapper; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MessageMapper; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.MapperProvider; public class CassandraMapperProvider implements MapperProvider { @@ -51,12 +53,18 @@ public class CassandraMapperProvider implements MapperProvider { new CassandraAnnotationModule())); @Override + public MessageId generateMessageId() { + return new DefaultMessageId.Factory().generate(); + } + + @Override public MailboxMapper createMailboxMapper() throws MailboxException { return new CassandraMailboxSessionMapperFactory( new CassandraUidProvider(cassandra.getConf()), new CassandraModSeqProvider(cassandra.getConf()), cassandra.getConf(), - cassandra.getTypesProvider() + cassandra.getTypesProvider(), + new DefaultMessageId.Factory() ).getMailboxMapper(new MockMailboxSession("benwa")); } @@ -66,7 +74,8 @@ public class CassandraMapperProvider implements MapperProvider { new CassandraUidProvider(cassandra.getConf()), new CassandraModSeqProvider(cassandra.getConf()), cassandra.getConf(), - cassandra.getTypesProvider() + cassandra.getTypesProvider(), + new DefaultMessageId.Factory() ).getMessageMapper(new MockMailboxSession("benwa")); } @@ -76,7 +85,8 @@ public class CassandraMapperProvider implements MapperProvider { new CassandraUidProvider(cassandra.getConf()), new CassandraModSeqProvider(cassandra.getConf()), cassandra.getConf(), - cassandra.getTypesProvider() + cassandra.getTypesProvider(), + new DefaultMessageId.Factory() ).getAttachmentMapper(new MockMailboxSession("benwa")); } @@ -106,7 +116,8 @@ public class CassandraMapperProvider implements MapperProvider { new CassandraUidProvider(cassandra.getConf()), new CassandraModSeqProvider(cassandra.getConf()), cassandra.getConf(), - cassandra.getTypesProvider() + cassandra.getTypesProvider(), + new DefaultMessageId.Factory() ).getAnnotationMapper(new MockMailboxSession("benwa")); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java index edfc939..a60a747 100644 --- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java +++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java @@ -33,10 +33,12 @@ import org.apache.james.mailbox.elasticsearch.utils.TestingClientProvider; import org.apache.james.mailbox.inmemory.InMemoryId; import org.apache.james.mailbox.inmemory.InMemoryMailboxManager; import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.FakeAuthenticator; import org.apache.james.mailbox.store.extractor.DefaultTextExtractor; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.search.AbstractMessageSearchIndexTest; import org.elasticsearch.client.Client; @@ -70,13 +72,15 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest new ElasticSearchIndexer(client, new DeleteByQueryPerformer(client, Executors.newSingleThreadExecutor(), BATCH_SIZE)), new ElasticSearchSearcher(client, new QueryConverter(new CriterionConverter()), SEARCH_SIZE, new InMemoryId.Factory()), new MessageToElasticSearchJson(new DefaultTextExtractor(), ZoneId.of("Europe/Paris"))); + MessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); storeMailboxManager = new InMemoryMailboxManager( mapperFactory, new FakeAuthenticator(), new JVMMailboxPathLocker(), new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), - new MessageParser()); + new MessageParser(), + messageIdFactory); storeMailboxManager.setMessageSearchIndex(messageSearchIndex); storeMailboxManager.init(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java ---------------------------------------------------------------------- diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java index fa13685..0a47807 100644 --- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java +++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/json/MailboxMessageToElasticSearchJsonTest.java @@ -37,8 +37,10 @@ import org.apache.james.mailbox.FlagsBuilder; import org.apache.james.mailbox.MailboxSession.User; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.mock.MockMailboxSession; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.TestId; import org.apache.james.mailbox.store.extractor.DefaultTextExtractor; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage; @@ -55,6 +57,7 @@ public class MailboxMessageToElasticSearchJsonTest { public static final int SIZE = 25; public static final int BODY_START_OCTET = 100; public static final TestId MAILBOX_ID = TestId.of(18L); + public static final MessageId MESSAGE_ID = new DefaultMessageId(); public static final long MOD_SEQ = 42L; public static final MessageUid UID = MessageUid.of(25); public static final Charset CHARSET = Charsets.UTF_8; @@ -78,7 +81,8 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new DefaultTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage spamMail = new SimpleMailboxMessage(date, + MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID, + date, SIZE, BODY_START_OCTET, new SharedByteArrayInputStream("message".getBytes(Charsets.UTF_8)), @@ -96,13 +100,14 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new DefaultTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage spamMail = new SimpleMailboxMessage(date, - SIZE, - BODY_START_OCTET, - new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/spamMail.eml"))), - new Flags(), - propertyBuilder, - MAILBOX_ID); + MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID, + date, + SIZE, + BODY_START_OCTET, + new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/spamMail.eml"))), + new Flags(), + propertyBuilder, + MAILBOX_ID); spamMail.setUid(UID); spamMail.setModSeq(MOD_SEQ); assertThatJson(messageToElasticSearchJson.convertToJson(spamMail, ImmutableList.of(new MockMailboxSession("username").getUser()))) @@ -115,13 +120,14 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new DefaultTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage htmlMail = new SimpleMailboxMessage(date, - SIZE, - BODY_START_OCTET, - new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/htmlMail.eml"))), - new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("social", "pocket-money").build(), - propertyBuilder, - MAILBOX_ID); + MailboxMessage htmlMail = new SimpleMailboxMessage(MESSAGE_ID, + date, + SIZE, + BODY_START_OCTET, + new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/htmlMail.eml"))), + new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("social", "pocket-money").build(), + propertyBuilder, + MAILBOX_ID); htmlMail.setModSeq(MOD_SEQ); htmlMail.setUid(UID); assertThatJson(messageToElasticSearchJson.convertToJson(htmlMail, ImmutableList.of(new MockMailboxSession("username").getUser()))) @@ -134,13 +140,14 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new DefaultTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage pgpSignedMail = new SimpleMailboxMessage(date, - SIZE, - BODY_START_OCTET, - new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/pgpSignedMail.eml"))), - new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), - propertyBuilder, - MAILBOX_ID); + MailboxMessage pgpSignedMail = new SimpleMailboxMessage(MESSAGE_ID, + date, + SIZE, + BODY_START_OCTET, + new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/pgpSignedMail.eml"))), + new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), + propertyBuilder, + MAILBOX_ID); pgpSignedMail.setModSeq(MOD_SEQ); pgpSignedMail.setUid(UID); assertThatJson(messageToElasticSearchJson.convertToJson(pgpSignedMail, ImmutableList.of(new MockMailboxSession("username").getUser()))) @@ -153,13 +160,14 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new DefaultTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage mail = new SimpleMailboxMessage(date, - SIZE, - BODY_START_OCTET, - new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/mail.eml"))), - new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), - propertyBuilder, - MAILBOX_ID); + MailboxMessage mail = new SimpleMailboxMessage(MESSAGE_ID, + date, + SIZE, + BODY_START_OCTET, + new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/mail.eml"))), + new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), + propertyBuilder, + MAILBOX_ID); mail.setModSeq(MOD_SEQ); mail.setUid(UID); assertThatJson(messageToElasticSearchJson.convertToJson(mail, @@ -173,13 +181,14 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new DefaultTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage recursiveMail = new SimpleMailboxMessage(date, - SIZE, - BODY_START_OCTET, - new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))), - new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), - propertyBuilder, - MAILBOX_ID); + MailboxMessage recursiveMail = new SimpleMailboxMessage(MESSAGE_ID, + date, + SIZE, + BODY_START_OCTET, + new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))), + new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), + propertyBuilder, + MAILBOX_ID); recursiveMail.setModSeq(MOD_SEQ); recursiveMail.setUid(UID); assertThatJson(messageToElasticSearchJson.convertToJson(recursiveMail, ImmutableList.of(new MockMailboxSession("username").getUser()))) @@ -192,13 +201,14 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new DefaultTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(null, - SIZE, - BODY_START_OCTET, - new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))), - new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), - propertyBuilder, - MAILBOX_ID); + MailboxMessage mailWithNoInternalDate = new SimpleMailboxMessage(MESSAGE_ID, + null, + SIZE, + BODY_START_OCTET, + new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))), + new FlagsBuilder().add(Flags.Flag.DELETED, Flags.Flag.SEEN).add("debian", "security").build(), + propertyBuilder, + MAILBOX_ID); mailWithNoInternalDate.setModSeq(MOD_SEQ); mailWithNoInternalDate.setUid(UID); assertThatJson(messageToElasticSearchJson.convertToJson(mailWithNoInternalDate, ImmutableList.of(new MockMailboxSession("username").getUser()))) @@ -214,7 +224,7 @@ public class MailboxMessageToElasticSearchJsonTest { ZoneId.of("Europe/Paris")); MailboxMessage mailWithNoMailboxId; try { - mailWithNoMailboxId = new SimpleMailboxMessage(date, + mailWithNoMailboxId = new SimpleMailboxMessage(MESSAGE_ID, date, SIZE, BODY_START_OCTET, new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/recursiveMail.eml"))), @@ -260,7 +270,7 @@ public class MailboxMessageToElasticSearchJsonTest { MessageToElasticSearchJson messageToElasticSearchJson = new MessageToElasticSearchJson( new TikaTextExtractor(), ZoneId.of("Europe/Paris")); - MailboxMessage spamMail = new SimpleMailboxMessage(date, + MailboxMessage spamMail = new SimpleMailboxMessage(MESSAGE_ID, date, SIZE, BODY_START_OCTET, new SharedByteArrayInputStream(IOUtils.toByteArray(ClassLoader.getSystemResourceAsStream("eml/nonTextual.eml"))), http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java index cd3ce88..baae851 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxManager.java @@ -28,6 +28,7 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.hbase.mail.HBaseMailboxMapper; import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.Authenticator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; @@ -42,12 +43,16 @@ import org.apache.james.mailbox.store.transaction.TransactionalMapper; */ public class HBaseMailboxManager extends StoreMailboxManager { - public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser) { - super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser); + public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, + MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, + MessageParser messageParser, MessageId.Factory messageIdFactory) { + super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory); } - public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser) { - super(mapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser); + public HBaseMailboxManager(HBaseMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, + MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, + MessageParser messageParser, MessageId.Factory messageIdFactory) { + super(mapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory); } @Override @@ -97,6 +102,7 @@ public class HBaseMailboxManager extends StoreMailboxManager { getGroupMembershipResolver(), getQuotaManager(), getQuotaRootResolver(), - getMessageParser()); + getMessageParser(), + getMessageIdFactory()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java index be5fdb9..ecb3296 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java @@ -43,6 +43,8 @@ import org.apache.james.mailbox.exception.SubscriptionException; import org.apache.james.mailbox.hbase.mail.HBaseMailboxMapper; import org.apache.james.mailbox.hbase.mail.HBaseMessageMapper; import org.apache.james.mailbox.hbase.user.HBaseSubscriptionMapper; +import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.model.MessageId.Factory; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.mail.AnnotationMapper; import org.apache.james.mailbox.store.mail.AttachmentMapper; @@ -62,6 +64,7 @@ public class HBaseMailboxSessionMapperFactory extends MailboxSessionMapperFactor private final Configuration conf; private final UidProvider uidProvider; private final ModSeqProvider modSeqProvider; + private Factory messageIdFactory; /** * Creates the necessary tables in HBase if they do not exist. @@ -73,10 +76,11 @@ public class HBaseMailboxSessionMapperFactory extends MailboxSessionMapperFactor * @throws ZooKeeperConnectionException * @throws IOException */ - public HBaseMailboxSessionMapperFactory(Configuration conf, UidProvider uidProvider, ModSeqProvider modSeqProvider) { + public HBaseMailboxSessionMapperFactory(Configuration conf, UidProvider uidProvider, ModSeqProvider modSeqProvider, MessageId.Factory messageIdFactory) { this.conf = conf; this.uidProvider = uidProvider; this.modSeqProvider = modSeqProvider; + this.messageIdFactory = messageIdFactory; //TODO: add better exception handling for this HBaseAdmin hbaseAdmin = null; @@ -131,7 +135,7 @@ public class HBaseMailboxSessionMapperFactory extends MailboxSessionMapperFactor @Override public MessageMapper createMessageMapper(MailboxSession session) throws MailboxException { - return new HBaseMessageMapper(session, uidProvider, modSeqProvider, this.conf); + return new HBaseMessageMapper(session, uidProvider, modSeqProvider, messageIdFactory, this.conf); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java index 8c6fff3..793a1cd 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMessageManager.java @@ -25,6 +25,7 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.acl.MailboxACLResolver; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; @@ -41,8 +42,11 @@ import org.apache.james.mailbox.store.search.MessageSearchIndex; public class HBaseMessageManager extends StoreMessageManager { public HBaseMessageManager(MailboxSessionMapperFactory mapperFactory, MessageSearchIndex index, - MailboxEventDispatcher dispatcher, MailboxPathLocker locker, Mailbox mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser) throws MailboxException { - super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, quotaRootResolver, messageParser); + MailboxEventDispatcher dispatcher, MailboxPathLocker locker, Mailbox mailbox, MailboxACLResolver aclResolver, + GroupMembershipResolver groupMembershipResolver, QuotaManager quotaManager, + QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory) throws MailboxException { + super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, + quotaRootResolver, messageParser, messageIdFactory); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseUtils.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseUtils.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseUtils.java index 982f035..01640d8 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseUtils.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseUtils.java @@ -74,6 +74,7 @@ import org.apache.james.mailbox.hbase.io.ChunkInputStream; import org.apache.james.mailbox.hbase.mail.HBaseMailboxMessage; import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.model.MessageId; 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.Property; @@ -253,7 +254,7 @@ public class HBaseUtils { * @param result the result object containing message data * @return a HBaseMailboxMessage instance with message metadata. */ - public static MailboxMessage messageMetaFromResult(Configuration conf, Result result) { + public static MailboxMessage messageMetaFromResult(Configuration conf, Result result, MessageId.Factory messageIdFactory) { HBaseMailboxMessage message = null; Flags flags = new Flags(); List<Property> propList = new ArrayList<Property>(); @@ -323,7 +324,7 @@ public class HBaseUtils { PropertyBuilder props = new PropertyBuilder(propList); props.setMediaType(mediaType); props.setSubType(subType); - message = new HBaseMailboxMessage(conf, uuid, internalDate, flags, contentOctets, (int) (contentOctets - bodyOctets), props); + message = new HBaseMailboxMessage(conf, uuid, messageIdFactory.generate(), internalDate, flags, contentOctets, (int) (contentOctets - bodyOctets), props); message.setUid(uid); message.setModSeq(modSeq); message.setTextualLineCount(textualLineCount); http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/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 842b0c7..2815b61 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 @@ -42,7 +42,6 @@ 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.Property; @@ -95,15 +94,17 @@ public class HBaseMailboxMessage implements MailboxMessage { /** Meta data for this message */ private final List<Property> properties; private final List<String> userFlags; + private final MessageId messageId; /** * Create a copy of the given message. * All properties are cloned except mailbox and UID. */ - public HBaseMailboxMessage(Configuration conf, HBaseId mailboxId, MessageUid uid, long modSeq, MailboxMessage original) throws MailboxException { + public HBaseMailboxMessage(Configuration conf, HBaseId mailboxId, MessageUid uid, MessageId messageId, long modSeq, MailboxMessage original) throws MailboxException { this.conf = conf; this.mailboxId = mailboxId; this.uid = uid; + this.messageId = messageId; this.modSeq = modSeq; this.userFlags = new ArrayList<String>(); setFlags(original.createFlags()); @@ -122,10 +123,12 @@ public class HBaseMailboxMessage implements MailboxMessage { this.properties = original.getProperties(); } - public HBaseMailboxMessage(Configuration conf, HBaseId mailboxId, Date internalDate, Flags flags, long contentOctets, int bodyStartOctet, PropertyBuilder propertyBuilder) { + public HBaseMailboxMessage(Configuration conf, HBaseId mailboxId, MessageId messageId, + Date internalDate, Flags flags, long contentOctets, int bodyStartOctet, PropertyBuilder propertyBuilder) { super(); this.conf = conf; this.mailboxId = mailboxId; + this.messageId = messageId; this.internalDate = internalDate; userFlags = new ArrayList<String>(); @@ -235,7 +238,7 @@ public class HBaseMailboxMessage implements MailboxMessage { @Override public MessageId getMessageId() { - return new DefaultMessageId(getMailboxId(), getUid()); + return messageId; } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java index 713f3a3..dba79fb 100644 --- a/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java +++ b/mailbox/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java @@ -68,6 +68,8 @@ import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.hbase.HBaseId; import org.apache.james.mailbox.hbase.io.ChunkOutputStream; +import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.model.MessageId.Factory; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.MessageRange.Type; @@ -95,13 +97,17 @@ public class HBaseMessageMapper extends NonTransactionalMapper implements Messag private final MailboxSession mailboxSession; private final UidProvider uidProvider; private final ModSeqProvider modSeqProvider; + private final Factory messageIdFactory; public HBaseMessageMapper(MailboxSession session, final UidProvider uidProvider, - ModSeqProvider modSeqProvider, Configuration conf) { + ModSeqProvider modSeqProvider, + MessageId.Factory messageIdFactory, + Configuration conf) { this.mailboxSession = session; this.modSeqProvider = modSeqProvider; this.uidProvider = uidProvider; + this.messageIdFactory = messageIdFactory; this.conf = conf; } @@ -159,7 +165,7 @@ public class HBaseMessageMapper extends NonTransactionalMapper implements Messag Result result; long count = batchSize > 0 ? batchSize : Long.MAX_VALUE; while (((result = scanner.next()) != null) && (count > 0)) { - messageList.add(messageMetaFromResult(conf, result)); + messageList.add(messageMetaFromResult(conf, result, messageIdFactory)); count--; } scanner.close(); @@ -186,7 +192,7 @@ public class HBaseMessageMapper extends NonTransactionalMapper implements Messag Result result = messages.get(get); MailboxMessage message = null; if (!result.isEmpty()) { - message = messageMetaFromResult(conf, result); + message = messageMetaFromResult(conf, result, messageIdFactory); messageList.add(message); } messages.close(); @@ -213,7 +219,7 @@ public class HBaseMessageMapper extends NonTransactionalMapper implements Messag Result result; long count = batchSize > 0 ? batchSize : Long.MAX_VALUE; while (((result = scanner.next()) != null) && (count > 0)) { - messageList.add(messageMetaFromResult(conf, result)); + messageList.add(messageMetaFromResult(conf, result, messageIdFactory)); count--; } scanner.close(); @@ -259,7 +265,7 @@ public class HBaseMessageMapper extends NonTransactionalMapper implements Messag if (count == 0) { break; } - MailboxMessage message = messageMetaFromResult(conf, result); + MailboxMessage message = messageMetaFromResult(conf, result, messageIdFactory); messageList.add(message); count--; } @@ -573,7 +579,7 @@ public class HBaseMessageMapper extends NonTransactionalMapper implements Messag //TODO: check if creating a HBase message is the right thing to do HBaseId mailboxId = (HBaseId) mailbox.getMailboxId(); HBaseMailboxMessage message = new HBaseMailboxMessage(conf, - mailboxId, uid, modSeq, original); + mailboxId, uid, original.getMessageId(), modSeq, original); return save(mailboxId, message); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java index 5c161fb..7cf8f74 100644 --- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java +++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java @@ -35,6 +35,8 @@ import org.apache.james.mailbox.acl.UnionMailboxACLResolver; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider; import org.apache.james.mailbox.hbase.mail.HBaseUidProvider; +import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.junit.runner.RunWith; import org.xenei.junit.contract.Contract; @@ -58,14 +60,17 @@ public class HBaseMailboxManagerTest { HBaseUidProvider uidProvider = new HBaseUidProvider(CLUSTER.getConf()); HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(CLUSTER.getConf()); + MessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); HBaseMailboxSessionMapperFactory mapperFactory = new HBaseMailboxSessionMapperFactory(CLUSTER.getConf(), - uidProvider, modSeqProvider); + uidProvider, modSeqProvider, messageIdFactory); HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory, null, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), - new MessageParser()); + new MessageParser(), + messageIdFactory + ); try { manager.init(); http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java index c878c4a..01272b1 100644 --- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java +++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java @@ -39,6 +39,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider; import org.apache.james.mailbox.hbase.mail.HBaseUidProvider; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.mail.MailboxMapper; import org.apache.james.mailbox.store.mail.MessageMapper; import org.apache.james.mailbox.store.mail.ModSeqProvider; @@ -87,7 +88,8 @@ public class HBaseMailboxSessionMapperFactoryTest { public void testCreateMessageMapper() throws Exception { LOG.info("createMessageMapper"); MailboxSession session = null; - HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, null); + MessageId.Factory messageIdFactory = null; + HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, null, messageIdFactory); MessageMapper messageMapper = instance.createMessageMapper(session); assertNotNull(messageMapper); assertTrue(messageMapper instanceof MessageMapper); @@ -101,7 +103,8 @@ public class HBaseMailboxSessionMapperFactoryTest { public void testCreateMailboxMapper() throws Exception { LOG.info("createMailboxMapper"); MailboxSession session = null; - HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, null); + MessageId.Factory messageIdFactory = null; + HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, null, messageIdFactory); MailboxMapper mailboxMapper = instance.createMailboxMapper(session); assertNotNull(mailboxMapper); assertTrue(mailboxMapper instanceof MailboxMapper); @@ -115,7 +118,8 @@ public class HBaseMailboxSessionMapperFactoryTest { public void testCreateSubscriptionMapper() throws Exception { LOG.info("createSubscriptionMapper"); MailboxSession session = null; - HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, null); + MessageId.Factory messageIdFactory = null; + HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, null, messageIdFactory); SubscriptionMapper subscriptionMapper = instance.createSubscriptionMapper(session); assertNotNull(subscriptionMapper); assertTrue(subscriptionMapper instanceof SubscriptionMapper); @@ -129,7 +133,8 @@ public class HBaseMailboxSessionMapperFactoryTest { public void testGetModSeqProvider() { LOG.info("getModSeqProvider"); ModSeqProvider expResult = new HBaseModSeqProvider(conf); - HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, expResult); + MessageId.Factory messageIdFactory = null; + HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, null, expResult, messageIdFactory); ModSeqProvider result = instance.getModSeqProvider(); assertEquals(expResult, result); } @@ -141,7 +146,8 @@ public class HBaseMailboxSessionMapperFactoryTest { public void testGetUidProvider() { LOG.info("getUidProvider"); UidProvider expResult = new HBaseUidProvider(conf); - HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, expResult, null); + MessageId.Factory messageIdFactory = null; + HBaseMailboxSessionMapperFactory instance = new HBaseMailboxSessionMapperFactory(conf, expResult, null, messageIdFactory); UidProvider result = instance.getUidProvider(); assertEquals(expResult, result); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java index d5ecb65..40458d6 100644 --- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java +++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java @@ -56,6 +56,7 @@ import org.apache.hadoop.hbase.util.Bytes; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; 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.mail.model.impl.SimpleMailboxMessage; @@ -147,7 +148,8 @@ public class HBaseUtilsTest { flags.add("userFlag1"); flags.add("userFlag2"); HBaseId uuid = HBaseId.of(UUID.randomUUID()); - final SimpleMailboxMessage message = new SimpleMailboxMessage(new Date(), 100, 10, null, flags, new PropertyBuilder(), uuid); + DefaultMessageId messageId = new DefaultMessageId(); + final SimpleMailboxMessage message = new SimpleMailboxMessage(messageId, new Date(), 100, 10, null, flags, new PropertyBuilder(), uuid); message.setUid(MessageUid.of(1)); Put put = flagsToPut(message, flags); //test for the system flags http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessageMapperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessageMapperTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessageMapperTest.java index 741c1fc..50b6d27 100644 --- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessageMapperTest.java +++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMessageMapperTest.java @@ -49,6 +49,7 @@ import org.apache.james.mailbox.hbase.HBaseClusterSingleton; import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox; import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.MailboxPath; +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.PropertyBuilder; @@ -74,6 +75,7 @@ public class HBaseMailboxMessageMapperTest { private static final List<MailboxMessage> MESSAGE_NO = new ArrayList<MailboxMessage>(); private static final int COUNT = 5; private static Configuration conf; + private DefaultMessageId.Factory messageIdFactory; /* * we mock a simple message content */ @@ -97,9 +99,10 @@ public class HBaseMailboxMessageMapperTest { conf = CLUSTER.getConf(); uidProvider = new HBaseUidProvider(conf); modSeqProvider = new HBaseModSeqProvider(conf); + messageIdFactory = new DefaultMessageId.Factory(); generateTestData(); final MailboxSession session = new MockMailboxSession("ieugen"); - messageMapper = new HBaseMessageMapper(session, uidProvider, modSeqProvider, conf); + messageMapper = new HBaseMessageMapper(session, uidProvider, modSeqProvider, messageIdFactory, conf); for (MailboxMessage message : MESSAGE_NO) { messageMapper.add(MBOXES.get(1), message); } @@ -118,7 +121,7 @@ public class HBaseMailboxMessageMapperTest { CLUSTER.clearTable(SUBSCRIPTIONS); } - public static void generateTestData() { + public void generateTestData() { final Random random = new Random(); MailboxPath mboxPath; final PropertyBuilder propBuilder = new PropertyBuilder(); @@ -142,7 +145,7 @@ public class HBaseMailboxMessageMapperTest { final Date today = new Date(); for (int i = 0; i < COUNT * 2; i++) { - myMsg = new SimpleMailboxMessage(today, messageTemplate.length, + myMsg = new SimpleMailboxMessage(messageIdFactory.generate(), today, messageTemplate.length, messageTemplate.length - 20, content, flags, propBuilder, MBOXES.get(1).getMailboxId()); if (i == COUNT * 2 - 1) { http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java index 6d01cec..c4feb6e 100644 --- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java +++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java @@ -32,9 +32,11 @@ import org.apache.hadoop.hbase.util.Bytes; import org.apache.james.mailbox.exception.SubscriptionException; import org.apache.james.mailbox.hbase.HBaseClusterSingleton; import org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory; +import org.apache.james.mailbox.model.MessageId; import static org.apache.james.mailbox.hbase.HBaseNames.*; +import org.apache.james.mailbox.store.mail.model.DefaultMessageId; import org.apache.james.mailbox.store.user.model.Subscription; import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription; @@ -65,7 +67,8 @@ public class HBaseSubscriptionMapperTest { ensureTables(); clearTables(); conf = CLUSTER.getConf(); - mapperFactory = new HBaseMailboxSessionMapperFactory(conf, null, null); + MessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); + mapperFactory = new HBaseMailboxSessionMapperFactory(conf, null, null, messageIdFactory); mapper = new HBaseSubscriptionMapper(conf); fillSubscriptionList(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java index 1cb8f84..2e0c26d 100644 --- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java +++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMailboxManager.java @@ -27,6 +27,7 @@ import org.apache.james.mailbox.acl.MailboxACLResolver; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.jcr.mail.model.JCRMailbox; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.store.Authenticator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; @@ -44,12 +45,16 @@ public class JCRMailboxManager extends StoreMailboxManager implements JCRImapCon private final Logger logger = LoggerFactory.getLogger(JCRMailboxManager.class); - public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser) { - this(mapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser); + public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, + MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, + MessageParser messageParser, MessageId.Factory messageIdFactory) { + this(mapperFactory, authenticator, new JVMMailboxPathLocker(), aclResolver, groupMembershipResolver, messageParser, messageIdFactory); } - public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, MessageParser messageParser) { - super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser); + public JCRMailboxManager(JCRMailboxSessionMapperFactory mapperFactory, Authenticator authenticator, + MailboxPathLocker locker, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, + MessageParser messageParser, MessageId.Factory messageIdFactory) { + super(mapperFactory, authenticator, locker, aclResolver, groupMembershipResolver, messageParser, messageIdFactory); } @Override @@ -69,7 +74,8 @@ public class JCRMailboxManager extends StoreMailboxManager implements JCRImapCon logger, getQuotaManager(), getQuotaRootResolver(), - getMessageParser()); + getMessageParser(), + getMessageIdFactory()); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java index b3daebe..64dc241 100644 --- a/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java +++ b/mailbox/jcr/src/main/java/org/apache/james/mailbox/jcr/JCRMessageManager.java @@ -32,6 +32,7 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.jcr.mail.model.JCRMailbox; import org.apache.james.mailbox.jcr.mail.model.JCRMailboxMessage; import org.apache.james.mailbox.model.MessageAttachment; +import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; @@ -52,8 +53,12 @@ public class JCRMessageManager extends StoreMessageManager { private final Logger log; public JCRMessageManager(MailboxSessionMapperFactory mapperFactory, MessageSearchIndex index, - final MailboxEventDispatcher dispatcher, MailboxPathLocker locker, JCRMailbox mailbox, MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, Logger log, QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser) throws MailboxException { - super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, quotaRootResolver, messageParser); + final MailboxEventDispatcher dispatcher, MailboxPathLocker locker, JCRMailbox mailbox, + MailboxACLResolver aclResolver, GroupMembershipResolver groupMembershipResolver, Logger log, + QuotaManager quotaManager, QuotaRootResolver quotaRootResolver, MessageParser messageParser, MessageId.Factory messageIdFactory) + throws MailboxException { + super(mapperFactory, index, dispatcher, locker, mailbox, aclResolver, groupMembershipResolver, quotaManager, + quotaRootResolver, messageParser, messageIdFactory); this.log = log; } @@ -61,7 +66,7 @@ public class JCRMessageManager extends StoreMessageManager { @Override protected MailboxMessage createMessage(Date internalDate, int size, int bodyStartOctet, SharedInputStream content, Flags flags, PropertyBuilder propertyBuilder, List<MessageAttachment> attachments) throws MailboxException{ JCRId mailboxId = (JCRId) getMailboxEntity().getMailboxId(); - return new JCRMailboxMessage(mailboxId, internalDate, + return new JCRMailboxMessage(mailboxId, getMessageIdFactory().generate(), internalDate, size, flags, content, bodyStartOctet, propertyBuilder, log); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7882e36f/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 4583227..d7bb123 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 @@ -46,7 +46,6 @@ 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.Property; @@ -69,6 +68,7 @@ public class JCRMailboxMessage implements MailboxMessage, JCRImapConstants, Pers private JCRId mailboxUUID; private MessageUid uid; + private MessageId messageId; private Date internalDate; private long size; private boolean answered; @@ -108,10 +108,11 @@ public class JCRMailboxMessage implements MailboxMessage, JCRImapConstants, Pers this.node = node; } - public JCRMailboxMessage(JCRId mailboxUUID, Date internalDate, int size, Flags flags, SharedInputStream content, + public JCRMailboxMessage(JCRId mailboxUUID, MessageId messageId, Date internalDate, int size, Flags flags, SharedInputStream content, int bodyStartOctet, PropertyBuilder propertyBuilder, Logger logger) { super(); this.mailboxUUID = mailboxUUID; + this.messageId = messageId; this.internalDate = internalDate; this.size = size; this.logger = logger; @@ -133,8 +134,9 @@ public class JCRMailboxMessage implements MailboxMessage, JCRImapConstants, Pers /** * Create a copy of the given message */ - public JCRMailboxMessage(JCRId mailboxUUID, MessageUid uid, long modSeq, JCRMailboxMessage message, Logger logger) throws MailboxException { + public JCRMailboxMessage(JCRId mailboxUUID, MessageUid uid, MessageId messageId, long modSeq, JCRMailboxMessage message, Logger logger) throws MailboxException { this.mailboxUUID = mailboxUUID; + this.messageId = messageId; this.internalDate = message.getInternalDate(); this.size = message.getFullContentOctets(); setFlags(message.createFlags()); @@ -376,7 +378,7 @@ public class JCRMailboxMessage implements MailboxMessage, JCRImapConstants, Pers @Override public MessageId getMessageId() { - return new DefaultMessageId(getMailboxId(), getUid()); + return messageId; } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org