Author: matthieu
Date: Fri Dec 11 12:33:38 2015
New Revision: 1719386
URL: http://svn.apache.org/viewvc?rev=1719386&view=rev
Log:
JAMES-1644 Implement position in GetMessageListMethod
Modified:
james/project/trunk/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/GetMessageListMethodTest.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessageListMethod.java
Modified:
james/project/trunk/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/GetMessageListMethodTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/GetMessageListMethodTest.java?rev=1719386&r1=1719385&r2=1719386&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/GetMessageListMethodTest.java
(original)
+++
james/project/trunk/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/GetMessageListMethodTest.java
Fri Dec 11 12:33:38 2015
@@ -304,4 +304,58 @@ public abstract class GetMessageListMeth
+
"\"canCalculateUpdates\":false,\"position\":0,\"total\":0,\"threadIds\":[],\"messageIds\":[\"1\",\"2\"]},"
+ "\"#0\"]]"));
}
+
+ @Test
+ public void getMessageListShouldReturnAllMessagesWhenPositionIsNotGiven()
throws Exception {
+ String user = "user";
+
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, user,
"mailbox");
+
+ LocalDate date = LocalDate.now();
+ jmapServer.serverProbe().appendMessage(user, new
MailboxPath(MailboxConstants.USER_NAMESPACE, user, "mailbox"),
+ new ByteArrayInputStream("Subject:
test\r\n\r\ntestmail".getBytes()), new Date(date.plusDays(1).toEpochDay()),
false, new Flags());
+ jmapServer.serverProbe().appendMessage(user, new
MailboxPath(MailboxConstants.USER_NAMESPACE, user, "mailbox"),
+ new ByteArrayInputStream("Subject:
test2\r\n\r\ntestmail".getBytes()), new Date(date.toEpochDay()), false, new
Flags());
+ embeddedElasticSearch.awaitForElasticSearch();
+
+ given()
+ .accept(ContentType.JSON)
+ .contentType(ContentType.JSON)
+ .header("Authorization", accessToken.serialize())
+ .body("[[\"getMessageList\", {}, \"#0\"]]")
+ .when()
+ .post("/jmap")
+ .then()
+ .statusCode(200)
+ .content(startsWith("[[\"getMessageList\","
+ +
"{\"accountId\":null,\"filter\":null,\"sort\":[],\"collapseThreads\":false,\"state\":null,"
+ +
"\"canCalculateUpdates\":false,\"position\":0,\"total\":0,\"threadIds\":[],\"messageIds\":[\"1\",\"2\"]},"
+ + "\"#0\"]]"));
+ }
+
+ @Test
+ public void getMessageListShouldReturnSkipMessagesWhenPositionIsGiven()
throws Exception {
+ String user = "user";
+
jmapServer.serverProbe().createMailbox(MailboxConstants.USER_NAMESPACE, user,
"mailbox");
+
+ LocalDate date = LocalDate.now();
+ jmapServer.serverProbe().appendMessage(user, new
MailboxPath(MailboxConstants.USER_NAMESPACE, user, "mailbox"),
+ new ByteArrayInputStream("Subject:
test\r\n\r\ntestmail".getBytes()), new Date(date.plusDays(1).toEpochDay()),
false, new Flags());
+ jmapServer.serverProbe().appendMessage(user, new
MailboxPath(MailboxConstants.USER_NAMESPACE, user, "mailbox"),
+ new ByteArrayInputStream("Subject:
test2\r\n\r\ntestmail".getBytes()), new Date(date.toEpochDay()), false, new
Flags());
+ embeddedElasticSearch.awaitForElasticSearch();
+
+ given()
+ .accept(ContentType.JSON)
+ .contentType(ContentType.JSON)
+ .header("Authorization", accessToken.serialize())
+ .body("[[\"getMessageList\", {\"position\":1}, \"#0\"]]")
+ .when()
+ .post("/jmap")
+ .then()
+ .statusCode(200)
+ .content(startsWith("[[\"getMessageList\","
+ +
"{\"accountId\":null,\"filter\":null,\"sort\":[],\"collapseThreads\":false,\"state\":null,"
+ +
"\"canCalculateUpdates\":false,\"position\":0,\"total\":0,\"threadIds\":[],\"messageIds\":[\"2\"]},"
+ + "\"#0\"]]"));
+ }
}
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=1719386&r1=1719385&r2=1719386&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
Fri Dec 11 12:33:38 2015
@@ -96,6 +96,7 @@ public class GetMessageListMethod<Id ext
.map(mailboxPath -> getMessages(mailboxPath, mailboxSession))
.flatMap(List::stream)
.sorted(comparatorFor(jmapRequest))
+ .skip(jmapRequest.getPosition())
.map(Message::getUid)
.map(String::valueOf)
.forEach(builder::messageId);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]