Author: matthieu
Date: Mon Jan 25 15:22:19 2016
New Revision: 1726641
URL: http://svn.apache.org/viewvc?rev=1726641&view=rev
Log:
JAMES-1661 getMailboxes should not fail when MailboxManagerErrors
Contributed by Raphaƫl Ouazana
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java?rev=1726641&r1=1726640&r2=1726641&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
Mon Jan 25 15:22:19 2016
@@ -96,7 +96,9 @@ public class GetMailboxesMethod<Id exten
mailboxManager.list(mailboxSession)
.stream()
.map(mailboxPath -> mailboxFromMailboxPath(mailboxPath,
mailboxSession))
- .forEach(mailbox -> builder.add(mailbox.get()));
+ .filter(Optional::isPresent)
+ .map(Optional::get)
+ .forEach(mailbox -> builder.add(mailbox));
return builder.build();
} catch (MailboxException e) {
throw Throwables.propagate(e);
Modified:
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java?rev=1726641&r1=1726640&r2=1726641&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
Mon Jan 25 15:22:19 2016
@@ -19,6 +19,9 @@
package org.apache.james.jmap.methods;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import java.util.Date;
@@ -31,6 +34,7 @@ import org.apache.james.jmap.model.Clien
import org.apache.james.jmap.model.GetMailboxesRequest;
import org.apache.james.jmap.model.GetMailboxesResponse;
import org.apache.james.jmap.model.mailbox.Mailbox;
+import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.acl.GroupMembershipResolver;
@@ -42,6 +46,7 @@ import org.apache.james.mailbox.inmemory
import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.store.MockAuthenticator;
+import org.apache.james.mailbox.store.SimpleMailboxSession;
import org.apache.james.mailbox.store.StoreMailboxManager;
import org.assertj.core.groups.Tuple;
import org.junit.Before;
@@ -49,6 +54,8 @@ import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.collect.ImmutableList;
+
public class GetMailboxesMethodTest {
private static final Logger LOGGER =
LoggerFactory.getLogger(GetMailboxesMethodTest.class);
@@ -57,11 +64,12 @@ public class GetMailboxesMethodTest {
private StoreMailboxManager<InMemoryId> mailboxManager;
private GetMailboxesMethod<InMemoryId> getMailboxesMethod;
private ClientId clientId;
+ private InMemoryMailboxSessionMapperFactory mailboxMapperFactory;
@Before
public void setup() throws Exception {
clientId = ClientId.of("#0");
- InMemoryMailboxSessionMapperFactory mailboxMapperFactory = new
InMemoryMailboxSessionMapperFactory();
+ mailboxMapperFactory = new InMemoryMailboxSessionMapperFactory();
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new
SimpleGroupMembershipResolver();
mailboxManager = new
StoreMailboxManager<InMemoryId>(mailboxMapperFactory, new MockAuthenticator(),
aclResolver, groupMembershipResolver);
@@ -81,6 +89,30 @@ public class GetMailboxesMethodTest {
assertThat(getMailboxesResponse)
.hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
+ .isEmpty();
+ }
+
+ @Test
+ public void getMailboxesShouldNotFailWhenMailboxManagerErrors() throws
Exception {
+ MailboxManager mockedMailboxManager = mock(MailboxManager.class);
+ when(mockedMailboxManager.list(any()))
+ .thenReturn(ImmutableList.of(new MailboxPath("namespace", "user",
"name")));
+ when(mockedMailboxManager.getMailbox(any(), any()))
+ .thenThrow(new MailboxException());
+ GetMailboxesMethod<InMemoryId> testee = new
GetMailboxesMethod<>(mockedMailboxManager, mailboxMapperFactory);
+
+ GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
+ .build();
+ MailboxSession session = new SimpleMailboxSession(0, USERNAME, "",
null, null, '.', null);
+
+ List<JmapResponse> getMailboxesResponse =
testee.process(getMailboxesRequest, clientId,
session).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
.extracting(JmapResponse::getResponse)
.hasOnlyElementsOfType(GetMailboxesResponse.class)
.extracting(GetMailboxesResponse.class::cast)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]