Repository: james-project
Updated Branches:
  refs/heads/master 68ab61763 -> 8005257c4


JAMES-1715 Aggregate SetMailboxes processors response


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/169e7bfc
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/169e7bfc
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/169e7bfc

Branch: refs/heads/master
Commit: 169e7bfc1bddb83316b17cef56303b08103f102b
Parents: 68ab617
Author: Antoine Duprat <[email protected]>
Authored: Thu Mar 31 10:05:33 2016 +0200
Committer: Antoine Duprat <[email protected]>
Committed: Tue Apr 5 11:24:51 2016 +0200

----------------------------------------------------------------------
 .../methods/SetMailboxesCreationProcessor.java  |  2 +-
 .../james/jmap/methods/SetMailboxesMethod.java  | 20 ++++++++------
 .../james/jmap/model/SetMailboxesResponse.java  | 28 ++++++++++++++++++--
 .../jmap/methods/SetMailboxesMethodTest.java    |  2 +-
 4 files changed, 40 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/169e7bfc/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
index 205528f..fe6696b 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java
@@ -98,7 +98,7 @@ public class SetMailboxesCreationProcessor<Id extends 
MailboxId> implements SetM
             mailboxManager.createMailbox(mailboxPath, mailboxSession);
             Optional<Mailbox> mailbox = 
mailboxUtils.mailboxFromMailboxPath(mailboxPath, mailboxSession);
             if (mailbox.isPresent()) {
-                builder.creation(mailboxCreationId, mailbox.get());
+                builder.created(mailboxCreationId, mailbox.get());
                 creationIdsToCreatedMailboxId.put(mailboxCreationId, 
mailbox.get().getId());
             } else {
                 builder.notCreated(mailboxCreationId, SetError.builder()

http://git-wip-us.apache.org/repos/asf/james-project/blob/169e7bfc/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesMethod.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesMethod.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesMethod.java
index 51ae92f..f454bff 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesMethod.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesMethod.java
@@ -62,16 +62,20 @@ public class SetMailboxesMethod<Id extends MailboxId> 
implements Method {
         Preconditions.checkNotNull(mailboxSession);
         Preconditions.checkArgument(request instanceof SetMailboxesRequest);
         SetMailboxesRequest setMailboxesRequest = (SetMailboxesRequest) 
request;
-        return processors.stream()
-            .map(processor -> processor.process(setMailboxesRequest, 
mailboxSession))
-            .map(response -> toJmapResponse(clientId, response));
+        return Stream.of(
+                JmapResponse.builder().clientId(clientId)
+                .response(setMailboxesResponse(setMailboxesRequest, 
mailboxSession))
+                .responseName(RESPONSE_NAME)
+                .build());
     }
 
-    private JmapResponse toJmapResponse(ClientId clientId, 
SetMailboxesResponse response) {
-        return JmapResponse.builder()
-                .clientId(clientId)
-                .responseName(RESPONSE_NAME)
-                .response(response)
+    private SetMailboxesResponse setMailboxesResponse(SetMailboxesRequest 
request, MailboxSession mailboxSession) {
+        return processors.stream()
+                .map(processor -> processor.process(request, mailboxSession))
+                .reduce(SetMailboxesResponse.builder(),
+                        (builder, resp) -> resp.mergeInto(builder) ,
+                        (builder1, builder2) -> 
builder2.build().mergeInto(builder1)
+                )
                 .build();
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/169e7bfc/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
index 2d38706..caeb42a 100644
--- 
a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
+++ 
b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/SetMailboxesResponse.java
@@ -23,6 +23,7 @@ import java.util.Map;
 import org.apache.james.jmap.methods.Method;
 import org.apache.james.jmap.model.mailbox.Mailbox;
 
+import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
 
 public class SetMailboxesResponse implements Method.Response {
@@ -41,11 +42,16 @@ public class SetMailboxesResponse implements 
Method.Response {
             notCreated = ImmutableMap.builder();
         }
 
-        public Builder creation(MailboxCreationId creationId, Mailbox mailbox) 
{
+        public Builder created(MailboxCreationId creationId, Mailbox mailbox) {
             created.put(creationId, mailbox);
             return this;
         }
 
+        public Builder created(ImmutableMap<MailboxCreationId, Mailbox> 
created) {
+            this.created.putAll(created);
+            return this;
+        }
+
         public Builder notCreated(Map<MailboxCreationId, SetError> notCreated) 
{
             this.notCreated.putAll(notCreated);
             return this;
@@ -59,7 +65,6 @@ public class SetMailboxesResponse implements Method.Response {
         public SetMailboxesResponse build() {
             return new SetMailboxesResponse(created.build(), 
notCreated.build());
         }
-
     }
 
     private final ImmutableMap<MailboxCreationId, Mailbox> created;
@@ -77,4 +82,23 @@ public class SetMailboxesResponse implements Method.Response 
{
     public Map<MailboxCreationId, SetError> getNotCreated() {
         return notCreated;
     }
+
+    public SetMailboxesResponse.Builder mergeInto(SetMailboxesResponse.Builder 
responseBuilder) {
+        return responseBuilder
+            .created(getCreated());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hashCode(created);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof SetMailboxesResponse) {
+            SetMailboxesResponse other = (SetMailboxesResponse) obj;
+            return Objects.equal(this.created, other.created);
+        }
+        return false;
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/169e7bfc/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
index 0019460..fcf2a2e 100644
--- 
a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
+++ 
b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/SetMailboxesMethodTest.java
@@ -93,7 +93,7 @@ public class SetMailboxesMethodTest {
         SetMailboxesRequest creationRequest = 
SetMailboxesRequest.builder().create(creationId, fooFolder).build();
 
         Mailbox createdfooFolder = 
Mailbox.builder().name("fooFolder").id("fooId").build();
-        SetMailboxesResponse creationResponse = 
SetMailboxesResponse.builder().creation(creationId, createdfooFolder).build();
+        SetMailboxesResponse creationResponse = 
SetMailboxesResponse.builder().created(creationId, createdfooFolder).build();
         JmapResponse jmapResponse = JmapResponse.builder()
             .response(creationResponse)
             .clientId(ClientId.of("clientId"))


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to