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]

Reply via email to