You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2017/07/31 07:45:37 UTC

[7/7] james-project git commit: JAMES-2099 Swagger API for User and Domains

JAMES-2099 Swagger API for User and Domains


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

Branch: refs/heads/master
Commit: 9ed12378ac12f5318cf5a3b5daa215023fb37930
Parents: 5c2baa7
Author: quynhn <qn...@linagora.com>
Authored: Wed Jul 26 15:21:20 2017 +0700
Committer: quynhn <qn...@linagora.com>
Committed: Mon Jul 31 10:57:08 2017 +0700

----------------------------------------------------------------------
 .../james/webadmin/routes/DomainRoutes.java     | 83 ++++++++++++++++++--
 .../james/webadmin/routes/UserRoutes.java       | 69 +++++++++++++++-
 2 files changed, 143 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9ed12378/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainRoutes.java
index 2008278..60c8952 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/DomainRoutes.java
@@ -21,13 +21,26 @@ package org.apache.james.webadmin.routes;
 
 import static org.apache.james.webadmin.Constants.SEPARATOR;
 
+import java.util.List;
 import javax.inject.Inject;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.api.DomainListException;
 import org.apache.james.webadmin.Constants;
 import org.apache.james.webadmin.Routes;
 import org.apache.james.webadmin.utils.JsonTransformer;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,6 +51,9 @@ import spark.Request;
 import spark.Response;
 import spark.Service;
 
+@Api(tags = "Domains")
+@Path(DomainRoutes.DOMAINS)
+@Produces("application/json")
 public class DomainRoutes implements Routes {
 
     private static final String DOMAIN_NAME = ":domainName";
@@ -50,6 +66,7 @@ public class DomainRoutes implements Routes {
 
     private final DomainList domainList;
     private final JsonTransformer jsonTransformer;
+    private Service service;
 
     @Inject
     public DomainRoutes(DomainList domainList, JsonTransformer jsonTransformer) {
@@ -59,17 +76,73 @@ public class DomainRoutes implements Routes {
 
     @Override
     public void define(Service service) {
-        service.get(DOMAINS,
-            (request, response) -> domainList.getDomains(),
-            jsonTransformer);
+        this.service = service;
 
-        service.get(SPECIFIC_DOMAIN, this::exists);
+        defineGetDomains();
 
-        service.put(SPECIFIC_DOMAIN, this::addDomain);
+        defineDomainExists();
+
+        defineAddDomain();
 
+        defineDeleteDomain();
+    }
+
+    @DELETE
+    @Path("/{domainName}")
+    @ApiOperation(value = "Deleting a domain")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, dataType = "string", name = "domainName", paramType = "path")
+    })
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "OK. Domain is removed."),
+            @ApiResponse(code = 500, message = "Internal server error - Something went bad on the server side.")
+    })
+    public void defineDeleteDomain() {
         service.delete(SPECIFIC_DOMAIN, this::removeDomain);
     }
 
+    @PUT
+    @Path("/{domainName}")
+    @ApiOperation(value = "Creating new domain")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, dataType = "string", name = "domainName", paramType = "path")
+    })
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "OK. New domain is created."),
+            @ApiResponse(code = 400, message = "Invalid request for domain creation"),
+            @ApiResponse(code = 500, message = "Internal server error - Something went bad on the server side.")
+    })
+    public void defineAddDomain() {
+        service.put(SPECIFIC_DOMAIN, this::addDomain);
+    }
+
+    @GET
+    @Path("/{domainName}")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, dataType = "string", name = "domainName", paramType = "path")
+    })
+    @ApiOperation(value = "Testing existence of a domain.")
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "The domain exists", response = String.class),
+            @ApiResponse(code = 404, message = "The domain does not exist."),
+            @ApiResponse(code = 500, message = "Internal server error - Something went bad on the server side.")
+    })
+    public void defineDomainExists() {
+        service.get(SPECIFIC_DOMAIN, this::exists);
+    }
+
+    @GET
+    @ApiOperation(value = "Getting all domains")
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "OK", response = List.class),
+            @ApiResponse(code = 500, message = "Internal server error - Something went bad on the server side.")
+    })
+    public void defineGetDomains() {
+        service.get(DOMAINS,
+            (request, response) -> domainList.getDomains(),
+            jsonTransformer);
+    }
+
     private String removeDomain(Request request, Response response) {
         try {
             String domain = request.params(DOMAIN_NAME);

http://git-wip-us.apache.org/repos/asf/james-project/blob/9ed12378/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java
index 0ead90a..9c73542 100644
--- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java
+++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/UserRoutes.java
@@ -22,15 +22,28 @@ package org.apache.james.webadmin.routes;
 import static org.apache.james.webadmin.Constants.SEPARATOR;
 
 import javax.inject.Inject;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.PUT;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
 
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.webadmin.Constants;
 import org.apache.james.webadmin.Routes;
 import org.apache.james.webadmin.dto.AddUserRequest;
+import org.apache.james.webadmin.dto.UserResponse;
 import org.apache.james.webadmin.service.UserService;
 import org.apache.james.webadmin.utils.JsonExtractException;
 import org.apache.james.webadmin.utils.JsonExtractor;
 import org.apache.james.webadmin.utils.JsonTransformer;
+
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -38,6 +51,9 @@ import spark.Request;
 import spark.Response;
 import spark.Service;
 
+@Api(tags = "Users")
+@Path(UserRoutes.USERS)
+@Produces("application/json")
 public class UserRoutes implements Routes {
 
     private static final String USER_NAME = ":userName";
@@ -49,6 +65,8 @@ public class UserRoutes implements Routes {
     private final JsonTransformer jsonTransformer;
     private final JsonExtractor<AddUserRequest> jsonExtractor;
 
+    private Service service;
+
     @Inject
     public UserRoutes(UserService userService, JsonTransformer jsonTransformer) {
         this.userService = userService;
@@ -58,15 +76,58 @@ public class UserRoutes implements Routes {
 
     @Override
     public void define(Service service) {
-        service.get(USERS,
-            (request, response) -> userService.getUsers(),
-            jsonTransformer);
+        this.service = service;
 
-        service.put(USERS + SEPARATOR + USER_NAME, this::upsertUser);
+        defineGetUsers();
+
+        defineCreateUser();
+
+        defineDeleteUser();
+    }
 
+    @DELETE
+    @Path("/{username}")
+    @ApiOperation(value = "Deleting an user")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, dataType = "string", name = "username", paramType = "path")
+    })
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "OK. User is removed."),
+            @ApiResponse(code = 400, message = "Invalid input user."),
+            @ApiResponse(code = 500, message = "Internal server error - Something went bad on the server side.")
+    })
+    public void defineDeleteUser() {
         service.delete(USERS + SEPARATOR + USER_NAME, this::removeUser);
     }
 
+    @PUT
+    @Path("/{username}")
+    @ApiOperation(value = "Creating an user")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = true, dataType = "string", name = "username", paramType = "path"),
+            @ApiImplicitParam(required = true, dataType = "org.apache.james.webadmin.dto.AddUserRequest", paramType = "body")
+    })
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "OK. New user is added."),
+            @ApiResponse(code = 400, message = "Invalid input user."),
+            @ApiResponse(code = 500, message = "Internal server error - Something went bad on the server side.")
+    })
+    public void defineCreateUser() {
+        service.put(USERS + SEPARATOR + USER_NAME, this::upsertUser);
+    }
+
+    @GET
+    @ApiOperation(value = "Getting all users")
+    @ApiResponses(value = {
+            @ApiResponse(code = 204, message = "OK.", response = UserResponse.class),
+            @ApiResponse(code = 500, message = "Internal server error - Something went bad on the server side.")
+    })
+    public void defineGetUsers() {
+        service.get(USERS,
+            (request, response) -> userService.getUsers(),
+            jsonTransformer);
+    }
+
     private String removeUser(Request request, Response response) {
         String username = request.params(USER_NAME);
         try {


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org