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]