MAILBOX-312 Remove InMemory MessageIdManager Rely on StoreMessageIdManager instead.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7f0d94f5 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7f0d94f5 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7f0d94f5 Branch: refs/heads/master Commit: 7f0d94f579857f7598d05ca12e0e38def06a15a6 Parents: 8a5ea2e Author: benwa <btell...@linagora.com> Authored: Tue Oct 17 14:49:49 2017 +0700 Committer: Matthieu Baechler <matth...@apache.org> Committed: Wed Oct 18 14:17:53 2017 +0200 ---------------------------------------------------------------------- .../mailbox/manager/IntegrationResources.java | 14 +- .../ElasticSearchIntegrationTest.java | 18 +- .../search/LuceneMessageSearchIndexTest.java | 17 +- .../InMemoryMailboxSessionMapperFactory.java | 6 +- .../inmemory/InMemoryMessageIdManager.java | 199 ------------------- .../InMemoryCombinationManagerTest.java | 3 +- .../InMemoryMessageIdManagerStorageTest.java | 3 +- .../InMemoryMessageIdManagerTestSystem.java | 29 ++- .../MessageIdManagerTestSystemProvider.java | 51 +---- .../MessageManagerTestSystemProvider.java | 47 +---- .../manager/InMemoryIntegrationResources.java | 26 ++- .../search/SimpleMessageSearchIndexTest.java | 20 +- .../modules/mailbox/MemoryMailboxModule.java | 6 +- .../jmap/methods/GetMessagesMethodTest.java | 7 +- .../jmap/send/PostDequeueDecoratorTest.java | 4 +- .../protocols/webadmin/webadmin-mailbox/pom.xml | 6 + .../routes/UserMailboxesRoutesTest.java | 22 +- 17 files changed, 125 insertions(+), 353 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java index ff70bc7..a76acaf 100644 --- a/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java +++ b/mailbox/api/src/test/java/org/apache/james/mailbox/manager/IntegrationResources.java @@ -21,28 +21,28 @@ package org.apache.james.mailbox.manager; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MessageIdManager; -import org.apache.james.mailbox.quota.MaxQuotaManager; -import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.quota.MaxQuotaManager; +import org.apache.james.mailbox.quota.QuotaManager; import org.apache.james.mailbox.quota.QuotaRootResolver; /** * Provides empty resources for integration tests. */ -public interface IntegrationResources { +public interface IntegrationResources<T extends MailboxManager> { - MailboxManager createMailboxManager(GroupMembershipResolver groupMembershipResolver) throws MailboxException; + T createMailboxManager(GroupMembershipResolver groupMembershipResolver) throws MailboxException; - QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, MailboxManager mailboxManager) throws Exception; + QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, T mailboxManager) throws Exception; MaxQuotaManager createMaxQuotaManager() throws Exception; - QuotaRootResolver createQuotaRootResolver(MailboxManager mailboxManager) throws Exception; + QuotaRootResolver createQuotaRootResolver(T mailboxManager) throws Exception; GroupMembershipResolver createGroupMembershipResolver() throws Exception; - MessageIdManager createMessageIdManager(MailboxManager mailboxManager); + MessageIdManager createMessageIdManager(T mailboxManager); /** * Init you will want to perform before tests http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/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 6efcaa7..4f4ca72 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 @@ -46,7 +46,6 @@ 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.inmemory.InMemoryMessageId; -import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager; import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxPath; @@ -55,7 +54,12 @@ import org.apache.james.mailbox.store.FakeAuthenticator; import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; +import org.apache.james.mailbox.store.StoreMessageIdManager; +import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener; +import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; +import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; +import org.apache.james.mailbox.store.quota.NoQuotaManager; import org.apache.james.mailbox.store.search.AbstractMessageSearchIndexTest; import org.apache.james.mailbox.tika.TikaConfiguration; import org.apache.james.mailbox.tika.TikaContainer; @@ -134,7 +138,17 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest new SimpleGroupMembershipResolver(), new MessageParser(), messageIdFactory); - messageIdManager = new InMemoryMessageIdManager(storeMailboxManager); + DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener(); + MailboxEventDispatcher mailboxEventDispatcher = new MailboxEventDispatcher(delegatingListener); + storeMailboxManager.setDelegatingMailboxListener(delegatingListener); + + messageIdManager = new StoreMessageIdManager( + storeMailboxManager.getMapperFactory(), + mailboxEventDispatcher, + messageIdFactory, + new NoQuotaManager(), + new DefaultQuotaRootResolver(mapperFactory)); + storeMailboxManager.setMessageSearchIndex(messageSearchIndex); storeMailboxManager.init(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java ---------------------------------------------------------------------- diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java index a7e4834..4da19c5 100644 --- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java +++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java @@ -25,13 +25,17 @@ import org.apache.james.mailbox.exception.MailboxException; 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.inmemory.InMemoryMessageIdManager; import org.apache.james.mailbox.model.TestMessageId; import org.apache.james.mailbox.store.FakeAuthenticator; import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; +import org.apache.james.mailbox.store.StoreMessageIdManager; +import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener; +import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; +import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; +import org.apache.james.mailbox.store.quota.NoQuotaManager; import org.apache.james.mailbox.store.search.AbstractMessageSearchIndexTest; import org.apache.lucene.store.RAMDirectory; import org.junit.Ignore; @@ -55,7 +59,16 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest new SimpleGroupMembershipResolver(), new MessageParser(), messageIdFactory); - messageIdManager = new InMemoryMessageIdManager(storeMailboxManager); + DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener(); + MailboxEventDispatcher mailboxEventDispatcher = new MailboxEventDispatcher(delegatingListener); + storeMailboxManager.setDelegatingMailboxListener(delegatingListener); + + messageIdManager = new StoreMessageIdManager( + storeMailboxManager.getMapperFactory(), + mailboxEventDispatcher, + messageIdFactory, + new NoQuotaManager(), + new DefaultQuotaRootResolver(mapperFactory)); messageSearchIndex = new LuceneMessageSearchIndex(mapperFactory, new InMemoryId.Factory(), new RAMDirectory(), messageIdFactory); storeMailboxManager.setMessageSearchIndex(messageSearchIndex); storeMailboxManager.init(); http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java index eb6a010..80b7a68 100644 --- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java +++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMailboxSessionMapperFactory.java @@ -24,6 +24,7 @@ import org.apache.james.mailbox.exception.SubscriptionException; import org.apache.james.mailbox.inmemory.mail.InMemoryAnnotationMapper; import org.apache.james.mailbox.inmemory.mail.InMemoryAttachmentMapper; import org.apache.james.mailbox.inmemory.mail.InMemoryMailboxMapper; +import org.apache.james.mailbox.inmemory.mail.InMemoryMessageIdMapper; import org.apache.james.mailbox.inmemory.mail.InMemoryMessageMapper; import org.apache.james.mailbox.inmemory.mail.InMemoryModSeqProvider; import org.apache.james.mailbox.inmemory.mail.InMemoryUidProvider; @@ -42,6 +43,7 @@ public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFac private final MailboxMapper mailboxMapper; private final InMemoryMessageMapper messageMapper; + private final InMemoryMessageIdMapper messageIdMapper; private final SubscriptionMapper subscriptionMapper; private final AttachmentMapper attachmentMapper; private final AnnotationMapper annotationMapper; @@ -53,6 +55,8 @@ public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFac uidProvider = new InMemoryUidProvider(); modSeqProvider = new InMemoryModSeqProvider(); messageMapper = new InMemoryMessageMapper(null, uidProvider, modSeqProvider); + messageIdMapper = new InMemoryMessageIdMapper(mailboxMapper, messageMapper); + subscriptionMapper = new InMemorySubscriptionMapper(); attachmentMapper = new InMemoryAttachmentMapper(); annotationMapper = new InMemoryAnnotationMapper(); @@ -70,7 +74,7 @@ public class InMemoryMailboxSessionMapperFactory extends MailboxSessionMapperFac @Override public MessageIdMapper createMessageIdMapper(MailboxSession session) { - return null; + return messageIdMapper; } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java deleted file mode 100644 index 68f4b57..0000000 --- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManager.java +++ /dev/null @@ -1,199 +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.inmemory; - -import java.util.Collection; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.function.Predicate; -import java.util.stream.Stream; - -import javax.inject.Inject; -import javax.mail.Flags; - -import org.apache.james.mailbox.MailboxManager; -import org.apache.james.mailbox.MailboxSession; -import org.apache.james.mailbox.MessageIdManager; -import org.apache.james.mailbox.MessageManager; -import org.apache.james.mailbox.MessageManager.FlagsUpdateMode; -import org.apache.james.mailbox.exception.MailboxException; -import org.apache.james.mailbox.exception.MailboxNotFoundException; -import org.apache.james.mailbox.model.FetchGroupImpl; -import org.apache.james.mailbox.model.MailboxId; -import org.apache.james.mailbox.model.MailboxMetaData; -import org.apache.james.mailbox.model.MailboxPath; -import org.apache.james.mailbox.model.MessageId; -import org.apache.james.mailbox.model.MessageRange; -import org.apache.james.mailbox.model.MessageResult; -import org.apache.james.mailbox.model.MessageResult.FetchGroup; -import org.apache.james.mailbox.model.search.MailboxQuery; -import org.apache.james.util.OptionalUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.github.fge.lambdas.Throwing; -import com.github.steveash.guavate.Guavate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Iterables; -import com.google.common.collect.Sets; -import com.google.common.collect.Sets.SetView; - -public class InMemoryMessageIdManager implements MessageIdManager { - - private static final Logger LOGGER = LoggerFactory.getLogger(InMemoryMessageIdManager.class); - private final MailboxManager mailboxManager; - - @Inject - public InMemoryMessageIdManager(MailboxManager mailboxManager) { - this.mailboxManager = mailboxManager; - } - - @Override - public void setFlags(Flags newState, FlagsUpdateMode flagsUpdateMode, MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException { - for (MailboxId mailboxId: mailboxIds) { - Optional<MessageResult> message = findMessageWithId(mailboxId, messageId, FetchGroupImpl.MINIMAL, mailboxSession); - if (message.isPresent()) { - mailboxManager.getMailbox(mailboxId, mailboxSession) - .setFlags(newState, flagsUpdateMode, message.get().getUid().toRange(), mailboxSession); - } - } - } - - @Override - public Set<MessageId> accessibleMessages(Collection<MessageId> messageIds, MailboxSession mailboxSession) throws MailboxException { - return getUsersMailboxIds(mailboxSession) - .stream() - .flatMap(Throwing.function(mailboxId -> retrieveMailboxMessages(mailboxId, messageIds, FetchGroupImpl.MINIMAL, mailboxSession))) - .map(MessageResult::getMessageId) - .collect(Guavate.toImmutableSet()); - } - - - @Override - public List<MessageResult> getMessages(List<MessageId> messages, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException { - return getUsersMailboxIds(mailboxSession) - .stream() - .flatMap(Throwing.function(mailboxId -> retrieveMailboxMessages(mailboxId, messages, FetchGroupImpl.MINIMAL, mailboxSession))) - .collect(Guavate.toImmutableList()); - } - - @Override - public void delete(MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException { - for (MailboxId mailboxId: mailboxIds) { - Optional<MessageResult> maybeMessage = findMessageWithId(mailboxId, messageId, FetchGroupImpl.MINIMAL, mailboxSession); - if (maybeMessage.isPresent()) { - MessageRange range = maybeMessage.get().getUid().toRange(); - MessageManager messageManager = mailboxManager.getMailbox(mailboxId, mailboxSession); - messageManager.setFlags(new Flags(Flags.Flag.DELETED), FlagsUpdateMode.ADD, range, mailboxSession); - messageManager.expunge(range, mailboxSession); - } - } - } - - @Override - public void setInMailboxes(MessageId messageId, List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxException { - List<MessageResult> messages = getMessages(ImmutableList.of(messageId), FetchGroupImpl.MINIMAL, mailboxSession); - - filterOnMailboxSession(mailboxIds, mailboxSession); - - if (!messages.isEmpty()) { - ImmutableSet<MailboxId> currentMailboxes = messages.stream() - .map(MessageResult::getMailboxId) - .collect(Guavate.toImmutableSet()); - - HashSet<MailboxId> targetMailboxes = Sets.newHashSet(mailboxIds); - List<MailboxId> mailboxesToRemove = ImmutableList.copyOf(Sets.difference(currentMailboxes, targetMailboxes)); - SetView<MailboxId> mailboxesToAdd = Sets.difference(targetMailboxes, currentMailboxes); - - MessageResult referenceMessage = Iterables.getLast(messages); - for (MailboxId mailboxId: mailboxesToAdd) { - MessageRange messageRange = referenceMessage.getUid().toRange(); - mailboxManager.copyMessages(messageRange, referenceMessage.getMailboxId(), mailboxId, mailboxSession); - mailboxManager.getMailbox(mailboxId, mailboxSession) - .setFlags(referenceMessage.getFlags(), FlagsUpdateMode.REPLACE, messageRange, mailboxSession); - } - - for (MessageResult message: messages) { - delete(message.getMessageId(), mailboxesToRemove, mailboxSession); - } - } - } - - private List<MailboxId> getUsersMailboxIds(MailboxSession mailboxSession) throws MailboxException { - return mailboxManager.search(userMailboxes(mailboxSession), mailboxSession) - .stream() - .map(MailboxMetaData::getId) - .collect(Guavate.toImmutableList()); - } - - private MailboxQuery userMailboxes(MailboxSession mailboxSession) { - return MailboxQuery.privateMailboxesBuilder(mailboxSession) - .matchesAllMailboxNames() - .build(); - } - - private Stream<MessageResult> retrieveMailboxMessages(MailboxId mailboxId, Collection<MessageId> messages, FetchGroup fetchGroup, MailboxSession mailboxSession) { - return messages.stream() - .map(Throwing.function(messageId -> findMessageWithId(mailboxId, messageId, fetchGroup, mailboxSession))) - .flatMap(OptionalUtils::toStream); - } - - private void filterOnMailboxSession(List<MailboxId> mailboxIds, MailboxSession mailboxSession) throws MailboxNotFoundException { - Optional<MailboxId> mailboxForbidden = mailboxIds.stream() - .filter(findMailboxBelongsToAnotherSession(mailboxSession)) - .findAny(); - - if (mailboxForbidden.isPresent()) { - LOGGER.info("Mailbox with Id " + mailboxForbidden.get() + " does not belong to " + mailboxSession.getUser().getUserName()); - throw new MailboxNotFoundException(mailboxForbidden.get()); - } - } - - private Predicate<MailboxId> findMailboxBelongsToAnotherSession(MailboxSession mailboxSession) { - return input -> { - try { - MailboxPath currentMailbox = mailboxManager.getMailbox(input, mailboxSession).getMailboxPath(); - return !mailboxSession.getUser().isSameUser(currentMailbox.getUser()); - } catch (MailboxException e) { - return true; - } - }; - } - - private Optional<MessageResult> findMessageWithId(MailboxId mailboxId, MessageId messageId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException { - return retrieveAllMessages(mailboxId, fetchGroup, mailboxSession) - .stream() - .filter(filterByMessageId(messageId)) - .findFirst(); - } - - private Predicate<MessageResult> filterByMessageId(MessageId messageId) { - return messageResult -> messageResult.getMessageId().equals(messageId); - } - - private ImmutableList<MessageResult> retrieveAllMessages(MailboxId mailboxId, FetchGroup fetchGroup, MailboxSession mailboxSession) throws MailboxException { - MessageManager messageManager = mailboxManager.getMailbox(mailboxId, mailboxSession); - return ImmutableList.copyOf(messageManager.getMessages(MessageRange.all(), fetchGroup, mailboxSession)); - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java index 0a63c02..75ceb4c 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.mailbox.inmemory; +import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.store.AbstractCombinationManagerTest; import org.apache.james.mailbox.store.CombinationManagerTestSystem; import org.junit.Before; @@ -30,7 +31,7 @@ public class InMemoryCombinationManagerTest extends AbstractCombinationManagerTe } @Override - public CombinationManagerTestSystem createTestingData() { + public CombinationManagerTestSystem createTestingData() throws MailboxException { return MessageIdManagerTestSystemProvider.createManagersTestingData(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java index b9aa92b..d9d6ddf 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.mailbox.inmemory; +import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.store.AbstractMessageIdManagerStorageTest; import org.apache.james.mailbox.store.MessageIdManagerTestSystem; import org.junit.Before; @@ -30,7 +31,7 @@ public class InMemoryMessageIdManagerStorageTest extends AbstractMessageIdManage } @Override - protected MessageIdManagerTestSystem createTestingData() { + protected MessageIdManagerTestSystem createTestingData() throws MailboxException { return MessageIdManagerTestSystemProvider.createTestingData(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java index dd0e66b..01073e8 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java @@ -26,16 +26,19 @@ import javax.mail.Flags; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.MessageUid; +import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver; import org.apache.james.mailbox.exception.MailboxException; -import org.apache.james.mailbox.model.MailboxACL; +import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxMetaData; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.search.MailboxQuery; import org.apache.james.mailbox.store.MessageIdManagerTestSystem; +import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox; @@ -44,6 +47,14 @@ import com.google.common.base.Throwables; public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSystem { + public static InMemoryMessageIdManagerTestSystem create() throws MailboxException { + InMemoryIntegrationResources inMemoryIntegrationResources = new InMemoryIntegrationResources(); + StoreMailboxManager mailboxManager = inMemoryIntegrationResources.createMailboxManager(new SimpleGroupMembershipResolver()); + return new InMemoryMessageIdManagerTestSystem( + inMemoryIntegrationResources.createMessageIdManager(mailboxManager), + mailboxManager); + } + private static final MessageId FIRST_MESSAGE_ID = InMemoryMessageId.of(1); private static final long ONE_HUNDRED = 100; private static final int UID_VALIDITY = 1024; @@ -52,8 +63,8 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst private final MailboxManager mailboxManager; private Optional<MessageId> lastMessageIdUsed; - public InMemoryMessageIdManagerTestSystem(MailboxManager mailboxManager) { - super(new InMemoryMessageIdManager(mailboxManager)); + private InMemoryMessageIdManagerTestSystem(MessageIdManager messageIdManager, MailboxManager mailboxManager) { + super(messageIdManager); this.mailboxManager = mailboxManager; this.lastMessageIdUsed = Optional.empty(); } @@ -95,18 +106,6 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst } } - - @Override - public void addRights(MailboxId mailboxId, MailboxACL.Rfc4314Rights rights, String targetUser, MailboxSession session) throws MailboxException { - MessageManager mailbox = mailboxManager.getMailbox(mailboxId, session); - mailboxManager.applyRightsCommand(mailbox.getMailboxPath(), - MailboxACL.command() - .rights(rights) - .forUser(targetUser) - .asAddition(), - session); - } - private Optional<MailboxMetaData> retrieveMailbox(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException { MailboxQuery userMailboxesQuery = MailboxQuery.privateMailboxesBuilder(mailboxSession) .matchesAllMailboxNames() http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java index e2ffe1f..b4123bc 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageIdManagerTestSystemProvider.java @@ -18,56 +18,25 @@ ****************************************************************/ package org.apache.james.mailbox.inmemory; -import org.apache.james.mailbox.acl.GroupMembershipResolver; -import org.apache.james.mailbox.acl.MailboxACLResolver; 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.fixture.MailboxFixture; -import org.apache.james.mailbox.model.MessageId; -import org.apache.james.mailbox.store.FakeAuthenticator; -import org.apache.james.mailbox.store.FakeAuthorizator; +import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources; import org.apache.james.mailbox.store.CombinationManagerTestSystem; import org.apache.james.mailbox.store.MessageIdManagerTestSystem; -import org.apache.james.mailbox.store.mail.model.impl.MessageParser; - -import com.google.common.base.Throwables; +import org.apache.james.mailbox.store.StoreMailboxManager; public class MessageIdManagerTestSystemProvider { - private static final int LIMIT_ANNOTATIONS = 3; - private static final int LIMIT_ANNOTATION_SIZE = 30; - - private static final String PASSWORD = "password"; - - public static MessageIdManagerTestSystem createTestingData() { - return new InMemoryMessageIdManagerTestSystem(createMailboxManager()); + public static MessageIdManagerTestSystem createTestingData() throws MailboxException { + return InMemoryMessageIdManagerTestSystem.create(); } - public static CombinationManagerTestSystem createManagersTestingData() { - InMemoryMailboxManager mailboxManager = createMailboxManager(); - return new InMemoryCombinationManagerTestSystem(mailboxManager, new InMemoryMessageIdManager(mailboxManager)); - } + public static CombinationManagerTestSystem createManagersTestingData() throws MailboxException { + InMemoryIntegrationResources inMemoryIntegrationResources = new InMemoryIntegrationResources(); + StoreMailboxManager mailboxManager = inMemoryIntegrationResources.createMailboxManager(new SimpleGroupMembershipResolver()); - private static InMemoryMailboxManager createMailboxManager() { - MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); - GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); - MessageParser messageParser = new MessageParser(); - - InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory(); - MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory(); - FakeAuthenticator authenticator = new FakeAuthenticator(); - FakeAuthorizator authorizator = FakeAuthorizator.defaultReject(); - authenticator.addUser(MailboxFixture.USER, PASSWORD); - authenticator.addUser(MailboxFixture.OTHER_USER, PASSWORD); - InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, - aclResolver, groupMembershipResolver, messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE); - - try { - mailboxManager.init(); - } catch (MailboxException e) { - Throwables.propagate(e); - } - return mailboxManager; + return new InMemoryCombinationManagerTestSystem(mailboxManager, + inMemoryIntegrationResources.createMessageIdManager(mailboxManager)); } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java index 3776033..a7e1d16 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MessageManagerTestSystemProvider.java @@ -18,56 +18,19 @@ ****************************************************************/ package org.apache.james.mailbox.inmemory; -import org.apache.james.mailbox.acl.GroupMembershipResolver; -import org.apache.james.mailbox.acl.MailboxACLResolver; 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.fixture.MailboxFixture; -import org.apache.james.mailbox.model.MessageId; -import org.apache.james.mailbox.store.CombinationManagerTestSystem; -import org.apache.james.mailbox.store.FakeAuthenticator; -import org.apache.james.mailbox.store.FakeAuthorizator; +import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources; import org.apache.james.mailbox.store.MessageManagerTestSystem; -import org.apache.james.mailbox.store.mail.model.impl.MessageParser; - -import com.google.common.base.Throwables; +import org.apache.james.mailbox.store.StoreMailboxManager; public class MessageManagerTestSystemProvider { - private static final int LIMIT_ANNOTATIONS = 3; - private static final int LIMIT_ANNOTATION_SIZE = 30; - - private static final String PASSWORD = "password"; public static MessageManagerTestSystem createTestSystem() throws MailboxException { - return new InMemoryMessageManagerTestSystem(createMailboxManager()); - } - - public static CombinationManagerTestSystem createManagersTestingData() { - InMemoryMailboxManager mailboxManager = createMailboxManager(); - return new InMemoryCombinationManagerTestSystem(mailboxManager, new InMemoryMessageIdManager(mailboxManager)); - } - - private static InMemoryMailboxManager createMailboxManager() { - MailboxACLResolver aclResolver = new UnionMailboxACLResolver(); - GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver(); - MessageParser messageParser = new MessageParser(); - - InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory(); - MessageId.Factory messageIdFactory = new InMemoryMessageId.Factory(); - FakeAuthenticator authenticator = new FakeAuthenticator(); - FakeAuthorizator authorizator = FakeAuthorizator.defaultReject(); - authenticator.addUser(MailboxFixture.USER, PASSWORD); - authenticator.addUser(MailboxFixture.OTHER_USER, PASSWORD); - InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, authenticator, authorizator, - aclResolver, groupMembershipResolver, messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE); + InMemoryIntegrationResources inMemoryIntegrationResources = new InMemoryIntegrationResources(); + StoreMailboxManager mailboxManager = inMemoryIntegrationResources.createMailboxManager(new SimpleGroupMembershipResolver()); - try { - mailboxManager.init(); - } catch (MailboxException e) { - Throwables.propagate(e); - } - return mailboxManager; + return new InMemoryMessageManagerTestSystem(mailboxManager); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java ---------------------------------------------------------------------- diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java index 73084e7..f8a8e56 100644 --- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java +++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java @@ -19,7 +19,6 @@ package org.apache.james.mailbox.inmemory.manager; -import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver; @@ -28,7 +27,6 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.inmemory.InMemoryMailboxManager; import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory; import org.apache.james.mailbox.inmemory.InMemoryMessageId; -import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager; import org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager; import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager; import org.apache.james.mailbox.manager.IntegrationResources; @@ -40,19 +38,20 @@ import org.apache.james.mailbox.store.FakeAuthenticator; import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.NoMailboxPathLocker; import org.apache.james.mailbox.store.StoreMailboxManager; +import org.apache.james.mailbox.store.StoreMessageIdManager; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator; import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater; import org.apache.james.mailbox.store.quota.StoreQuotaManager; -public class InMemoryIntegrationResources implements IntegrationResources { +public class InMemoryIntegrationResources implements IntegrationResources<StoreMailboxManager> { private SimpleGroupMembershipResolver groupMembershipResolver; private DefaultQuotaRootResolver quotaRootResolver; @Override - public MailboxManager createMailboxManager(GroupMembershipResolver groupMembershipResolver) throws MailboxException { + public StoreMailboxManager createMailboxManager(GroupMembershipResolver groupMembershipResolver) throws MailboxException { FakeAuthenticator fakeAuthenticator = new FakeAuthenticator(); fakeAuthenticator.addUser(ManagerTestResources.USER, ManagerTestResources.USER_PASS); fakeAuthenticator.addUser(ManagerTestResources.OTHER_USER, ManagerTestResources.OTHER_USER_PASS); @@ -71,24 +70,29 @@ public class InMemoryIntegrationResources implements IntegrationResources { } @Override - public MessageIdManager createMessageIdManager(MailboxManager mailboxManager) { - return new InMemoryMessageIdManager(mailboxManager); + public MessageIdManager createMessageIdManager(StoreMailboxManager mailboxManager) { + return new StoreMessageIdManager( + mailboxManager.getMapperFactory(), + mailboxManager.getEventDispatcher(), + new InMemoryMessageId.Factory(), + mailboxManager.getQuotaManager(), + mailboxManager.getQuotaRootResolver()); } @Override - public QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, MailboxManager mailboxManager) throws Exception { + public QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, StoreMailboxManager mailboxManager) throws Exception { QuotaRootResolver quotaRootResolver = createQuotaRootResolver(mailboxManager); InMemoryCurrentQuotaManager currentQuotaManager = new InMemoryCurrentQuotaManager( - new CurrentQuotaCalculator(((StoreMailboxManager)mailboxManager).getMapperFactory(), quotaRootResolver), + new CurrentQuotaCalculator(mailboxManager.getMapperFactory(), quotaRootResolver), mailboxManager ); ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver); StoreQuotaManager quotaManager = new StoreQuotaManager(currentQuotaManager, maxQuotaManager); quotaManager.setCalculateWhenUnlimited(false); - ((StoreMailboxManager) mailboxManager).setQuotaManager(quotaManager); + mailboxManager.setQuotaManager(quotaManager); mailboxManager.addGlobalListener(listeningCurrentQuotaUpdater, null); return quotaManager; } @@ -105,9 +109,9 @@ public class InMemoryIntegrationResources implements IntegrationResources { } @Override - public DefaultQuotaRootResolver createQuotaRootResolver(MailboxManager mailboxManager) throws Exception { + public DefaultQuotaRootResolver createQuotaRootResolver(StoreMailboxManager mailboxManager) throws Exception { if (quotaRootResolver == null) { - quotaRootResolver = new DefaultQuotaRootResolver(((StoreMailboxManager) mailboxManager).getMapperFactory()); + quotaRootResolver = new DefaultQuotaRootResolver(mailboxManager.getMapperFactory()); } return quotaRootResolver; } http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java ---------------------------------------------------------------------- diff --git a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java index 8cba950..358119c 100644 --- a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java +++ b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java @@ -25,12 +25,16 @@ import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.inmemory.InMemoryMailboxManager; import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory; import org.apache.james.mailbox.inmemory.InMemoryMessageId; -import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager; import org.apache.james.mailbox.store.FakeAuthenticator; import org.apache.james.mailbox.store.FakeAuthorizator; import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; +import org.apache.james.mailbox.store.StoreMessageIdManager; +import org.apache.james.mailbox.store.event.DefaultDelegatingMailboxListener; +import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.model.impl.MessageParser; +import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver; +import org.apache.james.mailbox.store.quota.NoQuotaManager; import org.junit.Ignore; public class SimpleMessageSearchIndexTest extends AbstractMessageSearchIndexTest { @@ -43,6 +47,7 @@ public class SimpleMessageSearchIndexTest extends AbstractMessageSearchIndexTest protected void initializeMailboxManager() throws Exception { MailboxSessionMapperFactory mapperFactory = new InMemoryMailboxSessionMapperFactory(); messageSearchIndex = new SimpleMessageSearchIndex(mapperFactory, mapperFactory, new PDFTextExtractor()); + InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory(); storeMailboxManager = new InMemoryMailboxManager( mapperFactory, new FakeAuthenticator(), @@ -51,8 +56,17 @@ public class SimpleMessageSearchIndexTest extends AbstractMessageSearchIndexTest new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), new MessageParser(), - new InMemoryMessageId.Factory()); - messageIdManager = new InMemoryMessageIdManager(storeMailboxManager); + messageIdFactory); + DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener(); + MailboxEventDispatcher mailboxEventDispatcher = new MailboxEventDispatcher(new DefaultDelegatingMailboxListener()); + storeMailboxManager.setDelegatingMailboxListener(delegatingListener); + + messageIdManager = new StoreMessageIdManager( + storeMailboxManager.getMapperFactory(), + mailboxEventDispatcher, + messageIdFactory, + new NoQuotaManager(), + new DefaultQuotaRootResolver(mapperFactory)); storeMailboxManager.setMessageSearchIndex(messageSearchIndex); storeMailboxManager.init(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java index a786be9..301190c 100644 --- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java +++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/mailbox/MemoryMailboxModule.java @@ -39,7 +39,6 @@ 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.inmemory.InMemoryMessageId; -import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager; import org.apache.james.mailbox.inmemory.JsoupTextExtractor; import org.apache.james.mailbox.inmemory.mail.InMemoryModSeqProvider; import org.apache.james.mailbox.inmemory.mail.InMemoryUidProvider; @@ -53,6 +52,7 @@ import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.MailboxSessionMapperFactory; import org.apache.james.mailbox.store.StoreAttachmentManager; import org.apache.james.mailbox.store.StoreBlobManager; +import org.apache.james.mailbox.store.StoreMessageIdManager; import org.apache.james.mailbox.store.StoreSubscriptionManager; import org.apache.james.mailbox.store.event.MailboxEventDispatcher; import org.apache.james.mailbox.store.mail.AttachmentMapperFactory; @@ -98,7 +98,7 @@ public class MemoryMailboxModule extends AbstractModule { bind(Authenticator.class).to(UserRepositoryAuthenticator.class); bind(Authorizator.class).to(UserRepositoryAuthorizator.class); bind(MailboxManager.class).to(InMemoryMailboxManager.class); - bind(MessageIdManager.class).to(InMemoryMessageIdManager.class); + bind(MessageIdManager.class).to(StoreMessageIdManager.class); bind(MailboxACLResolver.class).to(UnionMailboxACLResolver.class); bind(GroupMembershipResolver.class).to(SimpleGroupMembershipResolver.class); bind(AttachmentManager.class).to(StoreAttachmentManager.class); @@ -118,7 +118,7 @@ public class MemoryMailboxModule extends AbstractModule { bind(UnionMailboxACLResolver.class).in(Scopes.SINGLETON); bind(SimpleGroupMembershipResolver.class).in(Scopes.SINGLETON); bind(InMemoryMessageId.Factory.class).in(Scopes.SINGLETON); - bind(InMemoryMessageIdManager.class).in(Scopes.SINGLETON); + bind(StoreMessageIdManager.class).in(Scopes.SINGLETON); bind(MailboxEventDispatcher.class).in(Scopes.SINGLETON); bind(StoreAttachmentManager.class).in(Scopes.SINGLETON); http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java index 36e4348..e79878b 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java @@ -48,13 +48,11 @@ import org.apache.james.jmap.utils.HtmlTextExtractor; import org.apache.james.jmap.utils.JsoupHtmlTextExtractor; import org.apache.james.mailbox.BlobManager; import org.apache.james.mailbox.FlagsBuilder; -import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.exception.MailboxException; -import org.apache.james.mailbox.inmemory.InMemoryMessageIdManager; import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources; import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.BlobId; @@ -62,6 +60,7 @@ import org.apache.james.mailbox.model.ComposedMessageId; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageId; +import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.metrics.logger.DefaultMetricFactory; import org.apache.james.util.mime.MessageContentExtractor; import org.assertj.core.api.Condition; @@ -119,7 +118,7 @@ public class GetMessagesMethodTest { private static final User ROBERT = new User("robert", "secret"); - private MailboxManager mailboxManager; + private StoreMailboxManager mailboxManager; private GetMessagesMethod testee; private MailboxSession session; @@ -453,7 +452,7 @@ public class GetMessagesMethodTest { + "HEADer2: Header2Content\r\n" + "Subject: message 1 subject\r\n\r\nmy message").getBytes(Charsets.UTF_8)); ComposedMessageId message1 = inbox.appendMessage(message1Content, now, session, false, null); - MessageIdManager messageIdManager = new InMemoryMessageIdManager(mailboxManager); + MailboxId customMailboxId = mailboxManager.getMailbox(customMailboxPath, session).getId(); messageIdManager.setInMailboxes(message1.getMessageId(), ImmutableList.of(message1.getMailboxId(), customMailboxId), http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java index ffaad17..7e5bff9 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java @@ -35,7 +35,6 @@ import javax.mail.Flags; import org.apache.james.jmap.DefaultMailboxes; import org.apache.james.jmap.exceptions.MailboxRoleNotFoundException; import org.apache.james.jmap.utils.SystemMailboxesProviderImpl; -import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageManager; @@ -51,6 +50,7 @@ import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.MessageResult; import org.apache.james.mailbox.model.MessageResultIterator; +import org.apache.james.mailbox.store.StoreMailboxManager; import org.apache.james.queue.api.MailQueue; import org.apache.james.queue.api.MailQueue.MailQueueItem; import org.apache.mailet.Mail; @@ -68,7 +68,7 @@ public class PostDequeueDecoratorTest { private static final MailboxPath OUTBOX_MAILBOX_PATH = MailboxPath.forUser(USERNAME, OUTBOX); private static final MailboxPath SENT_MAILBOX_PATH = MailboxPath.forUser(USERNAME, SENT); - private MailboxManager mailboxManager; + private StoreMailboxManager mailboxManager; private MailQueueItem mockedMailQueueItem; private Mail mail; private PostDequeueDecorator testee; http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/webadmin/webadmin-mailbox/pom.xml ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml b/server/protocols/webadmin/webadmin-mailbox/pom.xml index 96d5eee..6c543f8 100644 --- a/server/protocols/webadmin/webadmin-mailbox/pom.xml +++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml @@ -50,6 +50,12 @@ </dependency> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>apache-james-mailbox-memory</artifactId> + <scope>test</scope> + <type>test-jar</type> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>james-server-data-api</artifactId> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/7f0d94f5/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java index 943a159..1119083 100644 --- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java @@ -38,23 +38,16 @@ import java.util.Map; import org.apache.james.mailbox.MailboxManager; 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.exception.MailboxExistsException; import org.apache.james.mailbox.exception.MailboxNotFoundException; 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.inmemory.manager.InMemoryIntegrationResources; import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; -import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.search.MailboxQuery; -import org.apache.james.mailbox.store.FakeAuthorizator; -import org.apache.james.mailbox.store.JVMMailboxPathLocker; import org.apache.james.mailbox.store.SimpleMailboxMetaData; -import org.apache.james.mailbox.store.mail.model.DefaultMessageId; -import org.apache.james.mailbox.store.mail.model.impl.MessageParser; import org.apache.james.metrics.logger.DefaultMetricFactory; import org.apache.james.user.api.UsersRepository; import org.apache.james.webadmin.WebAdminServer; @@ -111,18 +104,9 @@ public class UserMailboxesRoutesTest { @Before public void setUp() throws Exception { - MessageId.Factory messageIdFactory = new DefaultMessageId.Factory(); - InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(new InMemoryMailboxSessionMapperFactory(), - (userid, passwd) -> true, - FakeAuthorizator.defaultReject(), - new JVMMailboxPathLocker(), - new UnionMailboxACLResolver(), - new SimpleGroupMembershipResolver(), - new MessageParser(), - messageIdFactory); - mailboxManager.init(); + InMemoryIntegrationResources inMemoryIntegrationResources = new InMemoryIntegrationResources(); - createServer(mailboxManager); + createServer(inMemoryIntegrationResources.createMailboxManager(new SimpleGroupMembershipResolver())); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org