Author: matthieu
Date: Fri Dec 11 12:31:24 2015
New Revision: 1719373

URL: http://svn.apache.org/viewvc?rev=1719373&view=rev
Log:
JAMES-1644 build JmapResponse in MethodHandler

        That way, error handling is done only in MethodHandler by catching
        exceptions and we no longer need to pass ResponseBuilder to 
Method.process

Modified:
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java
    
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesResponse.java
    
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java?rev=1719373&r1=1719372&r2=1719373&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMailboxesMethod.java
 Fri Dec 11 12:31:24 2015
@@ -40,6 +40,7 @@ import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
+import com.google.common.base.Throwables;
 
 public class GetMailboxesMethod<Id extends MailboxId> implements Method {
     
@@ -66,13 +67,13 @@ public class GetMailboxesMethod<Id exten
         return GetMailboxesRequest.class;
     }
     
-    public JmapResponse process(JmapRequest request, MailboxSession 
mailboxSession, JmapResponse.Builder responseBuilder) {
+    @Override
+    public GetMailboxesResponse process(JmapRequest request, MailboxSession 
mailboxSession) {
         Preconditions.checkArgument(request instanceof GetMailboxesRequest);
         try {
-            responseBuilder.response(getMailboxesResponse(mailboxSession));
-            return responseBuilder.build();
+            return getMailboxesResponse(mailboxSession);
         } catch (MailboxException e) {
-            return responseBuilder.error().build();
+            throw Throwables.propagate(e);
         }
     }
 

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java?rev=1719373&r1=1719372&r2=1719373&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/Method.java
 Fri Dec 11 12:31:24 2015
@@ -30,6 +30,8 @@ import com.google.common.base.Preconditi
 
 public interface Method {
 
+    interface Response {};
+    
     public static Name name(String name) {
         return new Name(name);
     }
@@ -73,6 +75,6 @@ public interface Method {
 
     Class<? extends JmapRequest> requestType();
     
-    JmapResponse process(JmapRequest request, MailboxSession mailboxSession, 
JmapResponse.Builder responseBuilder);
+    Response process(JmapRequest request, MailboxSession mailboxSession);
 
 }

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java?rev=1719373&r1=1719372&r2=1719373&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/RequestHandler.java
 Fri Dec 11 12:31:24 2015
@@ -61,7 +61,9 @@ public class RequestHandler {
         return (Method method) -> {
                     try {
                         JmapRequest jmapRequest = 
jmapRequestParser.extractJmapRequest(request, method.requestType());
-                        return method.process(jmapRequest, mailboxSession, 
responseBuilder);
+                        return responseBuilder
+                                .response(method.process(jmapRequest, 
mailboxSession))
+                                .build();
                     } catch (IOException e) {
                         if (e.getCause() instanceof NotImplementedException) {
                             return responseBuilder.error("Not yet 
implemented").build();

Modified: 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesResponse.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesResponse.java?rev=1719373&r1=1719372&r2=1719373&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesResponse.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/GetMailboxesResponse.java
 Fri Dec 11 12:31:24 2015
@@ -22,10 +22,11 @@ import java.util.List;
 import java.util.Optional;
 
 import org.apache.commons.lang.NotImplementedException;
+import org.apache.james.jmap.methods.Method;
 
 import com.google.common.collect.ImmutableList;
 
-public class GetMailboxesResponse {
+public class GetMailboxesResponse implements Method.Response {
 
     public static Builder builder() {
         return new Builder();

Modified: 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
URL: 
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java?rev=1719373&r1=1719372&r2=1719373&view=diff
==============================================================================
--- 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
 (original)
+++ 
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
 Fri Dec 11 12:31:24 2015
@@ -25,7 +25,6 @@ import static org.assertj.core.api.Asser
 import javax.inject.Inject;
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.james.jmap.methods.JmapResponse.Builder;
 import org.apache.james.jmap.model.AuthenticatedProtocolRequest;
 import org.apache.james.jmap.model.ProtocolRequest;
 import org.apache.james.jmap.model.ProtocolResponse;
@@ -57,7 +56,7 @@ public class RequestHandlerTest {
         }
     }
 
-    public static class TestJmapResponse {
+    public static class TestJmapResponse implements Method.Response {
 
         private final String id;
         private final String name;
@@ -101,12 +100,10 @@ public class RequestHandlerTest {
         }
 
         @Override
-        public JmapResponse process(JmapRequest request, MailboxSession 
mailboxSession, Builder responseBuilder) {
+        public TestJmapResponse process(JmapRequest request, MailboxSession 
mailboxSession) {
             Preconditions.checkArgument(request instanceof TestJmapRequest);
             TestJmapRequest typedRequest = (TestJmapRequest) request;
-            return responseBuilder
-                        .response(new TestJmapResponse(typedRequest.getId(), 
typedRequest.getName(), "works"))
-                        .build();
+            return new TestJmapResponse(typedRequest.getId(), 
typedRequest.getName(), "works");
         }
     }
 
@@ -184,7 +181,7 @@ public class RequestHandlerTest {
         }
         
         @Override
-        public JmapResponse process(JmapRequest request, MailboxSession 
mailboxSession, Builder responseBuilder) {
+        public Method.Response process(JmapRequest request, MailboxSession 
mailboxSession) {
             return null;
         }
     }



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

Reply via email to