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 2019/02/21 09:39:08 UTC
[james-project] 06/10: JAMES-2661 Swagger doc for
EventDeadLettersRoutes
This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 748d7199b299e1dda56a7aa4c755d6560ba6f3e6
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Feb 19 15:20:50 2019 +0700
JAMES-2661 Swagger doc for EventDeadLettersRoutes
---
.../webadmin/routes/EventDeadLettersRoutes.java | 87 ++++++++++++++++++++++
1 file changed, 87 insertions(+)
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
index a694279..f4718fe 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/EventDeadLettersRoutes.java
@@ -19,9 +19,14 @@
package org.apache.james.webadmin.routes;
+import java.util.List;
import java.util.UUID;
import javax.inject.Inject;
+import javax.ws.rs.DELETE;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
import org.apache.james.event.json.EventSerializer;
import org.apache.james.mailbox.events.Event;
@@ -34,10 +39,19 @@ import org.eclipse.jetty.http.HttpStatus;
import com.github.steveash.guavate.Guavate;
+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 spark.Request;
import spark.Response;
import spark.Service;
+@Api(tags = "EventDeadLetter")
+@Path("/events/deadLetter")
+@Produces("application/json")
public class EventDeadLettersRoutes implements Routes {
private static final String BASE_PATH = "/events/deadLetter";
private static final String GROUP_PARAM = ":group";
@@ -67,6 +81,13 @@ public class EventDeadLettersRoutes implements Routes {
service.delete(BASE_PATH + "/groups/" + GROUP_PARAM + "/events/" + EVENT_ID_PARAM, this::deleteEvent);
}
+ @GET
+ @Path("/groups")
+ @ApiOperation(value = "List groups")
+ @ApiResponses(value = {
+ @ApiResponse(code = HttpStatus.OK_200, message = "OK - list group names", response = List.class),
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "Internal server error - Something went bad on the server side.")
+ })
private Iterable<String> listGroups(Request request, Response response) {
return deadLetters.groupsWithFailedEvents()
.map(Group::asString)
@@ -74,6 +95,23 @@ public class EventDeadLettersRoutes implements Routes {
.block();
}
+ @GET
+ @Path("/groups/" + GROUP_PARAM + "/events")
+ @ApiOperation(value = "List failed events for a given group")
+ @ApiImplicitParams({
+ @ApiImplicitParam(
+ required = true,
+ name = "group",
+ paramType = "path parameter",
+ dataType = "String",
+ defaultValue = "none",
+ value = "Compulsory. Needs to be a valid group name")
+ })
+ @ApiResponses(value = {
+ @ApiResponse(code = HttpStatus.OK_200, message = "OK - list of failed eventIds for a given group", response = List.class),
+ @ApiResponse(code = HttpStatus.BAD_REQUEST_400, message = "Invalid group name"),
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "Internal server error - Something went bad on the server side.")
+ })
private Iterable<String> listFailedEvents(Request request, Response response) {
Group group = parseGroup(request);
return deadLetters.failedEventIds(group)
@@ -83,6 +121,31 @@ public class EventDeadLettersRoutes implements Routes {
.block();
}
+ @GET
+ @Path("/groups/" + GROUP_PARAM + "/events/" + EVENT_ID_PARAM)
+ @ApiOperation(value = "Returns an event detail")
+ @ApiImplicitParams({
+ @ApiImplicitParam(
+ required = true,
+ name = "group",
+ paramType = "path parameter",
+ dataType = "String",
+ defaultValue = "none",
+ value = "Compulsory. Needs to be a valid group name"),
+ @ApiImplicitParam(
+ required = true,
+ name = "eventId",
+ paramType = "path parameter",
+ dataType = "String",
+ defaultValue = "none",
+ value = "Compulsory. Needs to be a valid eventId")
+ })
+ @ApiResponses(value = {
+ @ApiResponse(code = HttpStatus.OK_200, message = "OK - returns an event detail", response = Event.class),
+ @ApiResponse(code = HttpStatus.BAD_REQUEST_400, message = "Invalid group name or event id"),
+ @ApiResponse(code = HttpStatus.NOT_FOUND_404, message = "No event with this eventId"),
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "Internal server error - Something went bad on the server side.")
+ })
private String getEventDetails(Request request, Response response) {
Group group = parseGroup(request);
Event.EventId eventId = parseEventId(request);
@@ -92,6 +155,30 @@ public class EventDeadLettersRoutes implements Routes {
.block();
}
+ @DELETE
+ @Path("/groups/" + GROUP_PARAM + "/events/" + EVENT_ID_PARAM)
+ @ApiOperation(value = "Deletes an event")
+ @ApiImplicitParams({
+ @ApiImplicitParam(
+ required = true,
+ name = "group",
+ paramType = "path parameter",
+ dataType = "String",
+ defaultValue = "none",
+ value = "Compulsory. Needs to be a valid group name"),
+ @ApiImplicitParam(
+ required = true,
+ name = "eventId",
+ paramType = "path parameter",
+ dataType = "String",
+ defaultValue = "none",
+ value = "Compulsory. Needs to be a valid eventId")
+ })
+ @ApiResponses(value = {
+ @ApiResponse(code = HttpStatus.NO_CONTENT_204, message = "OK - Event deleted"),
+ @ApiResponse(code = HttpStatus.BAD_REQUEST_400, message = "Invalid group name or event id"),
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = "Internal server error - Something went bad on the server side.")
+ })
private Response deleteEvent(Request request, Response response) {
Group group = parseGroup(request);
Event.EventId eventId = parseEventId(request);
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org