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 ma...@apache.org on 2016/02/15 13:54:56 UTC
[06/15] james-project git commit: fixup! JAMES-1676
setMessages/update: moved json parsing
fixup! JAMES-1676 setMessages/update: moved json parsing
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/bec76243
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/bec76243
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/bec76243
Branch: refs/heads/master
Commit: bec76243665ccc377fff33bfe322958c3520cfd1
Parents: 35b62b2
Author: Fabien Vignon <fv...@linagora.com>
Authored: Thu Feb 11 17:51:40 2016 +0100
Committer: Fabien Vignon <fv...@linagora.com>
Committed: Thu Feb 11 17:51:40 2016 +0100
----------------------------------------------------------------------
.../jmap/methods/SetMessagesMethodTest.java | 87 +++++++++-----------
.../methods/SetMessagesUpdateProcessor.java | 20 ++---
.../james/jmap/model/SetMessagesRequest.java | 2 +-
.../jmap/model/UpdateMessagePatchTest.java | 3 +-
4 files changed, 49 insertions(+), 63 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/bec76243/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
index 97be3d4..b94fecd 100644
--- a/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/src/test/java/org/apache/james/jmap/methods/SetMessagesMethodTest.java
@@ -31,7 +31,6 @@ import static org.hamcrest.Matchers.hasKey;
import static org.hamcrest.Matchers.hasSize;
import static org.hamcrest.Matchers.isEmptyOrNullString;
import static org.hamcrest.Matchers.not;
-import static org.hamcrest.Matchers.startsWith;
import static org.hamcrest.collection.IsMapWithSize.aMapWithSize;
import static org.hamcrest.collection.IsMapWithSize.anEmptyMap;
@@ -47,6 +46,7 @@ import org.apache.james.mailbox.elasticsearch.EmbeddedElasticSearch;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.mailbox.model.MailboxPath;
+
import org.junit.Ignore;
import com.google.common.base.Charsets;
@@ -331,15 +331,13 @@ public abstract class SetMessagesMethodTest {
}
private ResponseSpecification getSetMessagesUpdateOKResponseAssertions(String messageId) {
- String responseHeaderPath = "[0][0]";
- String responseBodyBasePath = "[0][1]";
ResponseSpecBuilder builder = new ResponseSpecBuilder()
.expectStatusCode(200)
- .expectBody(responseHeaderPath, equalTo("messagesSet"))
- .expectBody(responseBodyBasePath +".updated", hasSize(1))
- .expectBody(responseBodyBasePath +".updated", contains(messageId))
- .expectBody(responseBodyBasePath +".error", isEmptyOrNullString())
- .expectBody(responseBodyBasePath +".notUpdated", not(hasKey(messageId)));
+ .expectBody(NAME, equalTo("messagesSet"))
+ .expectBody(ARGUMENTS + ".updated", hasSize(1))
+ .expectBody(ARGUMENTS + ".updated", contains(messageId))
+ .expectBody(ARGUMENTS + ".error", isEmptyOrNullString())
+ .expectBody(ARGUMENTS + ".notUpdated", not(hasKey(messageId)));
return builder.build();
}
@@ -361,18 +359,17 @@ public abstract class SetMessagesMethodTest {
// When
.post("/jmap");
// Then
- given()
+ with()
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.header("Authorization", accessToken.serialize())
.body("[[\"getMessages\", {\"ids\": [\"" + presumedMessageId + "\"]}, \"#0\"]]")
- .when()
.post("/jmap")
.then()
.statusCode(200)
- .body("[0][0]", equalTo("messages"))
- .body("[0][1].list", hasSize(1))
- .body("[0][1].list[0].isUnread", equalTo(false))
+ .body(NAME, equalTo("messages"))
+ .body(ARGUMENTS + ".list", hasSize(1))
+ .body(ARGUMENTS + ".list[0].isUnread", equalTo(false))
.log().ifValidationFails();
}
@@ -418,17 +415,16 @@ public abstract class SetMessagesMethodTest {
// When
.post("/jmap");
// Then
- given()
+ with()
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.header("Authorization", accessToken.serialize())
.body("[[\"getMessages\", {\"ids\": [\"" + presumedMessageId + "\"]}, \"#0\"]]")
- .when()
.post("/jmap")
.then()
- .body("[0][0]", equalTo("messages"))
- .body("[0][1].list", hasSize(1))
- .body("[0][1].list[0].isUnread", equalTo(true))
+ .body(NAME, equalTo("messages"))
+ .body(ARGUMENTS + ".list", hasSize(1))
+ .body(ARGUMENTS + ".list[0].isUnread", equalTo(true))
.log().ifValidationFails();
}
@@ -475,17 +471,16 @@ public abstract class SetMessagesMethodTest {
// When
.post("/jmap");
// Then
- given()
+ with()
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.header("Authorization", accessToken.serialize())
.body("[[\"getMessages\", {\"ids\": [\"" + presumedMessageId + "\"]}, \"#0\"]]")
- .when()
.post("/jmap")
.then()
- .body("[0][0]", equalTo("messages"))
- .body("[0][1].list", hasSize(1))
- .body("[0][1].list[0].isFlagged", equalTo(true))
+ .body(NAME, equalTo("messages"))
+ .body(ARGUMENTS + ".list", hasSize(1))
+ .body(ARGUMENTS + ".list[0].isFlagged", equalTo(true))
.log().ifValidationFails();
}
@@ -509,13 +504,13 @@ public abstract class SetMessagesMethodTest {
.then()
.log().ifValidationFails()
.statusCode(200)
- .body("[0][0]", equalTo("messagesSet"))
- .body("[0][1].notUpdated", hasKey(messageId))
- .body("[0][1].notUpdated[\""+messageId+"\"].type", equalTo("invalidProperties"))
- .body("[0][1].notUpdated[\""+messageId+"\"].properties[0]", equalTo("isUnread"))
- .body("[0][1].notUpdated[\""+messageId+"\"].description", startsWith("isUnread: Can not construct instance of java.lang.Boolean from String value '123': only \"true\" or \"false\" recognized\n" +
+ .body(NAME, equalTo("messagesSet"))
+ .body(ARGUMENTS + ".notUpdated", hasKey(messageId))
+ .body(ARGUMENTS + ".notUpdated[\""+messageId+"\"].type", equalTo("invalidProperties"))
+ .body(ARGUMENTS + ".notUpdated[\""+messageId+"\"].properties[0]", equalTo("isUnread"))
+ .body(ARGUMENTS + ".notUpdated[\""+messageId+"\"].description", equalTo("isUnread: Can not construct instance of java.lang.Boolean from String value '123': only \"true\" or \"false\" recognized\n" +
" at [Source: {\"isUnread\":\"123\"}; line: 1, column: 2] (through reference chain: org.apache.james.jmap.model.Builder[\"isUnread\"])"))
- .body("[0][1].updated", hasSize(0));
+ .body(ARGUMENTS + ".updated", hasSize(0));
}
@Test
@@ -539,14 +534,13 @@ public abstract class SetMessagesMethodTest {
.then()
.log().ifValidationFails()
.statusCode(200)
- .body("[0][0]", equalTo("messagesSet"))
- .body("[0][1].notUpdated", hasKey(messageId))
- .body("[0][1].notUpdated[\""+messageId+"\"].type", equalTo("invalidProperties"))
- .body("[0][1].notUpdated[\""+messageId+"\"].properties", hasSize(2))
- .body("[0][1].notUpdated[\""+messageId+"\"].properties[0]", equalTo("isUnread"))
- .body("[0][1].notUpdated[\""+messageId+"\"].properties[1]", equalTo("isFlagged"))
- // .body("[0][1].notUpdated[\""+messageId+"\"].description", startsWith("Can not construct instance of java.lang.Boolean from String value '123': only \"true\" or \"false\" recognized"))
- .body("[0][1].updated", hasSize(0));
+ .body(NAME, equalTo("messagesSet"))
+ .body(ARGUMENTS + ".notUpdated", hasKey(messageId))
+ .body(ARGUMENTS + ".notUpdated[\""+messageId+"\"].type", equalTo("invalidProperties"))
+ .body(ARGUMENTS + ".notUpdated[\""+messageId+"\"].properties", hasSize(2))
+ .body(ARGUMENTS + ".notUpdated[\""+messageId+"\"].properties[0]", equalTo("isUnread"))
+ .body(ARGUMENTS + ".notUpdated[\""+messageId+"\"].properties[1]", equalTo("isFlagged"))
+ .body(ARGUMENTS + ".updated", hasSize(0));
}
@Test
@@ -591,17 +585,16 @@ public abstract class SetMessagesMethodTest {
// When
.post("/jmap");
// Then
- given()
+ with()
.accept(ContentType.JSON)
.contentType(ContentType.JSON)
.header("Authorization", accessToken.serialize())
.body("[[\"getMessages\", {\"ids\": [\"" + presumedMessageId + "\"]}, \"#0\"]]")
- .when()
.post("/jmap")
.then()
- .body("[0][0]", equalTo("messages"))
- .body("[0][1].list", hasSize(1))
- .body("[0][1].list[0].isAnswered", equalTo(true))
+ .body(NAME, equalTo("messages"))
+ .body(ARGUMENTS + ".list", hasSize(1))
+ .body(ARGUMENTS + ".list[0].isAnswered", equalTo(true))
.log().ifValidationFails();
}
@@ -621,10 +614,10 @@ public abstract class SetMessagesMethodTest {
.then()
.log().ifValidationFails()
.statusCode(200)
- .body("[0][0]", equalTo("messagesSet"))
- .body("[0][1].notUpdated", hasKey(nonExistingMessageId))
- .body("[0][1].notUpdated[\""+nonExistingMessageId+"\"].type", equalTo("notFound"))
- .body("[0][1].notUpdated[\""+nonExistingMessageId+"\"].description", equalTo("message not found"))
- .body("[0][1].updated", hasSize(0));
+ .body(NAME, equalTo("messagesSet"))
+ .body(ARGUMENTS + ".notUpdated", hasKey(nonExistingMessageId))
+ .body(ARGUMENTS + ".notUpdated[\""+nonExistingMessageId+"\"].type", equalTo("notFound"))
+ .body(ARGUMENTS + ".notUpdated[\""+nonExistingMessageId+"\"].description", equalTo("message not found"))
+ .body(ARGUMENTS + ".updated", hasSize(0));
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/bec76243/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 bec653e..458e748 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
@@ -21,7 +21,6 @@ package org.apache.james.jmap.methods;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
import java.util.NoSuchElementException;
import java.util.Set;
import java.util.stream.Collectors;
@@ -74,16 +73,12 @@ public class SetMessagesUpdateProcessor<Id extends MailboxId> {
public SetMessagesResponse processUpdates(SetMessagesRequest request, MailboxSession mailboxSession) {
SetMessagesResponse.Builder responseBuilder = SetMessagesResponse.builder();
-
- List<Map.Entry<MessageId, UpdateMessagePatch>> updatePatchesById = request.buildUpdatePatchs(updatePatchConverter)
- .entrySet().stream()
- .collect(Collectors.toList());
- updatePatchesById.stream()
- .filter(mwp -> ! mwp.getValue().isValid())
- .forEach(mwp -> handleInvalidRequest(responseBuilder, mwp.getKey(), mwp.getValue().getValidationErrors()));
- updatePatchesById.stream()
- .filter(mwp -> mwp.getValue().isValid())
- .forEach(e -> update(e.getKey(), e.getValue(), mailboxSession, responseBuilder));
+ request.buildUpdatePatches(updatePatchConverter).forEach( (id, patch) -> {
+ if (patch.isValid()) {
+ update(id, patch, mailboxSession, responseBuilder);
+ } else {
+ handleInvalidRequest(responseBuilder, id, patch.getValidationErrors());
+ }});
return responseBuilder.build();
}
@@ -110,8 +105,7 @@ public class SetMessagesUpdateProcessor<Id extends MailboxId> {
return messageMapper.updateFlags(mailbox, new FlagsUpdateCalculator(message.createFlags(),
MessageManager.FlagsUpdateMode.REPLACE),
MessageRange.one(messageId.getUid()))
- .hasNext()
- ;
+ .hasNext();
}
private void addMessageIdNotFoundToResponse(MessageId messageId, SetMessagesResponse.Builder builder) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/bec76243/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMessagesRequest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMessagesRequest.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMessagesRequest.java
index f53c918..ba81c35 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMessagesRequest.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMessagesRequest.java
@@ -121,7 +121,7 @@ public class SetMessagesRequest implements JmapRequest {
return create;
}
- public Map<MessageId, UpdateMessagePatch> buildUpdatePatchs(UpdateMessagePatchConverter converter) {
+ public Map<MessageId, UpdateMessagePatch> buildUpdatePatches(UpdateMessagePatchConverter converter) {
return Maps.transformValues(update, func -> func.apply(converter));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/bec76243/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
index 877fa87..cc98092 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
@@ -40,11 +40,10 @@ public class UpdateMessagePatchTest {
}
@Test
- public void builderShouldSetSeenFlagWhenBuiltWithIsUnreadFalse() {
+ public void builderShouldSetUnreadFalseWhenBuiltWithIsUnreadFalse() {
UpdateMessagePatch testee = UpdateMessagePatch.builder().isUnread(false).build();
assertThat(testee.isUnread()).isPresent();
assertThat(testee.isUnread().get()).isFalse();
- assertThat(testee.isFlagged()).isEmpty(); // belts and braces !
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org