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