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/03/04 11:43:35 UTC
[james-project] 01/16: MAILBOX-382 Pre-refactor of
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 cd70aa4aa0de9fc40914cc0b9bf277d953cb4f66
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Tue Feb 26 17:26:33 2019 +0700
MAILBOX-382 Pre-refactor of EventDeadLettersRoutes
---
.../webadmin/routes/EventDeadLettersRoutes.java | 51 +++++++---------
.../webadmin/service/EventDeadLettersService.java | 68 ++++++++++++++++++++++
2 files changed, 88 insertions(+), 31 deletions(-)
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 f4718fe..9c01615 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
@@ -20,7 +20,6 @@
package org.apache.james.webadmin.routes;
import java.util.List;
-import java.util.UUID;
import javax.inject.Inject;
import javax.ws.rs.DELETE;
@@ -28,11 +27,10 @@ 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;
-import org.apache.james.mailbox.events.EventDeadLetters;
import org.apache.james.mailbox.events.Group;
import org.apache.james.webadmin.Routes;
+import org.apache.james.webadmin.service.EventDeadLettersService;
import org.apache.james.webadmin.utils.ErrorResponder;
import org.apache.james.webadmin.utils.JsonTransformer;
import org.eclipse.jetty.http.HttpStatus;
@@ -57,15 +55,15 @@ public class EventDeadLettersRoutes implements Routes {
private static final String GROUP_PARAM = ":group";
private static final String EVENT_ID_PARAM = ":eventId";
- private final EventDeadLetters deadLetters;
+ private static final String INTERNAL_SERVER_ERROR = "Internal server error - Something went bad on the server side.";
+
+ private final EventDeadLettersService eventDeadLettersService;
private final JsonTransformer jsonTransformer;
- private final EventSerializer eventSerializer;
@Inject
- EventDeadLettersRoutes(EventDeadLetters deadLetters, JsonTransformer jsonTransformer, EventSerializer eventSerializer) {
- this.deadLetters = deadLetters;
+ EventDeadLettersRoutes(EventDeadLettersService eventDeadLettersService, JsonTransformer jsonTransformer) {
+ this.eventDeadLettersService = eventDeadLettersService;
this.jsonTransformer = jsonTransformer;
- this.eventSerializer = eventSerializer;
}
@Override
@@ -76,9 +74,9 @@ public class EventDeadLettersRoutes implements Routes {
@Override
public void define(Service service) {
service.get(BASE_PATH + "/groups", this::listGroups, jsonTransformer);
- service.get(BASE_PATH + "/groups/" + GROUP_PARAM + "/events", this::listFailedEvents, jsonTransformer);
- service.get(BASE_PATH + "/groups/" + GROUP_PARAM + "/events/" + EVENT_ID_PARAM, this::getEventDetails);
- service.delete(BASE_PATH + "/groups/" + GROUP_PARAM + "/events/" + EVENT_ID_PARAM, this::deleteEvent);
+ service.get(BASE_PATH + "/groups/" + GROUP_PARAM, this::listFailedEvents, jsonTransformer);
+ service.get(BASE_PATH + "/groups/" + GROUP_PARAM + "/" + EVENT_ID_PARAM, this::getEventDetails);
+ service.delete(BASE_PATH + "/groups/" + GROUP_PARAM + "/" + EVENT_ID_PARAM, this::deleteEvent);
}
@GET
@@ -86,17 +84,14 @@ public class EventDeadLettersRoutes implements Routes {
@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.")
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = INTERNAL_SERVER_ERROR)
})
private Iterable<String> listGroups(Request request, Response response) {
- return deadLetters.groupsWithFailedEvents()
- .map(Group::asString)
- .collect(Guavate.toImmutableList())
- .block();
+ return eventDeadLettersService.listGroups();
}
@GET
- @Path("/groups/" + GROUP_PARAM + "/events")
+ @Path("/groups/" + GROUP_PARAM)
@ApiOperation(value = "List failed events for a given group")
@ApiImplicitParams({
@ApiImplicitParam(
@@ -110,19 +105,15 @@ public class EventDeadLettersRoutes implements Routes {
@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.")
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = INTERNAL_SERVER_ERROR)
})
private Iterable<String> listFailedEvents(Request request, Response response) {
Group group = parseGroup(request);
- return deadLetters.failedEventIds(group)
- .map(Event.EventId::getId)
- .map(UUID::toString)
- .collect(Guavate.toImmutableList())
- .block();
+ return eventDeadLettersService.listGroupEvents(group);
}
@GET
- @Path("/groups/" + GROUP_PARAM + "/events/" + EVENT_ID_PARAM)
+ @Path("/groups/" + GROUP_PARAM + "/" + EVENT_ID_PARAM)
@ApiOperation(value = "Returns an event detail")
@ApiImplicitParams({
@ApiImplicitParam(
@@ -144,19 +135,17 @@ public class EventDeadLettersRoutes implements Routes {
@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.")
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = INTERNAL_SERVER_ERROR)
})
private String getEventDetails(Request request, Response response) {
Group group = parseGroup(request);
Event.EventId eventId = parseEventId(request);
- return deadLetters.failedEvent(group, eventId)
- .map(eventSerializer::toJson)
- .block();
+ return eventDeadLettersService.getSerializedEvent(group, eventId);
}
@DELETE
- @Path("/groups/" + GROUP_PARAM + "/events/" + EVENT_ID_PARAM)
+ @Path("/groups/" + GROUP_PARAM + "/" + EVENT_ID_PARAM)
@ApiOperation(value = "Deletes an event")
@ApiImplicitParams({
@ApiImplicitParam(
@@ -177,13 +166,13 @@ public class EventDeadLettersRoutes implements Routes {
@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.")
+ @ApiResponse(code = HttpStatus.INTERNAL_SERVER_ERROR_500, message = INTERNAL_SERVER_ERROR)
})
private Response deleteEvent(Request request, Response response) {
Group group = parseGroup(request);
Event.EventId eventId = parseEventId(request);
- deadLetters.remove(group, eventId).block();
+ eventDeadLettersService.deleteEvent(group, eventId);
response.status(HttpStatus.NO_CONTENT_204);
return response;
}
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersService.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersService.java
new file mode 100644
index 0000000..5f9b1ae
--- /dev/null
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/service/EventDeadLettersService.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.webadmin.service;
+
+import java.util.UUID;
+
+import javax.inject.Inject;
+
+import org.apache.james.event.json.EventSerializer;
+import org.apache.james.mailbox.events.Event;
+import org.apache.james.mailbox.events.EventDeadLetters;
+import org.apache.james.mailbox.events.Group;
+
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
+
+public class EventDeadLettersService {
+ private final EventDeadLetters deadLetters;
+ private final EventSerializer eventSerializer;
+
+ @Inject
+ public EventDeadLettersService(EventDeadLetters deadLetters, EventSerializer eventSerializer) {
+ this.deadLetters = deadLetters;
+ this.eventSerializer = eventSerializer;
+ }
+
+ public ImmutableList<String> listGroups() {
+ return deadLetters.groupsWithFailedEvents()
+ .map(Group::asString)
+ .collect(Guavate.toImmutableList())
+ .block();
+ }
+
+ public ImmutableList<String> listGroupEvents(Group group) {
+ return deadLetters.failedEventIds(group)
+ .map(Event.EventId::getId)
+ .map(UUID::toString)
+ .collect(Guavate.toImmutableList())
+ .block();
+ }
+
+ public String getSerializedEvent(Group group, Event.EventId eventId) {
+ return deadLetters.failedEvent(group, eventId)
+ .map(eventSerializer::toJson)
+ .block();
+ }
+
+ public void deleteEvent(Group group, Event.EventId eventId) {
+ deadLetters.remove(group, eventId).block();
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org