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 ad...@apache.org on 2016/01/13 11:11:53 UTC
svn commit: r1724384 - in /james/project/trunk/server/protocols/jmap/src:
main/java/org/apache/james/jmap/ main/java/org/apache/james/jmap/methods/
test/java/org/apache/james/jmap/ test/java/org/apache/james/jmap/methods/
Author: aduprat
Date: Wed Jan 13 10:11:53 2016
New Revision: 1724384
URL: http://svn.apache.org/viewvc?rev=1724384&view=rev
Log:
JAMES-1648 Method can return a response Stream. Contributed by Baechler <ma...@gmail.com>
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriter.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriterImpl.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java (original)
+++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/JMAPServlet.java Wed Jan 13 10:11:53 2016
@@ -63,7 +63,7 @@ public class JMAPServlet extends HttpSer
requestAsJsonStream(req)
.map(ProtocolRequest::deserialize)
.map(x -> AuthenticatedProtocolRequest.decorate(x, req))
- .map(requestHandler::handle)
+ .flatMap(requestHandler::handle)
.map(ProtocolResponse::asProtocolSpecification)
.collect(Collectors.toList());
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=1724384&r1=1724383&r2=1724384&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 Wed Jan 13 10:11:53 2016
@@ -20,9 +20,11 @@
package org.apache.james.jmap.methods;
import java.util.Optional;
+import java.util.stream.Stream;
import javax.inject.Inject;
+import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.GetMailboxesRequest;
import org.apache.james.jmap.model.GetMailboxesResponse;
import org.apache.james.jmap.model.mailbox.Mailbox;
@@ -65,35 +67,31 @@ public class GetMailboxesMethod<Id exten
}
@Override
- public Method.Response.Name responseName() {
- return RESPONSE_NAME;
- }
-
- @Override
public Class<? extends JmapRequest> requestType() {
return GetMailboxesRequest.class;
}
-
- @Override
- public GetMailboxesResponse process(JmapRequest request, MailboxSession mailboxSession) {
+
+ public Stream<JmapResponse> process(JmapRequest request, ClientId clientId, MailboxSession mailboxSession) {
Preconditions.checkArgument(request instanceof GetMailboxesRequest);
+ return Stream.of(
+ JmapResponse.builder().clientId(clientId)
+ .response(getMailboxesResponse(mailboxSession))
+ .responseName(RESPONSE_NAME)
+ .build());
+ }
+
+ private GetMailboxesResponse getMailboxesResponse(MailboxSession mailboxSession) {
+ GetMailboxesResponse.Builder builder = GetMailboxesResponse.builder();
try {
- return getMailboxesResponse(mailboxSession);
+ mailboxManager.list(mailboxSession)
+ .stream()
+ .map(mailboxPath -> mailboxFromMailboxPath(mailboxPath, mailboxSession))
+ .forEach(mailbox -> builder.add(mailbox.get()));
+ return builder.build();
} catch (MailboxException e) {
throw Throwables.propagate(e);
}
}
-
- private GetMailboxesResponse getMailboxesResponse(MailboxSession mailboxSession) throws MailboxException {
- GetMailboxesResponse.Builder builder = GetMailboxesResponse.builder();
-
- mailboxManager.list(mailboxSession)
- .stream()
- .map(mailboxPath -> mailboxFromMailboxPath(mailboxPath, mailboxSession))
- .forEach(mailbox -> builder.add(mailbox.get()));
-
- return builder.build();
- }
private Optional<Mailbox> mailboxFromMailboxPath(MailboxPath mailboxPath, MailboxSession mailboxSession) {
try {
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java (original)
+++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java Wed Jan 13 10:11:53 2016
@@ -28,6 +28,7 @@ import java.util.stream.Stream;
import javax.inject.Inject;
import javax.inject.Named;
+import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.FilterCondition;
import org.apache.james.jmap.model.GetMessageListRequest;
import org.apache.james.jmap.model.GetMessageListResponse;
@@ -84,38 +85,37 @@ public class GetMessageListMethod<Id ext
}
@Override
- public Method.Response.Name responseName() {
- return RESPONSE_NAME;
- }
-
- @Override
public Class<? extends JmapRequest> requestType() {
return GetMessageListRequest.class;
}
@Override
- public GetMessageListResponse process(JmapRequest request, MailboxSession mailboxSession) {
+ public Stream<JmapResponse> process(JmapRequest request, ClientId clientId, MailboxSession mailboxSession) {
Preconditions.checkArgument(request instanceof GetMessageListRequest);
- try {
- return getMessageListResponse((GetMessageListRequest) request, mailboxSession);
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
+ return Stream.of(
+ JmapResponse.builder().clientId(clientId)
+ .response(getMessageListResponse((GetMessageListRequest) request, mailboxSession))
+ .responseName(RESPONSE_NAME)
+ .build());
}
- private GetMessageListResponse getMessageListResponse(GetMessageListRequest jmapRequest, MailboxSession mailboxSession) throws MailboxException {
+ private GetMessageListResponse getMessageListResponse(GetMessageListRequest jmapRequest, MailboxSession mailboxSession) {
GetMessageListResponse.Builder builder = GetMessageListResponse.builder();
+ try {
- mailboxManager.list(mailboxSession)
- .stream()
- .filter(mailboxPath -> isMailboxRequested(jmapRequest, mailboxPath))
- .flatMap(mailboxPath -> listMessages(mailboxPath, mailboxSession, jmapRequest))
- .skip(jmapRequest.getPosition())
- .limit(limit(jmapRequest.getLimit()))
- .map(MessageId::serialize)
- .forEach(builder::messageId);
+ mailboxManager.list(mailboxSession)
+ .stream()
+ .filter(mailboxPath -> isMailboxRequested(jmapRequest, mailboxPath))
+ .flatMap(mailboxPath -> listMessages(mailboxPath, mailboxSession, jmapRequest))
+ .skip(jmapRequest.getPosition())
+ .limit(limit(jmapRequest.getLimit()))
+ .map(MessageId::serialize)
+ .forEach(builder::messageId);
- return builder.build();
+ return builder.build();
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
+ }
}
private Stream<MessageId> listMessages(MailboxPath mailboxPath, MailboxSession mailboxSession, GetMessageListRequest jmapRequest) {
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java (original)
+++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java Wed Jan 13 10:11:53 2016
@@ -29,6 +29,7 @@ import java.util.stream.StreamSupport;
import javax.inject.Inject;
import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.GetMessagesRequest;
import org.apache.james.jmap.model.GetMessagesResponse;
import org.apache.james.jmap.model.Message;
@@ -70,21 +71,23 @@ public class GetMessagesMethod<Id extend
}
@Override
- public Method.Response.Name responseName() {
- return RESPONSE_NAME;
- }
-
- @Override
public Class<? extends JmapRequest> requestType() {
return GetMessagesRequest.class;
}
@Override
- public GetMessagesResponse process(JmapRequest request, MailboxSession mailboxSession) {
+ public Stream<JmapResponse> process(JmapRequest request, ClientId clientId, MailboxSession mailboxSession) {
Preconditions.checkNotNull(request);
Preconditions.checkNotNull(mailboxSession);
Preconditions.checkArgument(request instanceof GetMessagesRequest);
GetMessagesRequest getMessagesRequest = (GetMessagesRequest) request;
+ return Stream.of(JmapResponse.builder().clientId(clientId)
+ .response(getMessagesResponse(mailboxSession, getMessagesRequest))
+ .responseName(RESPONSE_NAME)
+ .build());
+ }
+
+ private GetMessagesResponse getMessagesResponse(MailboxSession mailboxSession, GetMessagesRequest getMessagesRequest) {
getMessagesRequest.getAccountId().ifPresent(GetMessagesMethod::notImplemented);
Function<MessageId, Stream<Pair<MailboxMessage<Id>, MailboxPath>>> loadMessages = loadMessage(mailboxSession);
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriter.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriter.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriter.java (original)
+++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriter.java Wed Jan 13 10:11:53 2016
@@ -21,8 +21,10 @@ package org.apache.james.jmap.methods;
import org.apache.james.jmap.model.ProtocolResponse;
+import java.util.stream.Stream;
+
public interface JmapResponseWriter {
- ProtocolResponse formatMethodResponse(JmapResponse jmapResponse);
+ Stream<ProtocolResponse> formatMethodResponse(Stream<JmapResponse> jmapResponse);
}
\ No newline at end of file
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriterImpl.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriterImpl.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriterImpl.java (original)
+++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponseWriterImpl.java Wed Jan 13 10:11:53 2016
@@ -21,6 +21,7 @@ package org.apache.james.jmap.methods;
import java.util.Optional;
import java.util.Set;
+import java.util.stream.Stream;
import javax.inject.Inject;
@@ -44,13 +45,15 @@ public class JmapResponseWriterImpl impl
}
@Override
- public ProtocolResponse formatMethodResponse(JmapResponse jmapResponse) {
- ObjectMapper objectMapper = newConfiguredObjectMapper(jmapResponse);
-
- return new ProtocolResponse(
- jmapResponse.getResponseName(),
- objectMapper.valueToTree(jmapResponse.getResponse()),
- jmapResponse.getClientId());
+ public Stream<ProtocolResponse> formatMethodResponse(Stream<JmapResponse> jmapResponses) {
+ return jmapResponses.map(jmapResponse -> {
+ ObjectMapper objectMapper = newConfiguredObjectMapper(jmapResponse);
+
+ return new ProtocolResponse(
+ jmapResponse.getResponseName(),
+ objectMapper.valueToTree(jmapResponse.getResponse()),
+ jmapResponse.getClientId());
+ });
}
private FilterProvider buildPropertiesFilter(Optional<Set<String>> properties) {
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java (original)
+++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java Wed Jan 13 10:11:53 2016
@@ -22,7 +22,9 @@ package org.apache.james.jmap.methods;
import static com.google.common.base.Objects.toStringHelper;
import java.util.Objects;
+import java.util.stream.Stream;
+import org.apache.james.jmap.model.ClientId;
import org.apache.james.mailbox.MailboxSession;
import com.fasterxml.jackson.annotation.JsonValue;
@@ -118,10 +120,8 @@ public interface Method {
Request.Name requestHandled();
- Response.Name responseName();
-
Class<? extends JmapRequest> requestType();
- Response process(JmapRequest request, MailboxSession mailboxSession);
+ Stream<JmapResponse> process(JmapRequest request, ClientId clientId, MailboxSession mailboxSession);
}
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java (original)
+++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java Wed Jan 13 10:11:53 2016
@@ -25,11 +25,11 @@ import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import javax.inject.Inject;
import org.apache.commons.lang.NotImplementedException;
-import org.apache.james.jmap.methods.JmapResponse.Builder;
import org.apache.james.jmap.model.AuthenticatedProtocolRequest;
import org.apache.james.jmap.model.ProtocolResponse;
import org.apache.james.mailbox.MailboxSession;
@@ -48,32 +48,31 @@ public class RequestHandler {
.collect(Collectors.toMap(Method::requestHandled, Function.identity()));
}
- public ProtocolResponse handle(AuthenticatedProtocolRequest request) {
- Builder responseBuilder = JmapResponse.builder().clientId(request.getClientId());
+ public Stream<ProtocolResponse> handle(AuthenticatedProtocolRequest request) {
return Optional.ofNullable(methods.get(request.getMethodName()))
- .map(extractAndProcess(request, responseBuilder))
+ .map(extractAndProcess(request))
.map(jmapResponseWriter::formatMethodResponse)
.orElseThrow(() -> new IllegalStateException("unknown method"));
}
- private Function<Method, JmapResponse> extractAndProcess(AuthenticatedProtocolRequest request, JmapResponse.Builder responseBuilder) {
+ private Function<Method, Stream<JmapResponse>> extractAndProcess(AuthenticatedProtocolRequest request) {
MailboxSession mailboxSession = request.getMailboxSession();
return (Method method) -> {
try {
JmapRequest jmapRequest = jmapRequestParser.extractJmapRequest(request, method.requestType());
- return responseBuilder
- .response(method.process(jmapRequest, mailboxSession))
- .responseName(method.responseName())
- .build();
+ return method.process(jmapRequest, request.getClientId(), mailboxSession);
} catch (IOException e) {
if (e.getCause() instanceof NotImplementedException) {
- return responseBuilder.error("Not yet implemented").build();
+ return error(request, "Not yet implemented");
}
- return responseBuilder.error("invalidArguments").build();
+ return error(request, "invalidArguments");
} catch (NotImplementedException e) {
- return responseBuilder.error("Not yet implemented").build();
+ return error(request, "Not yet implemented");
}
};
-
+ }
+
+ private Stream<JmapResponse> error(AuthenticatedProtocolRequest request, String message) {
+ return Stream.of(JmapResponse.builder().clientId(request.getClientId()).error(message).build());
}
}
Modified: james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java (original)
+++ james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java Wed Jan 13 10:11:53 2016
@@ -44,6 +44,8 @@ import com.google.common.base.Charsets;
import com.jayway.restassured.RestAssured;
import com.jayway.restassured.http.ContentType;
+import java.util.stream.Stream;
+
public class JMAPServletTest {
private JettyHttpServer server;
@@ -92,7 +94,7 @@ public class JMAPServletTest {
json.put("type", "invalidArgument");
when(requestHandler.handle(any()))
- .thenReturn(new ProtocolResponse(JmapResponse.ERROR_METHOD, json, ClientId.of("#0")));
+ .thenReturn(Stream.of(new ProtocolResponse(JmapResponse.ERROR_METHOD, json, ClientId.of("#0"))));
given()
.accept(ContentType.JSON)
@@ -116,7 +118,7 @@ public class JMAPServletTest {
arrayNode.add(list);
when(requestHandler.handle(any()))
- .thenReturn(new ProtocolResponse(Method.Response.name("accounts"), json, ClientId.of("#0")));
+ .thenReturn(Stream.of(new ProtocolResponse(Method.Response.name("accounts"), json, ClientId.of("#0"))));
given()
.accept(ContentType.JSON)
@@ -136,5 +138,4 @@ public class JMAPServletTest {
"]" +
"},\"#0\"]]"));
}
-
}
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=1724384&r1=1724383&r2=1724384&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 Wed Jan 13 10:11:53 2016
@@ -22,9 +22,12 @@ import static org.assertj.core.api.Asser
import java.io.ByteArrayInputStream;
import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
import javax.mail.Flags;
+import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.GetMailboxesRequest;
import org.apache.james.jmap.model.GetMailboxesResponse;
import org.apache.james.jmap.model.mailbox.Mailbox;
@@ -53,9 +56,11 @@ public class GetMailboxesMethodTest {
private StoreMailboxManager<InMemoryId> mailboxManager;
private GetMailboxesMethod<InMemoryId> getMailboxesMethod;
-
+ private ClientId clientId;
+
@Before
public void setup() throws Exception {
+ clientId = ClientId.of("#0");
InMemoryMailboxSessionMapperFactory mailboxMapperFactory = new InMemoryMailboxSessionMapperFactory();
MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
@@ -71,8 +76,16 @@ public class GetMailboxesMethodTest {
.build();
MailboxSession mailboxSession = mailboxManager.createSystemSession(USERNAME, LOGGER);
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList()).isEmpty();
+
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
+ .isEmpty();
}
@Test
@@ -87,8 +100,14 @@ public class GetMailboxesMethodTest {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getId, Mailbox::getName, Mailbox::getUnreadMessages)
.containsOnly(Tuple.tuple("1", mailboxPath.getName(), 2L));
}
@@ -102,9 +121,14 @@ public class GetMailboxesMethodTest {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
.hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getSortOrder)
.containsOnly(10);
}
@@ -118,8 +142,14 @@ public class GetMailboxesMethodTest {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getSortOrder)
.containsOnly(1000);
}
@@ -133,8 +163,14 @@ public class GetMailboxesMethodTest {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getSortOrder)
.containsOnly(10);
}
@@ -154,8 +190,14 @@ public class GetMailboxesMethodTest {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getName, Mailbox::getSortOrder)
.containsExactly(
Tuple.tuple("INBOX", 10),
@@ -177,8 +219,14 @@ public class GetMailboxesMethodTest {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getTotalMessages, Mailbox::getUnreadMessages)
.containsOnly(Tuple.tuple(0L, 0L));
}
@@ -195,8 +243,14 @@ public class GetMailboxesMethodTest {
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getTotalMessages)
.containsExactly(2L);
}
@@ -215,9 +269,16 @@ public class GetMailboxesMethodTest {
messageManager.appendMessage(new ByteArrayInputStream("Subject: test3\r\n\r\ntestmail".getBytes()), new Date(), mailboxSession, false, readMessageFlag);
GetMailboxesRequest getMailboxesRequest = GetMailboxesRequest.builder()
.build();
- GetMailboxesResponse getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, mailboxSession);
- assertThat(getMailboxesResponse.getList())
+
+ List<JmapResponse> getMailboxesResponse = getMailboxesMethod.process(getMailboxesRequest, clientId, mailboxSession).collect(Collectors.toList());
+
+ assertThat(getMailboxesResponse)
+ .hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMailboxesResponse.class)
+ .extracting(GetMailboxesResponse.class::cast)
+ .flatExtracting(GetMailboxesResponse::getList)
.extracting(Mailbox::getUnreadMessages)
.containsExactly(2L);
}
-}
\ No newline at end of file
+}
Modified: james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java (original)
+++ james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java Wed Jan 13 10:11:53 2016
@@ -26,8 +26,10 @@ import java.io.ByteArrayInputStream;
import java.util.Date;
import java.util.List;
import java.util.Locale;
+import java.util.stream.Collectors;
import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.GetMessagesRequest;
import org.apache.james.jmap.model.GetMessagesResponse;
import org.apache.james.jmap.model.Message;
@@ -56,8 +58,6 @@ public class GetMessagesMethodTest {
private static final Logger LOGGER = LoggerFactory.getLogger(GetMessagesMethodTest.class);
- private StoreMailboxManager<InMemoryId> mailboxManager;
-
private static class User implements org.apache.james.mailbox.MailboxSession.User {
final String username;
final String password;
@@ -85,14 +85,16 @@ public class GetMessagesMethodTest {
private static final User ROBERT = new User("robert", "secret");
+ private StoreMailboxManager<InMemoryId> mailboxManager;
+ private InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory;
+
private MailboxSession session;
private MailboxPath inboxPath;
+ private ClientId clientId;
- private InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory;
-
@Before
public void setup() throws MailboxException {
-
+ clientId = ClientId.of("#0");
mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
MockAuthenticator authenticator = new MockAuthenticator();
authenticator.addUser(ROBERT.username, ROBERT.password);
@@ -111,22 +113,28 @@ public class GetMessagesMethodTest {
public void processShouldThrowWhenNullRequest() {
GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
GetMessagesRequest request = null;
- assertThatThrownBy(() -> testee.process(request, mock(MailboxSession.class))).isInstanceOf(NullPointerException.class);
+ assertThatThrownBy(() -> testee.process(request, mock(ClientId.class), mock(MailboxSession.class))).isInstanceOf(NullPointerException.class);
}
@Test
public void processShouldThrowWhenNullSession() {
GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
MailboxSession mailboxSession = null;
- assertThatThrownBy(() -> testee.process(mock(GetMessagesRequest.class), mailboxSession)).isInstanceOf(NullPointerException.class);
+ assertThatThrownBy(() -> testee.process(mock(GetMessagesRequest.class), mock(ClientId.class), mailboxSession)).isInstanceOf(NullPointerException.class);
+ }
+
+ @Test
+ public void processShouldThrowWhenNullClientId() {
+ GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
+ ClientId clientId = null;
+ assertThatThrownBy(() -> testee.process(mock(GetMessagesRequest.class), clientId, mock(MailboxSession.class))).isInstanceOf(NullPointerException.class);
}
-
@Test
public void processShouldThrowWhenRequestHasAccountId() {
GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
assertThatThrownBy(() -> testee.process(
- GetMessagesRequest.builder().accountId("abc").build(), mock(MailboxSession.class))).isInstanceOf(NotImplementedException.class);
+ GetMessagesRequest.builder().accountId("abc").build(), mock(ClientId.class), mock(MailboxSession.class))).isInstanceOf(NotImplementedException.class);
}
@Test
@@ -147,9 +155,13 @@ public class GetMessagesMethodTest {
.build();
GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
- GetMessagesResponse result = testee.process(request, session);
+ List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList());
- assertThat(result.list())
+ assertThat(result).hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMessagesResponse.class)
+ .extracting(GetMessagesResponse.class::cast)
+ .flatExtracting(GetMessagesResponse::list)
.extracting(message -> message.getId().getUid(), Message::getSubject)
.containsOnly(
Tuple.tuple(message1Uid, "message 1 subject"),
@@ -170,11 +182,16 @@ public class GetMessagesMethodTest {
.build();
GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
- GetMessagesResponse result = testee.process(request, session);
-
- assertThat(result.list())
+ List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList());
+
+ assertThat(result).hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMessagesResponse.class)
+ .extracting(GetMessagesResponse.class::cast)
+ .flatExtracting(GetMessagesResponse::list)
.extracting(message -> message.getId().getUid(), Message::getSubject)
- .containsOnly(Tuple.tuple(message1Uid, "message 1 subject"));
+ .containsOnly(
+ Tuple.tuple(message1Uid, "message 1 subject"));
}
@Test
@@ -190,11 +207,16 @@ public class GetMessagesMethodTest {
.build();
GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
- GetMessagesResponse result = testee.process(request, session);
-
- assertThat(result.list())
+ List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList());
+
+ assertThat(result).hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMessagesResponse.class)
+ .extracting(GetMessagesResponse.class::cast)
+ .flatExtracting(GetMessagesResponse::list)
.extracting(message -> message.getId().getUid(), Message::getSubject)
- .containsOnly(Tuple.tuple(message1Uid, "message 1 subject"));
+ .containsOnly(
+ Tuple.tuple(message1Uid, "message 1 subject"));
}
@Test
@@ -209,11 +231,16 @@ public class GetMessagesMethodTest {
.build();
GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory);
- GetMessagesResponse result = testee.process(request, session);
-
- assertThat(result.list())
+ List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList());
+
+ assertThat(result).hasSize(1)
+ .extracting(JmapResponse::getResponse)
+ .hasOnlyElementsOfType(GetMessagesResponse.class)
+ .extracting(GetMessagesResponse.class::cast)
+ .flatExtracting(GetMessagesResponse::list)
.extracting(message -> message.getId().getUid(), Message::getSubject)
- .containsOnly(Tuple.tuple(message1Uid, "message 1 subject"));
+ .containsOnly(
+ Tuple.tuple(message1Uid, "message 1 subject"));
}
}
Modified: james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java (original)
+++ james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java Wed Jan 13 10:11:53 2016
@@ -20,12 +20,19 @@
package org.apache.james.jmap.methods;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.tuple;
+import static org.assertj.core.groups.Tuple.*;
import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import com.google.common.collect.Iterables;
import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.ProtocolRequest;
import org.apache.james.jmap.model.ProtocolResponse;
+import org.assertj.core.groups.Tuple;
import org.junit.Ignore;
import org.junit.Test;
@@ -47,15 +54,16 @@ public class JmapResponseWriterImplTest
String expectedId = "myId";
JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(ImmutableSet.of(new Jdk8Module()));
- ProtocolResponse response = jmapResponseWriterImpl.formatMethodResponse(JmapResponse
+ Stream<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(Stream.of(JmapResponse
.builder()
.clientId(ClientId.of(expectedClientId))
.response(null)
- .build());
+ .build()));
- assertThat(response.getResponseName()).isEqualTo(expectedMethod);
- assertThat(response.getResults().findValue("id").asText()).isEqualTo(expectedId);
- assertThat(response.getClientId()).isEqualTo(expectedClientId);
+ List<ProtocolResponse> responseList = response.collect(Collectors.toList());
+ assertThat(responseList).hasSize(1)
+ .extracting(ProtocolResponse::getResponseName, x -> x.getResults().get("id").asText(), ProtocolResponse::getClientId)
+ .containsExactly(tuple(expectedMethod, expectedId, expectedClientId));
}
@Test
@@ -67,17 +75,18 @@ public class JmapResponseWriterImplTest
responseClass.id = expectedId;
JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(ImmutableSet.of(new Jdk8Module()));
- ProtocolResponse response = jmapResponseWriterImpl.formatMethodResponse(
- JmapResponse
+ List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
.clientId(ClientId.of(expectedClientId))
.response(responseClass)
- .build());
+ .build()))
+ .collect(Collectors.toList());
- assertThat(response.getResponseName()).isEqualTo(Method.Response.name("unknownMethod"));
- assertThat(response.getResults().findValue("id").asText()).isEqualTo(expectedId);
- assertThat(response.getClientId()).isEqualTo(ClientId.of(expectedClientId));
+ assertThat(response).hasSize(1)
+ .extracting(ProtocolResponse::getResponseName, x -> x.getResults().get("id").asText(), ProtocolResponse::getClientId)
+ .containsExactly(tuple(Method.Response.name("unknownMethod"), expectedId, ClientId.of(expectedClientId)));
}
private static class ResponseClass implements Method.Response {
@@ -86,56 +95,94 @@ public class JmapResponseWriterImplTest
public String id;
}
-
+
@Test
public void formatMethodResponseShouldFilterFieldsWhenProperties() {
ObjectResponseClass responseClass = new ObjectResponseClass();
responseClass.list = ImmutableList.of(new ObjectResponseClass.Foo("id", "name"));
JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(ImmutableSet.of(new Jdk8Module()));
- ProtocolResponse response = jmapResponseWriterImpl.formatMethodResponse(
- JmapResponse
+ List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
.clientId(ClientId.of("#1"))
.properties(ImmutableSet.of("id"))
.response(responseClass)
- .build());
+ .build()))
+ .collect(Collectors.toList());
- JsonNode firstObject = response.getResults().get("list").elements().next();
+ assertThat(response).hasSize(1);
+ JsonNode firstObject = Iterables.getOnlyElement(response).getResults().get("list").elements().next();
assertThat(firstObject.get("id").asText()).isEqualTo("id");
assertThat(firstObject.get("name")).isNull();
}
-
+
+
@Test
public void formatMethodResponseShouldNotFilterFieldsWhenSecondCallWithoutProperties() {
ObjectResponseClass responseClass = new ObjectResponseClass();
responseClass.list = ImmutableList.of(new ObjectResponseClass.Foo("id", "name"));
JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(ImmutableSet.of(new Jdk8Module()));
- jmapResponseWriterImpl.formatMethodResponse(
- JmapResponse
- .builder()
- .responseName(Method.Response.name("unknownMethod"))
- .clientId(ClientId.of("#1"))
- .properties(ImmutableSet.of("id"))
- .response(responseClass)
- .build());
+ @SuppressWarnings("unused")
+ Stream<ProtocolResponse> ignoredResponse = jmapResponseWriterImpl.formatMethodResponse(
+ Stream.of(JmapResponse
+ .builder()
+ .responseName(Method.Response.name("unknownMethod"))
+ .clientId(ClientId.of("#1"))
+ .properties(ImmutableSet.of("id"))
+ .response(responseClass)
+ .build()));
- ProtocolResponse response = jmapResponseWriterImpl.formatMethodResponse(
- JmapResponse
+ List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ Stream.of(JmapResponse
.builder()
.responseName(Method.Response.name("unknownMethod"))
.clientId(ClientId.of("#1"))
.response(responseClass)
- .build());
+ .build()))
+ .collect(Collectors.toList());
- JsonNode firstObject = response.getResults().get("list").elements().next();
+ assertThat(response).hasSize(1);
+ JsonNode firstObject = Iterables.getOnlyElement(response).getResults().get("list").elements().next();
assertThat(firstObject.get("id").asText()).isEqualTo("id");
assertThat(firstObject.get("name").asText()).isEqualTo("name");
}
+ @Test
+ public void formatMethodResponseShouldFilterRightFieldsForEachResponse() {
+ ObjectResponseClass responseClass = new ObjectResponseClass();
+ responseClass.list = ImmutableList.of(new ObjectResponseClass.Foo("id", "name"));
+
+ JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(ImmutableSet.of(new Jdk8Module()));
+
+ List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ Stream.of(JmapResponse
+ .builder()
+ .responseName(Method.Response.name("unknownMethod"))
+ .clientId(ClientId.of("#1"))
+ .properties(ImmutableSet.of("id", "name"))
+ .response(responseClass)
+ .build(),
+ JmapResponse
+ .builder()
+ .responseName(Method.Response.name("unknownMethod"))
+ .clientId(ClientId.of("#1"))
+ .properties(ImmutableSet.of("id"))
+ .response(responseClass)
+ .build()))
+ .collect(Collectors.toList());
+
+ assertThat(response).hasSize(2)
+ .extracting(x -> x.getResults().get("list").elements().next())
+ .extracting(
+ x -> x.get("id").asText(),
+ x -> Optional.ofNullable(x.get("name")).map(JsonNode::asText).orElse(null))
+ .containsExactly(tuple("id", "name"), tuple("id", null));
+ }
+
@SuppressWarnings("unused")
private static class ObjectResponseClass implements Method.Response {
@JsonFilter("propertiesFilter")
@@ -161,15 +208,17 @@ public class JmapResponseWriterImplTest
new ObjectNode(new JsonNodeFactory(false)).textNode(expectedClientId)} ;
JmapResponseWriterImpl jmapResponseWriterImpl = new JmapResponseWriterImpl(ImmutableSet.of(new Jdk8Module()));
- ProtocolResponse response = jmapResponseWriterImpl.formatMethodResponse(
- JmapResponse
+ List<ProtocolResponse> response = jmapResponseWriterImpl.formatMethodResponse(
+ Stream.of(JmapResponse
.builder()
.clientId(ProtocolRequest.deserialize(nodes).getClientId())
.error()
- .build());
+ .build()))
+ .collect(Collectors.toList());
- assertThat(response.getResponseName()).isEqualToComparingFieldByField(JmapResponse.ERROR_METHOD);
- assertThat(response.getResults().findValue("type").asText()).isEqualTo(JmapResponse.DEFAULT_ERROR_MESSAGE);
- assertThat(response.getClientId()).isEqualTo(ClientId.of(expectedClientId));
+ assertThat(response).hasSize(1)
+ .extracting(ProtocolResponse::getResponseName, x -> x.getResults().get("type").asText(), ProtocolResponse::getClientId)
+ .containsExactly(tuple(JmapResponse.ERROR_METHOD, JmapResponse.DEFAULT_ERROR_MESSAGE, ClientId.of(expectedClientId)));
}
+
}
Modified: james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java?rev=1724384&r1=1724383&r2=1724384&view=diff
==============================================================================
--- james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java (original)
+++ james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java Wed Jan 13 10:11:53 2016
@@ -19,14 +19,15 @@
package org.apache.james.jmap.methods;
+import static org.assertj.core.api.Assertions.tuple;
import static org.mockito.Mockito.mock;
import static org.assertj.core.api.Assertions.assertThat;
import javax.inject.Inject;
import javax.servlet.http.HttpServletRequest;
-import org.apache.james.jmap.methods.Method.Response.Name;
import org.apache.james.jmap.model.AuthenticatedProtocolRequest;
+import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.ProtocolRequest;
import org.apache.james.jmap.model.ProtocolResponse;
import org.apache.james.mailbox.MailboxSession;
@@ -41,6 +42,10 @@ import com.google.common.annotations.Vis
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
public class RequestHandlerTest {
public static class TestJmapRequest implements JmapRequest {
@@ -94,20 +99,20 @@ public class RequestHandlerTest {
}
@Override
- public Method.Response.Name responseName() {
- return Method.Response.name("testMethod");
- }
-
- @Override
public Class<? extends JmapRequest> requestType() {
return TestJmapRequest.class;
}
@Override
- public TestJmapResponse process(JmapRequest request, MailboxSession mailboxSession) {
+ public Stream<JmapResponse> process(JmapRequest request, ClientId clientId, MailboxSession mailboxSession) {
Preconditions.checkArgument(request instanceof TestJmapRequest);
TestJmapRequest typedRequest = (TestJmapRequest) request;
- return new TestJmapResponse(typedRequest.getId(), typedRequest.getName(), "works");
+ return Stream.of(
+ JmapResponse.builder()
+ .response(new TestJmapResponse(typedRequest.getId(), typedRequest.getName(), "works"))
+ .responseName(Response.name("test"))
+ .clientId(ClientId.of("#0"))
+ .build());
}
}
@@ -180,17 +185,12 @@ public class RequestHandlerTest {
}
@Override
- public Name responseName() {
- return null;
- }
-
- @Override
public Class<? extends JmapRequest> requestType() {
return null;
}
@Override
- public Method.Response process(JmapRequest request, MailboxSession mailboxSession) {
+ public Stream<JmapResponse> process(JmapRequest request, ClientId clientId, MailboxSession mailboxSession) {
return null;
}
}
@@ -205,10 +205,14 @@ public class RequestHandlerTest {
parameters,
new ObjectNode(new JsonNodeFactory(false)).textNode("#1")} ;
- ProtocolResponse response = testee.handle(AuthenticatedProtocolRequest.decorate(ProtocolRequest.deserialize(nodes), mockHttpServletRequest));
+ List<ProtocolResponse> responses = testee.handle(AuthenticatedProtocolRequest.decorate(ProtocolRequest.deserialize(nodes), mockHttpServletRequest))
+ .collect(Collectors.toList());
- assertThat(response.getResults().findValue("id").asText()).isEqualTo("testId");
- assertThat(response.getResults().findValue("name").asText()).isEqualTo("testName");
- assertThat(response.getResults().findValue("message").asText()).isEqualTo("works");
+ assertThat(responses).hasSize(1)
+ .extracting(
+ x -> x.getResults().findValue("id").asText(),
+ x -> x.getResults().findValue("name").asText(),
+ x -> x.getResults().findValue("message").asText())
+ .containsExactly(tuple("testId", "testName", "works"));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org