JAMES-2616 replace getSession() in SpamAssassinListener
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/508d544f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/508d544f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/508d544f Branch: refs/heads/master Commit: 508d544ffb06f06157afb6b6edef76785e91554e Parents: 7a79969 Author: tran tien duc <[email protected]> Authored: Fri Nov 30 11:58:12 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Fri Dec 7 07:52:51 2018 +0700 ---------------------------------------------------------------------- .../james/mailbox/SystemMailboxesProvider.java | 7 ++++--- .../mailbox/spamassassin/SpamAssassinListener.java | 15 ++++++++------- .../spamassassin/SpamAssassinListenerTest.java | 7 ++++++- .../mailbox/store/SystemMailboxesProviderImpl.java | 11 +++++++---- .../store/SystemMailboxesProviderImplTest.java | 6 ++++-- .../apache/james/jmap/methods/SendMDNProcessor.java | 2 +- .../jmap/methods/SetMessagesCreationProcessor.java | 2 +- .../jmap/methods/SetMessagesUpdateProcessor.java | 4 ++-- .../apache/james/jmap/send/PostDequeueDecorator.java | 4 ++-- .../methods/SetMessagesCreationProcessorTest.java | 3 ++- 10 files changed, 37 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/mailbox/api/src/main/java/org/apache/james/mailbox/SystemMailboxesProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/SystemMailboxesProvider.java b/mailbox/api/src/main/java/org/apache/james/mailbox/SystemMailboxesProvider.java index 2b2dd9f..f593aad 100644 --- a/mailbox/api/src/main/java/org/apache/james/mailbox/SystemMailboxesProvider.java +++ b/mailbox/api/src/main/java/org/apache/james/mailbox/SystemMailboxesProvider.java @@ -21,14 +21,15 @@ package org.apache.james.mailbox; import java.util.stream.Stream; +import org.apache.james.core.User; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.MailboxRoleNotFoundException; public interface SystemMailboxesProvider { - Stream<MessageManager> getMailboxByRole(Role aRole, MailboxSession session) throws MailboxException; + Stream<MessageManager> getMailboxByRole(Role aRole, User user) throws MailboxException; - default MessageManager findMailbox(Role role, MailboxSession session) throws MailboxException { - return getMailboxByRole(role, session).findAny() + default MessageManager findMailbox(Role role, User user) throws MailboxException { + return getMailboxByRole(role, user).findAny() .orElseThrow(() -> new MailboxRoleNotFoundException(role)); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java index 04fd6c8..9bf3657 100644 --- a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java +++ b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java @@ -68,16 +68,17 @@ public class SpamAssassinListener implements SpamEventListener { @Override public void event(Event event) { + String username = event.getUser().asString(); if (event instanceof MessageMoveEvent) { MessageMoveEvent messageMoveEvent = (MessageMoveEvent) event; if (isMessageMovedToSpamMailbox(messageMoveEvent)) { LOGGER.debug("Spam event detected"); ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); - spamAssassin.learnSpam(messages, messageMoveEvent.getSession().getUser().getUserName()); + spamAssassin.learnSpam(messages, username); } if (isMessageMovedOutOfSpamMailbox(messageMoveEvent)) { ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); - spamAssassin.learnHam(messages, messageMoveEvent.getSession().getUser().getUserName()); + spamAssassin.learnHam(messages, username); } } if (event instanceof EventFactory.AddedImpl) { @@ -88,14 +89,14 @@ public class SpamAssassinListener implements SpamEventListener { .stream() .map(Throwing.function(MailboxMessage::getFullContent)) .collect(Guavate.toImmutableList()); - spamAssassin.learnHam(contents, addedEvent.getSession().getUser().getUserName()); + spamAssassin.learnHam(contents, username); } } } private boolean isAppendedToInbox(EventFactory.AddedImpl addedEvent) { try { - return systemMailboxesProvider.findMailbox(Role.INBOX, addedEvent.getSession()) + return systemMailboxesProvider.findMailbox(Role.INBOX, addedEvent.getUser()) .getId().equals(addedEvent.getMailboxId()); } catch (MailboxException e) { LOGGER.warn("Could not resolve Inbox mailbox", e); @@ -114,7 +115,7 @@ public class SpamAssassinListener implements SpamEventListener { @VisibleForTesting boolean isMessageMovedToSpamMailbox(MessageMoveEvent event) { try { - MailboxId spamMailboxId = systemMailboxesProvider.findMailbox(Role.SPAM, event.getSession()).getId(); + MailboxId spamMailboxId = systemMailboxesProvider.findMailbox(Role.SPAM, event.getUser()).getId(); return event.getMessageMoves().addedMailboxIds().contains(spamMailboxId); } catch (MailboxException e) { @@ -126,8 +127,8 @@ public class SpamAssassinListener implements SpamEventListener { @VisibleForTesting boolean isMessageMovedOutOfSpamMailbox(MessageMoveEvent event) { try { - MailboxId spamMailboxId = systemMailboxesProvider.findMailbox(Role.SPAM, event.getSession()).getId(); - MailboxId trashMailboxId = systemMailboxesProvider.findMailbox(Role.TRASH, event.getSession()).getId(); + MailboxId spamMailboxId = systemMailboxesProvider.findMailbox(Role.SPAM, event.getUser()).getId(); + MailboxId trashMailboxId = systemMailboxesProvider.findMailbox(Role.TRASH, event.getUser()).getId(); return event.getMessageMoves().removedMailboxIds().contains(spamMailboxId) && !event.getMessageMoves().addedMailboxIds().contains(trashMailboxId); http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java index 37d0162..d1ba383 100644 --- a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java +++ b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java @@ -21,8 +21,10 @@ package org.apache.james.mailbox.spamassassin; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import static org.mockito.Mockito.when; import java.nio.charset.StandardCharsets; import java.util.Date; @@ -61,6 +63,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSortedMap; public class SpamAssassinListenerTest { + public static final String USER = "user"; private static final MockMailboxSession MAILBOX_SESSION = new MockMailboxSession(USER); private static final int UID_VALIDITY = 43; @@ -78,8 +81,10 @@ public class SpamAssassinListenerTest { @Before public void setup() throws Exception { - StoreMailboxManager mailboxManager = new InMemoryIntegrationResources().createMailboxManager(new SimpleGroupMembershipResolver()); + StoreMailboxManager mailboxManager = spy(new InMemoryIntegrationResources().createMailboxManager(new SimpleGroupMembershipResolver())); SystemMailboxesProviderImpl systemMailboxesProvider = new SystemMailboxesProviderImpl(mailboxManager); + when(mailboxManager.createSystemSession(USER)) + .thenReturn(MAILBOX_SESSION); spamAssassin = mock(SpamAssassin.class); MailboxSessionMapperFactory mapperFactory = mailboxManager.getMapperFactory(); http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/mailbox/store/src/main/java/org/apache/james/mailbox/store/SystemMailboxesProviderImpl.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SystemMailboxesProviderImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SystemMailboxesProviderImpl.java index 0045d70..977a63a 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SystemMailboxesProviderImpl.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SystemMailboxesProviderImpl.java @@ -23,6 +23,7 @@ import java.util.stream.Stream; import javax.inject.Inject; +import org.apache.james.core.User; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; @@ -50,12 +51,13 @@ public class SystemMailboxesProviderImpl implements SystemMailboxesProvider { } @Override - public Stream<MessageManager> getMailboxByRole(Role aRole, MailboxSession session) throws MailboxException { - MailboxPath mailboxPath = MailboxPath.forUser(session.getUser().getUserName(), aRole.getDefaultMailbox()); + public Stream<MessageManager> getMailboxByRole(Role aRole, User user) throws MailboxException { + MailboxSession session = mailboxManager.createSystemSession(user.asString()); + MailboxPath mailboxPath = MailboxPath.forUser(user.asString(), aRole.getDefaultMailbox()); try { return Stream.of(mailboxManager.getMailbox(mailboxPath, session)); } catch (MailboxNotFoundException e) { - return searchMessageManagerByMailboxRole(aRole, session); + return searchMessageManagerByMailboxRole(aRole, user); } } @@ -65,7 +67,8 @@ public class SystemMailboxesProviderImpl implements SystemMailboxesProvider { .orElse(false); } - private Stream<MessageManager> searchMessageManagerByMailboxRole(Role aRole, MailboxSession session) throws MailboxException { + private Stream<MessageManager> searchMessageManagerByMailboxRole(Role aRole, User user) throws MailboxException { + MailboxSession session = mailboxManager.createSystemSession(user.asString()); ThrowingFunction<MailboxPath, MessageManager> loadMailbox = path -> mailboxManager.getMailbox(path, session); MailboxQuery mailboxQuery = MailboxQuery.privateMailboxesBuilder(session) .expression(new PrefixedWildcard(aRole.getDefaultMailbox())) http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/mailbox/store/src/test/java/org/apache/james/mailbox/store/SystemMailboxesProviderImplTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/SystemMailboxesProviderImplTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/SystemMailboxesProviderImplTest.java index f100a27..0041f07 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/SystemMailboxesProviderImplTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/SystemMailboxesProviderImplTest.java @@ -58,16 +58,18 @@ public class SystemMailboxesProviderImplTest { @Test public void getMailboxByRoleShouldReturnEmptyWhenNoMailbox() throws Exception { + when(mailboxManager.createSystemSession(MailboxFixture.ALICE)).thenReturn(mailboxSession); when(mailboxManager.getMailbox(eq(MailboxFixture.INBOX_ALICE), eq(mailboxSession))).thenThrow(MailboxNotFoundException.class); - assertThat(systemMailboxProvider.getMailboxByRole(Role.INBOX, mailboxSession)).isEmpty(); + assertThat(systemMailboxProvider.getMailboxByRole(Role.INBOX, mailboxSession.getUser().getCoreUser())).isEmpty(); } @Test public void getMailboxByRoleShouldReturnMailboxByRole() throws Exception { + when(mailboxManager.createSystemSession(MailboxFixture.ALICE)).thenReturn(mailboxSession); when(mailboxManager.getMailbox(eq(MailboxFixture.INBOX_ALICE), eq(mailboxSession))).thenReturn(inboxMessageManager); - assertThat(systemMailboxProvider.getMailboxByRole(Role.INBOX, mailboxSession)) + assertThat(systemMailboxProvider.getMailboxByRole(Role.INBOX, mailboxSession.getUser().getCoreUser())) .hasSize(1) .containsOnly(inboxMessageManager); } http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SendMDNProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SendMDNProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SendMDNProcessor.java index 7f71259..086c7dd 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SendMDNProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SendMDNProcessor.java @@ -189,7 +189,7 @@ public class SendMDNProcessor implements SetMessagesProcessor { private MessageManager getOutbox(MailboxSession mailboxSession) throws MailboxException { - return systemMailboxesProvider.getMailboxByRole(Role.OUTBOX, mailboxSession) + return systemMailboxesProvider.getMailboxByRole(Role.OUTBOX, mailboxSession.getUser().getCoreUser()) .findAny() .orElseThrow(() -> new IllegalStateException("User don't have an Outbox")); } http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java index f4f30ef..dc135e6 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesCreationProcessor.java @@ -309,7 +309,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor { } private Optional<MessageManager> getMailboxWithRole(MailboxSession mailboxSession, Role role) throws MailboxException { - return systemMailboxesProvider.getMailboxByRole(role, mailboxSession).findFirst(); + return systemMailboxesProvider.getMailboxByRole(role, mailboxSession.getUser().getCoreUser()).findFirst(); } private SetError buildSetErrorFromValidationResult(List<ValidationResult> validationErrors) { http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java index f183f9e..17a081a 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMessagesUpdateProcessor.java @@ -245,7 +245,7 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor { } private List<MailboxId> mailboxIdFor(Role role, MailboxSession session) throws MailboxException { - return systemMailboxesProvider.getMailboxByRole(role, session) + return systemMailboxesProvider.getMailboxByRole(role, session.getUser().getCoreUser()) .map(MessageManager::getId) .collect(Guavate.toImmutableList()); } @@ -273,7 +273,7 @@ public class SetMessagesUpdateProcessor implements SetMessagesProcessor { } private Set<MailboxId> listMailboxIdsForRole(MailboxSession session, Role role) throws MailboxException { - return systemMailboxesProvider.getMailboxByRole(role, session) + return systemMailboxesProvider.getMailboxByRole(role, session.getUser().getCoreUser()) .map(MessageManager::getId) .collect(Guavate.toImmutableSet()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java index a42af65..54b5bb7 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/PostDequeueDecorator.java @@ -137,12 +137,12 @@ public class PostDequeueDecorator extends MailQueueItemDecorator { } private MailboxId getSentMailboxId(MailboxSession session) throws MailboxRoleNotFoundException, MailboxException { - return systemMailboxesProvider.findMailbox(Role.SENT, session) + return systemMailboxesProvider.findMailbox(Role.SENT, session.getUser().getCoreUser()) .getId(); } private MailboxId getOutboxMailboxId(MailboxSession session) throws MailboxRoleNotFoundException, MailboxException { - return systemMailboxesProvider.findMailbox(Role.OUTBOX, session) + return systemMailboxesProvider.findMailbox(Role.OUTBOX, session.getUser().getCoreUser()) .getId(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/508d544f/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java index b93ed0f..f64a6ea 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMessagesCreationProcessorTest.java @@ -33,6 +33,7 @@ import java.util.Optional; import java.util.function.Supplier; import java.util.stream.Stream; +import org.apache.james.core.User; import org.apache.james.jmap.exceptions.MailboxNotOwnedException; import org.apache.james.jmap.model.CreationMessage; import org.apache.james.jmap.model.CreationMessage.DraftEmailer; @@ -390,7 +391,7 @@ public class SetMessagesCreationProcessorTest { } @Override - public Stream<MessageManager> getMailboxByRole(Role aRole, MailboxSession session) { + public Stream<MessageManager> getMailboxByRole(Role aRole, User user) { if (aRole.equals(Role.OUTBOX)) { return OptionalUtils.toStream(outboxSupplier.get()); } else if (aRole.equals(Role.DRAFTS)) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
