Author: matthieu
Date: Fri Dec 11 12:31:07 2015
New Revision: 1719371
URL: http://svn.apache.org/viewvc?rev=1719371&view=rev
Log:
JAMES-1644 use a type for method name
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/JmapResponse.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/ProtocolRequest.java
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolResponse.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/RequestHandlerTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolRequestTest.java
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolResponseTest.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=1719371&r1=1719370&r2=1719371&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:07 2015
@@ -45,7 +45,8 @@ public class GetMailboxesMethod<Id exten
private static final boolean DONT_RESET_RECENT = false;
private static final Logger LOGGER =
LoggerFactory.getLogger(GetMailboxesMethod.class);
-
+ private static final Method.Name METHOD_NAME = Method.name("getMailboxes");
+
private final MailboxManager mailboxManager;
private final MailboxMapperFactory<Id> mailboxMapperFactory;
@@ -56,8 +57,8 @@ public class GetMailboxesMethod<Id exten
}
@Override
- public String methodName() {
- return "getMailboxes";
+ public Name methodName() {
+ return METHOD_NAME;
}
@Override
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponse.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponse.java?rev=1719371&r1=1719370&r2=1719371&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponse.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/JmapResponse.java
Fri Dec 11 12:31:07 2015
@@ -36,15 +36,15 @@ public class JmapResponse {
public static class Builder {
- private String method;
+ private Method.Name method;
private ClientId id;
private Object response;
private Builder() {
}
- public Builder method(String method) {
- this.method = method;
+ public Builder method(Method.Name name) {
+ this.method = name;
return this;
}
@@ -88,19 +88,19 @@ public class JmapResponse {
}
@VisibleForTesting static final String DEFAULT_ERROR_MESSAGE = "Error
while processing";
- @VisibleForTesting static final String ERROR_METHOD = "error";
+ @VisibleForTesting static final Method.Name ERROR_METHOD =
Method.name("error");
- private final String method;
+ private final Method.Name method;
private final ClientId clientId;
private final Object response;
- private JmapResponse(String method, ClientId clientId, Object response) {
+ private JmapResponse(Method.Name method, ClientId clientId, Object
response) {
this.method = method;
this.clientId = clientId;
this.response = response;
}
- public String getMethod() {
+ public Method.Name getMethod() {
return method;
}
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=1719371&r1=1719370&r2=1719371&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:07 2015
@@ -19,11 +19,57 @@
package org.apache.james.jmap.methods;
+import static com.google.common.base.Objects.toStringHelper;
+
+import java.util.Objects;
+
import org.apache.james.mailbox.MailboxSession;
+import com.fasterxml.jackson.annotation.JsonValue;
+import com.google.common.base.Preconditions;
+
public interface Method {
- String methodName();
+ public static Name name(String name) {
+ return new Name(name);
+ }
+
+ public class Name {
+
+ private final String name;
+
+ private Name(String name) {
+ Preconditions.checkNotNull(name);
+ Preconditions.checkArgument(!name.isEmpty());
+ this.name = name;
+ }
+
+ @JsonValue
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj instanceof Name) {
+ Name other = (Name) obj;
+ return Objects.equals(name, other.name);
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public String toString() {
+ return toStringHelper(this).add("name", name).toString();
+ }
+ }
+
+ Name methodName();
Class<? extends JmapRequest> requestType();
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=1719371&r1=1719370&r2=1719371&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:07 2015
@@ -38,7 +38,7 @@ public class RequestHandler {
private final JmapRequestParser jmapRequestParser;
private final JmapResponseWriter jmapResponseWriter;
- private final Map<String, Method> methods;
+ private final Map<Method.Name, Method> methods;
@Inject
public RequestHandler(Set<Method> methods, JmapRequestParser
jmapRequestParser, JmapResponseWriter jmapResponseWriter) {
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java?rev=1719371&r1=1719370&r2=1719371&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolRequest.java
Fri Dec 11 12:31:07 2015
@@ -18,6 +18,8 @@
****************************************************************/
package org.apache.james.jmap.model;
+import org.apache.james.jmap.methods.Method;
+
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Preconditions;
@@ -29,20 +31,20 @@ public class ProtocolRequest {
Preconditions.checkState(json[0].isTextual(), "first element should be
a String");
Preconditions.checkState(json[1].isObject(), "second element should be
a Json");
Preconditions.checkState(json[2].isTextual(), "third element should be
a String");
- return new ProtocolRequest(json[0].textValue(), (ObjectNode) json[1],
ClientId.of(json[2].textValue()));
+ return new ProtocolRequest(Method.name(json[0].textValue()),
(ObjectNode) json[1], ClientId.of(json[2].textValue()));
}
- private final String method;
+ private final Method.Name method;
private final ObjectNode parameters;
private final ClientId clientId;
- protected ProtocolRequest(String method, ObjectNode parameters, ClientId
clientId) {
+ protected ProtocolRequest(Method.Name method, ObjectNode parameters,
ClientId clientId) {
this.method = method;
this.parameters = parameters;
this.clientId = clientId;
}
- public String getMethod() {
+ public Method.Name getMethod() {
return method;
}
Modified:
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolResponse.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolResponse.java?rev=1719371&r1=1719370&r2=1719371&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolResponse.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/ProtocolResponse.java
Fri Dec 11 12:31:07 2015
@@ -18,26 +18,27 @@
****************************************************************/
package org.apache.james.jmap.model;
+import org.apache.james.jmap.methods.Method;
+
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.base.Preconditions;
public class ProtocolResponse {
- private final String method;
+ private final Method.Name method;
private final ObjectNode results;
private final ClientId clientId;
- public ProtocolResponse(String method, ObjectNode results, ClientId
clientId) {
- Preconditions.checkNotNull(method, "method is mandatory");
+ public ProtocolResponse(Method.Name name, ObjectNode results, ClientId
clientId) {
+ Preconditions.checkNotNull(name, "method is mandatory");
Preconditions.checkNotNull(results, "results is mandatory");
Preconditions.checkNotNull(clientId, "clientId is mandatory");
- Preconditions.checkArgument(!method.isEmpty(), "method is mandatory");
- this.method = method;
+ this.method = name;
this.results = results;
this.clientId = clientId;
}
- public String getMethod() {
+ public Method.Name getMethod() {
return method;
}
Modified:
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java?rev=1719371&r1=1719370&r2=1719371&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/JMAPServletTest.java
Fri Dec 11 12:31:07 2015
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.when;
import org.apache.james.http.jetty.Configuration;
import org.apache.james.http.jetty.JettyHttpServer;
+import org.apache.james.jmap.methods.Method;
import org.apache.james.jmap.methods.RequestHandler;
import org.apache.james.jmap.model.ClientId;
import org.apache.james.jmap.model.ProtocolResponse;
@@ -90,7 +91,7 @@ public class JMAPServletTest {
json.put("type", "invalidArgument");
when(requestHandler.handle(any()))
- .thenReturn(new ProtocolResponse("error", json,
ClientId.of("#0")));
+ .thenReturn(new ProtocolResponse(Method.name("error"), json,
ClientId.of("#0")));
given()
.accept(ContentType.JSON)
@@ -114,7 +115,7 @@ public class JMAPServletTest {
arrayNode.add(list);
when(requestHandler.handle(any()))
- .thenReturn(new ProtocolResponse("accounts", json,
ClientId.of("#0")));
+ .thenReturn(new ProtocolResponse(Method.name("accounts"), json,
ClientId.of("#0")));
given()
.accept(ContentType.JSON)
Modified:
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java?rev=1719371&r1=1719370&r2=1719371&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/JmapResponseWriterImplTest.java
Fri Dec 11 12:31:07 2015
@@ -82,7 +82,7 @@ public class JmapResponseWriterImplTest
.response(responseClass)
.build());
- assertThat(response.getMethod()).isEqualTo(expectedMethod);
+
assertThat(response.getMethod()).isEqualTo(Method.name(expectedMethod));
assertThat(response.getResults().findValue("id").asText()).isEqualTo(expectedId);
assertThat(response.getClientId()).isEqualTo(ClientId.of(expectedClientId));
}
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=1719371&r1=1719370&r2=1719371&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:07 2015
@@ -84,13 +84,15 @@ public class RequestHandlerTest {
public static class TestMethod implements Method {
+ private static final Method.Name METHOD_NAME =
Method.name("testMethod");
+
@Inject
@VisibleForTesting TestMethod() {
}
@Override
- public String methodName() {
- return "testMethod";
+ public Name methodName() {
+ return METHOD_NAME;
}
@Override
@@ -146,8 +148,8 @@ public class RequestHandlerTest {
public void requestHandlerShouldThrowWhenTwoMethodsWithSameName() {
new RequestHandler(
ImmutableSet.of(
- new NamedMethod("name"),
- new NamedMethod("name")),
+ new NamedMethod(Method.name("name")),
+ new NamedMethod(Method.name("name"))),
jmapRequestParser,
jmapResponseWriter);
}
@@ -156,23 +158,23 @@ public class RequestHandlerTest {
public void requestHandlerMayBeCreatedWhenTwoMethodsWithDifferentName() {
new RequestHandler(
ImmutableSet.of(
- new NamedMethod("name"),
- new NamedMethod("name2")),
+ new NamedMethod(Method.name("name")),
+ new NamedMethod(Method.name("name2"))),
jmapRequestParser,
jmapResponseWriter);
}
private class NamedMethod implements Method {
- private final String methodName;
+ private final Name methodName;
- public NamedMethod(String methodName) {
+ public NamedMethod(Method.Name methodName) {
this.methodName = methodName;
}
@Override
- public String methodName() {
+ public Name methodName() {
return methodName;
}
Modified:
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolRequestTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolRequestTest.java?rev=1719371&r1=1719370&r2=1719371&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolRequestTest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolRequestTest.java
Fri Dec 11 12:31:07 2015
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Asser
import java.io.IOException;
+import org.apache.james.jmap.methods.Method;
import org.junit.Test;
import com.fasterxml.jackson.core.JsonParseException;
@@ -86,7 +87,7 @@ public class ProtocolRequestTest {
ProtocolRequest request = ProtocolRequest.deserialize(nodes);
- assertThat(request.getMethod()).isEqualTo("getAccounts");
+ assertThat(request.getMethod()).isEqualTo(Method.name("getAccounts"));
assertThat(request.getParameters()).isNotNull();
assertThat(request.getClientId()).isEqualTo(ClientId.of("#1"));
}
Modified:
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolResponseTest.java
URL:
http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolResponseTest.java?rev=1719371&r1=1719370&r2=1719371&view=diff
==============================================================================
---
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolResponseTest.java
(original)
+++
james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/ProtocolResponseTest.java
Fri Dec 11 12:31:07 2015
@@ -21,6 +21,7 @@ package org.apache.james.jmap.model;
import static org.assertj.core.api.Assertions.assertThat;
+import org.apache.james.jmap.methods.Method;
import org.junit.Test;
import com.fasterxml.jackson.databind.node.JsonNodeFactory;
@@ -35,22 +36,22 @@ public class ProtocolResponseTest {
@Test(expected=IllegalArgumentException.class)
public void newInstanceShouldThrowWhenMethodIsEmpty() {
- new ProtocolResponse("", new ObjectNode(JsonNodeFactory.instance),
ClientId.of("id"));
+ new ProtocolResponse(Method.name(""), new
ObjectNode(JsonNodeFactory.instance), ClientId.of("id"));
}
@Test(expected=NullPointerException.class)
public void newInstanceShouldThrowWhenResultsIsNull() {
- new ProtocolResponse("method", null, ClientId.of("id"));
+ new ProtocolResponse(Method.name("method"), null, ClientId.of("id"));
}
@Test(expected=NullPointerException.class)
public void newInstanceShouldThrowWhenClientIdIsNull() {
- new ProtocolResponse("method", new ObjectNode(new
JsonNodeFactory(false)).putObject("{}"), null);
+ new ProtocolResponse(Method.name("method"), new ObjectNode(new
JsonNodeFactory(false)).putObject("{}"), null);
}
@Test
public void asProtocolSpecificationShouldReturnAnArrayWithThreeElements() {
- Object[] asProtocolSpecification = new ProtocolResponse("method", new
ObjectNode(new JsonNodeFactory(false)).putObject("{}"), ClientId.of("#1"))
+ Object[] asProtocolSpecification = new
ProtocolResponse(Method.name("method"), new ObjectNode(new
JsonNodeFactory(false)).putObject("{}"), ClientId.of("#1"))
.asProtocolSpecification();
assertThat(asProtocolSpecification).hasSize(3);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]