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 <fvig...@linagora.com>
Authored: Thu Feb 11 17:51:40 2016 +0100
Committer: Fabien Vignon <fvig...@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-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to