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