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]

Reply via email to