You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2018/05/25 09:09:00 UTC
[3/7] james-project git commit: MAILBOX-337 Get ride of stored
leveled mocked tests
MAILBOX-337 Get ride of stored leveled mocked tests
We should rather play them directly on the memory implementation
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/75f1d70f
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/75f1d70f
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/75f1d70f
Branch: refs/heads/master
Commit: 75f1d70f0d7fd5b50d6458f24517db7375059152
Parents: b25ee7f
Author: benwa <bt...@linagora.com>
Authored: Thu May 24 15:14:24 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Fri May 25 11:07:39 2018 +0200
----------------------------------------------------------------------
.../CassandraMessageIdManagerTestSystem.java | 95 +-----
.../InMemoryMessageIdManagerTestSystem.java | 123 +------
.../manager/InMemoryIntegrationResources.java | 40 ++-
.../InMemoryMessageIdManagerSideEffectTest.java | 82 +++++
.../store/AbstractCombinationManagerTest.java | 15 +
.../AbstractMessageIdManagerSideEffectTest.java | 4 +
.../store/MessageIdManagerTestSystem.java | 84 ++++-
.../StoreMessageIdManagerSideEffectTest.java | 64 ----
.../store/StoreMessageIdManagerTestSystem.java | 115 -------
.../store/TestMailboxSessionMapperFactory.java | 327 -------------------
10 files changed, 208 insertions(+), 741 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index 7adc220..31eefc2 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -19,47 +19,25 @@
package org.apache.james.mailbox.cassandra;
-import java.nio.charset.StandardCharsets;
-import java.util.Date;
-
-import javax.mail.Flags;
-import javax.mail.util.SharedByteArrayInputStream;
-
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageIdManager;
-import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxACL;
-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.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
-import org.apache.james.mailbox.store.SimpleMessageMetaData;
import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
-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;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
-import com.google.common.base.Throwables;
-
-public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
-
- private static final byte[] MESSAGE_CONTENT = "subject: any\n\nbody".getBytes(StandardCharsets.UTF_8);
+public class CassandraMessageIdManagerTestSystem {
public static MessageIdManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {
CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
- return new CassandraMessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, dispatcher),
+ return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, dispatcher),
new CassandraMessageId.Factory(),
mapperFactory,
- CassandraTestSystemFixture.createMailboxManager(mapperFactory));
+ CassandraTestSystemFixture.createMailboxManager(mapperFactory)) {
+ };
}
public static MessageIdManagerTestSystem createTestingDataWithQuota(CassandraCluster cassandra, QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager) throws Exception {
@@ -70,73 +48,10 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
(StoreCurrentQuotaManager) currentQuotaManager,
mailboxManager.getQuotaRootResolver(), mailboxManager.getEventDispatcher(), quotaManager);
mailboxManager.addGlobalListener(listeningCurrentQuotaUpdater, mailboxManager.createSystemSession("System"));
- return new CassandraMessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, mailboxManager.getEventDispatcher()),
+ return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, mailboxManager.getEventDispatcher()),
new CassandraMessageId.Factory(),
mapperFactory,
mailboxManager);
}
- private final CassandraMessageId.Factory messageIdFactory;
- private final CassandraMailboxSessionMapperFactory mapperFactory;
- private final CassandraMailboxManager cassandraMailboxManager;
-
- public CassandraMessageIdManagerTestSystem(MessageIdManager messageIdManager, CassandraMessageId.Factory messageIdFactory, CassandraMailboxSessionMapperFactory mapperFactory, CassandraMailboxManager cassandraMailboxManager) {
- super(messageIdManager);
- this.messageIdFactory = messageIdFactory;
- this.mapperFactory = mapperFactory;
- this.cassandraMailboxManager = cassandraMailboxManager;
- }
-
- @Override
- public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
- cassandraMailboxManager.createMailbox(mailboxPath, session);
- return mapperFactory.getMailboxMapper(session).findMailboxByPath(mailboxPath);
- }
-
- @Override
- public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession mailboxSession) {
- try {
- CassandraMessageId messageId = messageIdFactory.generate();
- Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
- MailboxMessage message = createMessage(mailboxId, flags, messageId, uid);
- mapperFactory.getMessageMapper(mailboxSession).add(mailbox, message);
- cassandraMailboxManager.getEventDispatcher().added(mailboxSession, new SimpleMessageMetaData(message), mailbox);
- return messageId;
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- @Override
- public MessageId createNotUsedMessageId() {
- return messageIdFactory.generate();
- }
-
- @Override
- public void deleteMailbox(MailboxId mailboxId, MailboxSession mailboxSession) {
- try {
- Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
- cassandraMailboxManager.deleteMailbox(new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()), mailboxSession);
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
- }
-
- private static MailboxMessage createMessage(MailboxId mailboxId, Flags flags, MessageId messageId, MessageUid uid) {
- MailboxMessage mailboxMessage = new SimpleMailboxMessage(messageId, new Date(), MESSAGE_CONTENT.length, 1256,
- new SharedByteArrayInputStream(MESSAGE_CONTENT), flags, new PropertyBuilder(), mailboxId);
- mailboxMessage.setModSeq(CassandraTestSystemFixture.MOD_SEQ);
- mailboxMessage.setUid(uid);
- return mailboxMessage;
- }
-
- @Override
- public int getConstantMessageSize() {
- return MESSAGE_CONTENT.length;
- }
-
- @Override
- public void setACL(MailboxId mailboxId, MailboxACL mailboxACL, MailboxSession session) throws MailboxException {
- cassandraMailboxManager.setRights(mailboxId, mailboxACL, session);
- }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/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 7163e74..5447b59 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
@@ -18,130 +18,23 @@
****************************************************************/
package org.apache.james.mailbox.inmemory;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.Optional;
-
-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.inmemory.manager.InMemoryIntegrationResources;
-import org.apache.james.mailbox.model.MailboxACL;
-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;
-import org.apache.james.mime4j.dom.Message;
-import org.apache.james.mime4j.message.DefaultMessageWriter;
-
-import com.google.common.base.Throwables;
-public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
+public class InMemoryMessageIdManagerTestSystem {
- public static InMemoryMessageIdManagerTestSystem create() throws MailboxException {
+ public static MessageIdManagerTestSystem create() throws MailboxException {
InMemoryIntegrationResources inMemoryIntegrationResources = new InMemoryIntegrationResources();
- StoreMailboxManager mailboxManager = inMemoryIntegrationResources.createMailboxManager(new SimpleGroupMembershipResolver());
- return new InMemoryMessageIdManagerTestSystem(
- inMemoryIntegrationResources.createMessageIdManager(mailboxManager),
+ InMemoryIntegrationResources.Resources resources = inMemoryIntegrationResources.createResources(new SimpleGroupMembershipResolver());
+ StoreMailboxManager mailboxManager = resources.getMailboxManager();
+ return new MessageIdManagerTestSystem(
+ inMemoryIntegrationResources.createMessageIdManager(mailboxManager, resources.getMessageIdFactory()),
+ resources.getMessageIdFactory(),
+ resources.getMailboxManager().getMapperFactory(),
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;
-
- private final MailboxManager mailboxManager;
- private Optional<MessageId> lastMessageIdUsed;
- private final Message message;
-
- private InMemoryMessageIdManagerTestSystem(MessageIdManager messageIdManager, MailboxManager mailboxManager) {
- super(messageIdManager);
- this.mailboxManager = mailboxManager;
- this.lastMessageIdUsed = Optional.empty();
- try {
- this.message = Message.Builder.of()
- .setSubject("test")
- .setBody("testmail", StandardCharsets.UTF_8)
- .build();
- } catch (IOException e) {
- throw Throwables.propagate(e);
- }
- }
-
- @Override
- public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession mailboxSession) throws MailboxException {
- mailboxManager.createMailbox(mailboxPath, mailboxSession);
- MessageManager messageManager = mailboxManager.getMailbox(mailboxPath, mailboxSession);
- return new SimpleMailbox(mailboxPath, UID_VALIDITY, messageManager.getId());
- }
-
- @Override
- public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session) {
- try {
- MessageManager messageManager = mailboxManager.getMailbox(mailboxId, session);
- MessageId messageId = messageManager.appendMessage(MessageManager.AppendCommand
- .builder()
- .notRecent()
- .withFlags(flags)
- .build(message),
- session)
- .getMessageId();
- lastMessageIdUsed = Optional.of(messageId);
- return messageId;
- } catch (MailboxException | IOException e) {
- throw Throwables.propagate(e);
- }
- }
-
- @Override
- public MessageId createNotUsedMessageId() {
- return InMemoryMessageId.of(Long.valueOf(lastMessageIdUsed.orElse(FIRST_MESSAGE_ID).serialize()) + ONE_HUNDRED);
- }
-
- @Override
- public void deleteMailbox(MailboxId mailboxId, MailboxSession session) {
- try {
- Optional<MailboxMetaData> mailbox = retrieveMailbox(mailboxId, session);
- if (mailbox.isPresent()) {
- mailboxManager.deleteMailbox(mailbox.get().getPath(), session);
- }
- } catch (MailboxException e) {
- Throwables.propagate(e);
- }
- }
-
- private Optional<MailboxMetaData> retrieveMailbox(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
- MailboxQuery userMailboxesQuery = MailboxQuery.privateMailboxesBuilder(mailboxSession)
- .matchesAllMailboxNames()
- .build();
- return mailboxManager.search(userMailboxesQuery, mailboxSession)
- .stream()
- .filter(mailboxMetaData -> mailboxMetaData.getId().equals(mailboxId))
- .findFirst();
- }
-
- @Override
- public int getConstantMessageSize() {
- try {
- return DefaultMessageWriter.asBytes(message).length;
- } catch (IOException e) {
- throw Throwables.propagate(e);
- }
- }
-
- @Override
- public void setACL(MailboxId mailboxId, MailboxACL mailboxAcl, MailboxSession session) throws MailboxException {
- mailboxManager.setRights(mailboxId, mailboxAcl, session);
- }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/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 3b2014a..4b6c9a3 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
@@ -33,6 +33,7 @@ import org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager;
import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager;
import org.apache.james.mailbox.manager.IntegrationResources;
import org.apache.james.mailbox.manager.ManagerTestResources;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.quota.CurrentQuotaManager;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.QuotaManager;
@@ -66,14 +67,16 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
private final CurrentQuotaManager currentQuotaManager;
private final DefaultUserQuotaRootResolver quotaRootResolver;
private final StoreRightManager storeRightManager;
+ private final MessageId.Factory messageIdFactory;
- public Resources(InMemoryMailboxManager mailboxManager, MaxQuotaManager maxQuotaManager, QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager, DefaultUserQuotaRootResolver quotaRootResolver, StoreRightManager storeRightManager) {
+ public Resources(InMemoryMailboxManager mailboxManager, MaxQuotaManager maxQuotaManager, QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager, DefaultUserQuotaRootResolver quotaRootResolver, StoreRightManager storeRightManager, MessageId.Factory messageIdFactory) {
this.mailboxManager = mailboxManager;
this.maxQuotaManager = maxQuotaManager;
this.quotaManager = quotaManager;
this.currentQuotaManager = currentQuotaManager;
this.quotaRootResolver = quotaRootResolver;
this.storeRightManager = storeRightManager;
+ this.messageIdFactory = messageIdFactory;
}
public InMemoryMailboxManager getMailboxManager() {
@@ -99,6 +102,10 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
public StoreRightManager getStoreRightManager() {
return storeRightManager;
}
+
+ public MessageId.Factory getMessageIdFactory() {
+ return messageIdFactory;
+ }
}
private SimpleGroupMembershipResolver groupMembershipResolver;
@@ -131,7 +138,7 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
}
private Resources createMailboxManager(GroupMembershipResolver groupMembershipResolver,
- BiFunction<StoreRightManager, InMemoryMailboxSessionMapperFactory, StoreMailboxAnnotationManager> annotationManagerBiFunction) throws MailboxException {
+ BiFunction<StoreRightManager, InMemoryMailboxSessionMapperFactory, StoreMailboxAnnotationManager> annotationManagerBiFunction) throws MailboxException {
FakeAuthenticator fakeAuthenticator = new FakeAuthenticator();
fakeAuthenticator.addUser(ManagerTestResources.USER, ManagerTestResources.USER_PASS);
fakeAuthenticator.addUser(ManagerTestResources.OTHER_USER, ManagerTestResources.OTHER_USER_PASS);
@@ -139,7 +146,7 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
DefaultDelegatingMailboxListener delegatingListener = new DefaultDelegatingMailboxListener();
MailboxEventDispatcher mailboxEventDispatcher = new MailboxEventDispatcher(delegatingListener);
StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(),
- groupMembershipResolver, mailboxEventDispatcher);
+ groupMembershipResolver, mailboxEventDispatcher);
StoreMailboxAnnotationManager annotationManager = annotationManagerBiFunction
.apply(storeRightManager, mailboxSessionMapperFactory);
@@ -158,16 +165,17 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
MaxQuotaManager maxQuotaManager = createMaxQuotaManager();
try {
QuotaManager quotaManager = createQuotaManager(maxQuotaManager, manager);
- return new Resources(
- manager,
- maxQuotaManager,
- quotaManager,
- currentQuotaManager,
- quotaRootResolver,
- storeRightManager);
- } catch (Exception e) {
- throw Throwables.propagate(e);
- }
+ return new Resources(
+ manager,
+ maxQuotaManager,
+ quotaManager,
+ currentQuotaManager,
+ quotaRootResolver,
+ storeRightManager,
+ new InMemoryMessageId.Factory());
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
}
public StoreMailboxManager createMailboxManager(GroupMembershipResolver groupMembershipResolver,
@@ -195,11 +203,15 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
@Override
public MessageIdManager createMessageIdManager(StoreMailboxManager mailboxManager) {
+ return createMessageIdManager(mailboxManager, new InMemoryMessageId.Factory());
+ }
+
+ public MessageIdManager createMessageIdManager(StoreMailboxManager mailboxManager, MessageId.Factory factory) {
return new StoreMessageIdManager(
mailboxManager,
mailboxManager.getMapperFactory(),
mailboxManager.getEventDispatcher(),
- new InMemoryMessageId.Factory(),
+ factory,
mailboxManager.getQuotaManager(),
mailboxManager.getQuotaRootResolver());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
new file mode 100644
index 0000000..43295bd
--- /dev/null
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
@@ -0,0 +1,82 @@
+/****************************************************************
+ * 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.manager;
+
+import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
+import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+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.manager.ManagerTestResources;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.store.AbstractMessageIdManagerSideEffectTest;
+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.MessageIdManagerTestSystem;
+import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
+import org.apache.james.mailbox.store.StoreMessageIdManager;
+import org.apache.james.mailbox.store.StoreRightManager;
+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.DefaultUserQuotaRootResolver;
+import org.junit.Before;
+
+public class InMemoryMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @Override
+ protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, MailboxEventDispatcher dispatcher) {
+ InMemoryMailboxSessionMapperFactory mapperFactory = new InMemoryMailboxSessionMapperFactory();
+
+ FakeAuthenticator fakeAuthenticator = new FakeAuthenticator();
+ fakeAuthenticator.addUser(ManagerTestResources.USER, ManagerTestResources.USER_PASS);
+ fakeAuthenticator.addUser(ManagerTestResources.OTHER_USER, ManagerTestResources.OTHER_USER_PASS);
+ FakeAuthorizator fakeAuthorizator = FakeAuthorizator.defaultReject();
+
+ StoreRightManager rightManager = new StoreRightManager(mapperFactory, new UnionMailboxACLResolver(), new SimpleGroupMembershipResolver(), dispatcher);
+ JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
+ InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
+ InMemoryMailboxManager mailboxManager = new InMemoryMailboxManager(mapperFactory,
+ fakeAuthenticator,
+ fakeAuthorizator,
+ locker,
+ new MessageParser(),
+ messageIdFactory,
+ dispatcher,
+ new DefaultDelegatingMailboxListener(),
+ new StoreMailboxAnnotationManager(mapperFactory, rightManager),
+ rightManager);
+ StoreMessageIdManager messageIdManager = new StoreMessageIdManager(
+ mailboxManager,
+ mapperFactory,
+ dispatcher,
+ messageIdFactory,
+ quotaManager,
+ new DefaultUserQuotaRootResolver(mapperFactory));
+ return new MessageIdManagerTestSystem(messageIdManager, messageIdFactory, mapperFactory, mailboxManager);
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
index 4506b6a..ac11def 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
@@ -515,6 +515,21 @@ public abstract class AbstractCombinationManagerTest {
assertThat(messageManager1.search(searchQuery, session)).isEmpty();
}
+ @Test
+ public void getUidsShouldInteractWellWithDeletes() throws Exception {
+ MessageId messageId1 = messageManager1
+ .appendMessage(MessageManager.AppendCommand.from(mailContent), session)
+ .getMessageId();
+ MessageId messageId2 = messageManager1
+ .appendMessage(MessageManager.AppendCommand.from(mailContent), session)
+ .getMessageId();
+
+ messageIdManager.delete(ImmutableList.of(messageId1, messageId2), session);
+
+ SearchQuery searchQuery = new SearchQuery(SearchQuery.all());
+ assertThat(messageManager1.search(searchQuery, session)).isEmpty();
+ }
+
private Predicate<MessageResult> messageInMailbox2() {
return messageResult -> messageResult.getMailboxId().equals(mailbox2.getMailboxId());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 92431a9..3f38a6f 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -290,6 +290,8 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
givenUnlimitedQuota();
MessageId messageId = testingData.createNotUsedMessageId();
+ reset(dispatcher);
+
messageIdManager.delete(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
verifyNoMoreInteractions(dispatcher);
@@ -299,6 +301,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
public void setFlagsShouldNotDispatchEventWhenMessageDoesNotExist() throws Exception {
givenUnlimitedQuota();
MessageId messageId = testingData.createNotUsedMessageId();
+ reset(dispatcher);
messageIdManager.setFlags(FLAGS, FlagsUpdateMode.ADD, messageId, ImmutableList.of(mailbox2.getMailboxId()), session);
@@ -309,6 +312,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
public void setInMailboxesShouldNotDispatchEventWhenMessageDoesNotExist() throws Exception {
givenUnlimitedQuota();
MessageId messageId = testingData.createNotUsedMessageId();
+ reset(dispatcher);
messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
index c04aed9..21de9e1 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
@@ -19,7 +19,11 @@
package org.apache.james.mailbox.store;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+
import javax.mail.Flags;
+import javax.mail.util.SharedByteArrayInputStream;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageIdManager;
@@ -30,20 +34,18 @@ 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.mail.model.Mailbox;
+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;
-public abstract class MessageIdManagerTestSystem {
+public class MessageIdManagerTestSystem {
+ private static final byte[] MESSAGE_CONTENT = "subject: any\n\nbody".getBytes(StandardCharsets.UTF_8);
+ public static final int MOD_SEQ = 452;
private final MessageIdManager messageIdManager;
-
- public MessageIdManagerTestSystem(MessageIdManager messageIdManager) {
- this.messageIdManager = messageIdManager;
- }
-
- public MessageIdManager getMessageIdManager() {
- return messageIdManager;
- }
-
- public abstract Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException;
+ private final MessageId.Factory messageIdFactory;
+ private final MailboxSessionMapperFactory mapperFactory;
+ private final StoreMailboxManager mailboxManager;
/**
* Should take care of find returning the MailboxMessage
@@ -55,13 +57,63 @@ public abstract class MessageIdManagerTestSystem {
* @param flags
* @return the id of persisted message
*/
- public abstract MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session);
- public abstract MessageId createNotUsedMessageId();
+ public MessageIdManagerTestSystem(MessageIdManager messageIdManager, MessageId.Factory messageIdFactory, MailboxSessionMapperFactory mapperFactory, StoreMailboxManager mailboxManager) {
+ this.messageIdManager = messageIdManager;
+ this.messageIdFactory = messageIdFactory;
+ this.mapperFactory = mapperFactory;
+ this.mailboxManager = mailboxManager;
+ }
- public abstract void deleteMailbox(MailboxId mailboxId, MailboxSession session);
- public abstract int getConstantMessageSize();
+ public MessageIdManager getMessageIdManager() {
+ return messageIdManager;
+ }
- public abstract void setACL(MailboxId mailboxId, MailboxACL mailboxACL, MailboxSession session) throws MailboxException;
+ public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
+ mailboxManager.createMailbox(mailboxPath, session);
+ return mapperFactory.getMailboxMapper(session).findMailboxByPath(mailboxPath);
+ }
+
+ public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession mailboxSession) {
+ try {
+ MessageId messageId = messageIdFactory.generate();
+ Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
+ MailboxMessage message = createMessage(mailboxId, flags, messageId, uid);
+ mapperFactory.getMessageMapper(mailboxSession).add(mailbox, message);
+ mailboxManager.getEventDispatcher().added(mailboxSession, new SimpleMessageMetaData(message), mailbox);
+ return messageId;
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ public MessageId createNotUsedMessageId() {
+ return messageIdFactory.generate();
+ }
+
+ public void deleteMailbox(MailboxId mailboxId, MailboxSession mailboxSession) {
+ try {
+ Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
+ mailboxManager.deleteMailbox(new MailboxPath(mailbox.getNamespace(), mailbox.getUser(), mailbox.getName()), mailboxSession);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private static MailboxMessage createMessage(MailboxId mailboxId, Flags flags, MessageId messageId, MessageUid uid) {
+ MailboxMessage mailboxMessage = new SimpleMailboxMessage(messageId, new Date(), MESSAGE_CONTENT.length, 1256,
+ new SharedByteArrayInputStream(MESSAGE_CONTENT), flags, new PropertyBuilder(), mailboxId);
+ mailboxMessage.setModSeq(MOD_SEQ);
+ mailboxMessage.setUid(uid);
+ return mailboxMessage;
+ }
+
+ public int getConstantMessageSize() {
+ return MESSAGE_CONTENT.length;
+ }
+
+ public void setACL(MailboxId mailboxId, MailboxACL mailboxACL, MailboxSession session) throws MailboxException {
+ mailboxManager.setRights(mailboxId, mailboxACL, session);
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
deleted file mode 100644
index 1006292..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailbox.store;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageIdManager;
-import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MessageId;
-import org.apache.james.mailbox.model.TestMessageId;
-import org.apache.james.mailbox.quota.QuotaManager;
-import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
-import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
-import org.junit.Before;
-
-public class StoreMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
-
- @Override
- @Before
- public void setUp() throws Exception {
- super.setUp();
- }
-
- @Override
- protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {
-
- TestMailboxSessionMapperFactory testMailboxSessionMapperFactory = new TestMailboxSessionMapperFactory();
- MessageId.Factory messageIdFactory = new TestMessageId.Factory();
- MailboxManager mailboxManager = mock(MailboxManager.class);
- when(mailboxManager.myRights(any(MailboxId.class), any(MailboxSession.class)))
- .thenReturn(MailboxACL.FULL_RIGHTS);
-
- MessageIdManager messageIdManager = new StoreMessageIdManager(mailboxManager,
- testMailboxSessionMapperFactory, dispatcher, messageIdFactory,
- quotaManager, new DefaultUserQuotaRootResolver(testMailboxSessionMapperFactory));
-
- return new StoreMessageIdManagerTestSystem(messageIdManager,
- messageIdFactory,
- testMailboxSessionMapperFactory);
- }
-
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
deleted file mode 100644
index 266722b..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailbox.store;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.time.Instant;
-import java.util.Date;
-
-import javax.mail.Flags;
-
-import org.apache.commons.lang3.NotImplementedException;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageIdManager;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxACL;
-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.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-
-import com.google.common.base.Throwables;
-
-public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
- private static final long MOD_SEQ = 18;
- private static final ByteArrayInputStream ARRAY_INPUT_STREAM = new ByteArrayInputStream("".getBytes());
-
- private final MessageId.Factory messageIdFactory;
- private final TestMailboxSessionMapperFactory mapperFactory;
- private final MailboxSession defaultMailboxSession;
-
- public StoreMessageIdManagerTestSystem(MessageIdManager messageIdManager, MessageId.Factory messageIdFactory, TestMailboxSessionMapperFactory mapperFactory) {
- super(messageIdManager);
-
- this.messageIdFactory = messageIdFactory;
- this.mapperFactory = mapperFactory;
- this.defaultMailboxSession = new MockMailboxSession("user");
- }
-
- @Override
- public Mailbox createMailbox(MailboxPath mailboxPath, MailboxSession session) throws MailboxException {
- return mapperFactory.createMailboxMapper(session).findMailboxByPath(mailboxPath);
- }
-
- @Override
- public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession session) {
- MessageId messageId = messageIdFactory.generate();
- try {
- mapperFactory.createMessageIdMapper(defaultMailboxSession)
- .save(createMessage(mailboxId, flags, messageId, uid));
- return messageId;
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
- }
-
- @Override
- public void deleteMailbox(MailboxId mailboxId, MailboxSession mailboxSession) {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public MessageId createNotUsedMessageId() {
- return messageIdFactory.generate();
- }
-
- private MailboxMessage createMessage(MailboxId mailboxId, Flags flags, MessageId messageId, MessageUid uid) {
- MailboxMessage mailboxMessage = mock(MailboxMessage.class);
- when(mailboxMessage.getMessageId()).thenReturn(messageId);
- when(mailboxMessage.getUid()).thenReturn(uid);
- when(mailboxMessage.getModSeq()).thenReturn(MOD_SEQ);
- when(mailboxMessage.getMailboxId()).thenReturn(mailboxId);
- when(mailboxMessage.getInternalDate()).thenReturn(Date.from(Instant.parse("2007-12-03T10:15:30.00Z")));
- try {
- when(mailboxMessage.getFullContent()).thenReturn(ARRAY_INPUT_STREAM);
- } catch (IOException e) {
- throw Throwables.propagate(e);
- }
- when(mailboxMessage.createFlags()).thenReturn(flags);
- return mailboxMessage;
- }
-
- @Override
- public int getConstantMessageSize() {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public void setACL(MailboxId mailboxId, MailboxACL mailboxACL, MailboxSession session) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-}
http://git-wip-us.apache.org/repos/asf/james-project/blob/75f1d70f/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
deleted file mode 100644
index f356d94..0000000
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/TestMailboxSessionMapperFactory.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one *
- * or more contributor license agreements. See the NOTICE file *
- * distributed with this work for additional information *
- * regarding copyright ownership. The ASF licenses this file *
- * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance *
- * with the License. You may obtain a copy of the License at *
- * *
- * http://www.apache.org/licenses/LICENSE-2.0 *
- * *
- * Unless required by applicable law or agreed to in writing, *
- * software distributed under the License is distributed on an *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the *
- * specific language governing permissions and limitations *
- * under the License. *
- ****************************************************************/
-
-package org.apache.james.mailbox.store;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
-import javax.mail.Flags;
-
-import org.apache.commons.lang3.NotImplementedException;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageManager;
-import org.apache.james.mailbox.MessageUid;
-import org.apache.james.mailbox.acl.ACLDiff;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.exception.MailboxNotFoundException;
-import org.apache.james.mailbox.exception.SubscriptionException;
-import org.apache.james.mailbox.fixture.MailboxFixture;
-import org.apache.james.mailbox.model.MailboxACL;
-import org.apache.james.mailbox.model.MailboxACL.Right;
-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.TestId;
-import org.apache.james.mailbox.model.UpdatedFlags;
-import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.MailboxMapper;
-import org.apache.james.mailbox.store.mail.MessageIdMapper;
-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.Mailbox;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.apache.james.mailbox.store.user.SubscriptionMapper;
-
-import com.github.steveash.guavate.Guavate;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Throwables;
-import com.google.common.collect.ImmutableMap;
-
-public class TestMailboxSessionMapperFactory extends MailboxSessionMapperFactory {
- private static final long MOD_SEQ = 18;
- private static final MessageUid UID = MessageUid.of(28);
- private static final long UID_VALIDITY = 42;
-
- private final SimpleMailbox mailbox1;
- private final SimpleMailbox mailbox2;
- private final SimpleMailbox mailbox3;
- private final SimpleMailbox mailbox4;
-
- private final List<MailboxMessage> messages = new ArrayList<>();
- private final MailboxMapper mailboxMapper;
- private final MessageIdMapper messageIdMapper;
-
- public TestMailboxSessionMapperFactory() {
- mailbox1 = new SimpleMailbox(MailboxFixture.INBOX_ALICE, UID_VALIDITY, TestId.of(36));
- mailbox2 = new SimpleMailbox(MailboxFixture.OUTBOX_ALICE, UID_VALIDITY, TestId.of(46));
- mailbox3 = new SimpleMailbox(MailboxFixture.SENT_ALICE, UID_VALIDITY, TestId.of(56));
- mailbox4 = new SimpleMailbox(MailboxFixture.INBOX_BOB, UID_VALIDITY, TestId.of(66));
-
- mailboxMapper = new MailboxMapper() {
- @Override
- public MailboxId save(Mailbox mailbox) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public void delete(Mailbox mailbox) throws MailboxException {
- throw new NotImplementedException("Not implemented");
-
- }
-
- @Override
- public Mailbox findMailboxByPath(MailboxPath mailboxName) throws MailboxException {
- if (mailboxName.equals(MailboxFixture.INBOX_ALICE)) {
- return mailbox1;
- }
- if (mailboxName.equals(MailboxFixture.OUTBOX_ALICE)) {
- return mailbox2;
- }
- if (mailboxName.equals(MailboxFixture.SENT_ALICE)) {
- return mailbox3;
- }
- throw new IllegalArgumentException("Unknown mailbox : " + mailboxName + " must be one of "
- + MailboxFixture.INBOX_ALICE + " "
- + MailboxFixture.OUTBOX_ALICE + " "
- + MailboxFixture.SENT_ALICE);
- }
-
- @Override
- public Mailbox findMailboxById(MailboxId mailboxId) throws MailboxException {
- if (mailboxId.equals(mailbox1.getMailboxId())) {
- return mailbox1;
- }
- if (mailboxId.equals(mailbox2.getMailboxId())) {
- return mailbox2;
- }
- if (mailboxId.equals(mailbox3.getMailboxId())) {
- return mailbox3;
- }
- throw new IllegalArgumentException("Unknown mailboxId : " + mailboxId + " must be one of " + mailbox1.getMailboxId() + " " + mailbox2.getMailboxId() + " " + mailbox3.getMailboxId());
- }
-
- @Override
- public List<Mailbox> findMailboxWithPathLike(MailboxPath mailboxPath) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public boolean hasChildren(Mailbox mailbox, char delimiter) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public ACLDiff updateACL(Mailbox mailbox, MailboxACL.ACLCommand mailboxACLCommand) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public ACLDiff setACL(Mailbox mailbox, MailboxACL mailboxACL) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public List<Mailbox> list() throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public void endRequest() {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public <T> T execute(Transaction<T> transaction) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public List<Mailbox> findNonPersonalMailboxes(String userName, Right right) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
- };
- messageIdMapper = new MessageIdMapper() {
-
- @Override
- public List<MailboxMessage> find(Collection<MessageId> messageIds, MessageMapper.FetchType fetchType) {
- return messages.stream()
- .filter(withMessageIdOneOf(messageIds))
- .collect(Guavate.toImmutableList());
- }
-
- @Override
- public List<MailboxId> findMailboxes(MessageId messageId) {
- return messages.stream()
- .filter(withMessageId(messageId))
- .map(MailboxMessage::getMailboxId)
- .collect(Guavate.toImmutableList());
- }
-
- @Override
- public void save(MailboxMessage mailboxMessage) throws MailboxException {
- messages.add(mailboxMessage);
- }
-
- @Override
- public void copyInMailbox(MailboxMessage mailboxMessage) throws MailboxNotFoundException, MailboxException {
- messages.add(mailboxMessage);
- }
-
- @Override
- public void delete(MessageId messageId) {
- messages.removeAll(
- messages.stream()
- .filter(withMessageId(messageId))
- .collect(Guavate.toImmutableList()));
- }
-
- @Override
- public void delete(MessageId messageId, Collection<MailboxId> mailboxIds) {
- messages.removeAll(
- messages.stream()
- .filter(withMessageId(messageId))
- .filter(inMailboxes(mailboxIds))
- .collect(Guavate.toImmutableList()));
- }
-
- @Override
- public Map<MailboxId, UpdatedFlags> setFlags(MessageId messageId, List<MailboxId> mailboxIds, Flags newState, MessageManager.FlagsUpdateMode updateMode) throws MailboxException {
- List<Map.Entry<MailboxId, UpdatedFlags>> entries = messages.stream()
- .filter(withMessageId(messageId))
- .filter(inMailboxes(mailboxIds))
- .map(toMapEntryOfUpdatedFlags(newState, updateMode))
- .filter(isChanged())
- .collect(Guavate.toImmutableList());
- ImmutableMap.Builder<MailboxId, UpdatedFlags> builder = ImmutableMap.builder();
- for (Map.Entry<MailboxId, UpdatedFlags> entry : entries) {
- builder.put(entry);
- }
- return builder.build();
- }
- };
- }
-
- public SimpleMailbox getMailbox1() {
- return mailbox1;
- }
-
- public SimpleMailbox getMailbox2() {
- return mailbox2;
- }
-
- public SimpleMailbox getMailbox3() {
- return mailbox3;
- }
-
- public SimpleMailbox getMailbox4() {
- return mailbox4;
- }
-
- @Override
- public UidProvider getUidProvider() {
- UidProvider uidProvider = mock(UidProvider.class);
- try {
- when(uidProvider.nextUid(any(MailboxSession.class), any(MailboxId.class))).thenReturn(UID);
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
- return uidProvider;
- }
-
- @Override
- public ModSeqProvider getModSeqProvider() {
- ModSeqProvider modSeqProvider = mock(ModSeqProvider.class);
- try {
- when(modSeqProvider.nextModSeq(any(MailboxSession.class), any(MailboxId.class))).thenReturn(MOD_SEQ);
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
- return modSeqProvider;
- }
-
- @Override
- public AnnotationMapper createAnnotationMapper(MailboxSession session) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public MessageMapper createMessageMapper(MailboxSession session) throws MailboxException {
- throw new NotImplementedException("Not implemented");
- }
-
- @Override
- public MailboxMapper createMailboxMapper(MailboxSession session) throws MailboxException {
- return mailboxMapper;
- }
-
- @Override
- public MessageIdMapper createMessageIdMapper(MailboxSession session) throws MailboxException {
- return messageIdMapper;
- }
-
- @Override
- public SubscriptionMapper createSubscriptionMapper(MailboxSession session) throws SubscriptionException {
- throw new NotImplementedException("Not implemented");
- }
-
- public void clean() {
- messages.clear();
- }
-
- private Predicate<MailboxMessage> withMessageIdOneOf(Collection<MessageId> messageIds) {
- return mailboxMessage -> messageIds.contains(mailboxMessage.getMessageId());
- }
-
- private Predicate<MailboxMessage> inMailboxes(Collection<MailboxId> mailboxIds) {
- return mailboxMessage -> mailboxIds.contains(mailboxMessage.getMailboxId());
- }
-
- private Predicate<MailboxMessage> withMessageId(MessageId messageId) {
- return mailboxMessage -> mailboxMessage.getMessageId().equals(messageId);
- }
-
- private Predicate<Map.Entry<MailboxId, UpdatedFlags>> isChanged() {
- return entry -> entry.getValue().flagsChanged();
- }
-
- private Function<MailboxMessage, Map.Entry<MailboxId, UpdatedFlags>> toMapEntryOfUpdatedFlags(Flags newState, MessageManager.FlagsUpdateMode updateMode) {
- return mailboxMessage -> {
- Preconditions.checkState(updateMode.equals(MessageManager.FlagsUpdateMode.ADD));
- return new AbstractMap.SimpleEntry<>(mailboxMessage.getMailboxId(),
- UpdatedFlags.builder()
- .uid(mailboxMessage.getUid())
- .modSeq(mailboxMessage.getModSeq())
- .newFlags(newState)
- .oldFlags(mailboxMessage.createFlags())
- .build());
- };
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org