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/09/25 03:31:34 UTC
[james-project] 04/18: JAMES-2813 extract
ErrorRecoveryIndexationTaskDTO
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 e844ff6ca867ea64dade7e2c899e3a35153c43de
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Wed Sep 18 15:17:53 2019 +0200
JAMES-2813 extract ErrorRecoveryIndexationTaskDTO
---
.../tools/indexer/ErrorRecoveryIndexationTask.java | 84 +---------------
.../indexer/ErrorRecoveryIndexationTaskDTO.java | 109 +++++++++++++++++++++
...rorRecoveryIndexationTaskSerializationTest.java | 2 +-
3 files changed, 115 insertions(+), 80 deletions(-)
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
index fe08031..b13d49c 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTask.java
@@ -19,100 +19,22 @@
package org.apache.mailbox.tools.indexer;
-import java.util.Collection;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
-import java.util.function.Function;
import javax.inject.Inject;
-import org.apache.james.json.DTOModule;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.server.task.json.dto.TaskDTO;
-import org.apache.james.server.task.json.dto.TaskDTOModule;
import org.apache.james.task.Task;
import org.apache.james.task.TaskExecutionDetails;
import org.apache.james.task.TaskType;
-import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.steveash.guavate.Guavate;
-import com.google.common.collect.Multimap;
public class ErrorRecoveryIndexationTask implements Task {
- private static final TaskType PREVIOUS_FAILURES_INDEXING = TaskType.of("ErrorRecoveryIndexation");
-
- public static final Function<ErrorRecoveryIndexationTask.Factory, TaskDTOModule<ErrorRecoveryIndexationTask, ErrorRecoveryIndexationTaskDTO>> MODULE = (factory) ->
- DTOModule
- .forDomainObject(ErrorRecoveryIndexationTask.class)
- .convertToDTO(ErrorRecoveryIndexationTask.ErrorRecoveryIndexationTaskDTO.class)
- .toDomainObjectConverter(factory::create)
- .toDTOConverter(ErrorRecoveryIndexationTask.ErrorRecoveryIndexationTaskDTO::of)
- .typeName(PREVIOUS_FAILURES_INDEXING.asString())
- .withFactory(TaskDTOModule::new);
-
- public static class ErrorRecoveryIndexationTaskDTO implements TaskDTO {
-
- public static ErrorRecoveryIndexationTaskDTO of(ErrorRecoveryIndexationTask task, String type) {
- Multimap<MailboxId, ReIndexingExecutionFailures.ReIndexingFailure> failuresByMailboxId = task.previousFailures
- .failures()
- .stream()
- .collect(Guavate.toImmutableListMultimap(ReIndexingExecutionFailures.ReIndexingFailure::getMailboxId, Function.identity()));
-
- List<ReindexingFailureDTO> failureDTOs = failuresByMailboxId.asMap()
- .entrySet().stream()
- .map(ErrorRecoveryIndexationTaskDTO::failuresByMailboxToReindexingFailureDTO).collect(Guavate.toImmutableList());
- return new ErrorRecoveryIndexationTaskDTO(type, failureDTOs);
- }
-
- private static ReindexingFailureDTO failuresByMailboxToReindexingFailureDTO(Map.Entry<MailboxId,
- Collection<ReIndexingExecutionFailures.ReIndexingFailure>> entry) {
- List<Long> uids = entry.getValue().stream()
- .map(ReIndexingExecutionFailures.ReIndexingFailure::getUid)
- .map(MessageUid::asLong)
- .collect(Guavate.toImmutableList());
- return new ReindexingFailureDTO(entry.getKey().serialize(), uids);
- }
-
- public static class ReindexingFailureDTO {
-
- private final String mailboxId;
- private final List<Long> uids;
-
- private ReindexingFailureDTO(@JsonProperty("mailboxId") String mailboxId, @JsonProperty("uids") List<Long> uids) {
- this.mailboxId = mailboxId;
- this.uids = uids;
- }
-
- public String getMailboxId() {
- return mailboxId;
- }
-
- public List<Long> getUids() {
- return uids;
- }
- }
-
- private final String type;
- private final List<ReindexingFailureDTO> previousFailures;
-
- private ErrorRecoveryIndexationTaskDTO(@JsonProperty("type") String type, @JsonProperty("previousFailures") List<ReindexingFailureDTO> previousFailures) {
- this.type = type;
- this.previousFailures = previousFailures;
- }
-
- @Override
- public String getType() {
- return type;
- }
-
- public List<ReindexingFailureDTO> getPreviousFailures() {
- return previousFailures;
- }
-
- }
+ public static final TaskType PREVIOUS_FAILURES_INDEXING = TaskType.of("ErrorRecoveryIndexation");
public static class Factory {
@@ -159,6 +81,10 @@ public class ErrorRecoveryIndexationTask implements Task {
return PREVIOUS_FAILURES_INDEXING;
}
+ public ReIndexingExecutionFailures getPreviousFailures() {
+ return previousFailures;
+ }
+
@Override
public Optional<TaskExecutionDetails.AdditionalInformation> details() {
return Optional.of(ReprocessingContextInformation.from(reprocessingContext));
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java
new file mode 100644
index 0000000..55c98de
--- /dev/null
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskDTO.java
@@ -0,0 +1,109 @@
+/****************************************************************
+ * 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.mailbox.tools.indexer;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+
+import org.apache.james.json.DTOModule;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.indexer.ReIndexingExecutionFailures;
+import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.server.task.json.dto.TaskDTO;
+import org.apache.james.server.task.json.dto.TaskDTOModule;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.Multimap;
+
+public class ErrorRecoveryIndexationTaskDTO implements TaskDTO {
+
+ public static final Function<ErrorRecoveryIndexationTask.Factory, TaskDTOModule<ErrorRecoveryIndexationTask, ErrorRecoveryIndexationTaskDTO>> MODULE = (factory) ->
+ DTOModule
+ .forDomainObject(ErrorRecoveryIndexationTask.class)
+ .convertToDTO(ErrorRecoveryIndexationTaskDTO.class)
+ .toDomainObjectConverter(factory::create)
+ .toDTOConverter(ErrorRecoveryIndexationTaskDTO::of)
+ .typeName(ErrorRecoveryIndexationTask.PREVIOUS_FAILURES_INDEXING.asString())
+ .withFactory(TaskDTOModule::new);
+
+ public static ErrorRecoveryIndexationTaskDTO of(ErrorRecoveryIndexationTask task, String type) {
+ Multimap<MailboxId, ReIndexingExecutionFailures.ReIndexingFailure> failuresByMailboxId = task.getPreviousFailures()
+ .failures()
+ .stream()
+ .collect(Guavate.toImmutableListMultimap(ReIndexingExecutionFailures.ReIndexingFailure::getMailboxId, Function.identity()));
+
+ List<ReindexingFailureDTO> failureDTOs = failuresByMailboxId.asMap()
+ .entrySet()
+ .stream()
+ .map(ErrorRecoveryIndexationTaskDTO::failuresByMailboxToReindexingFailureDTO)
+ .collect(Guavate.toImmutableList());
+ return new ErrorRecoveryIndexationTaskDTO(type, failureDTOs);
+ }
+
+ private static ReindexingFailureDTO failuresByMailboxToReindexingFailureDTO(Map.Entry<MailboxId,
+ Collection<ReIndexingExecutionFailures.ReIndexingFailure>> entry) {
+ List<Long> uids = entry
+ .getValue()
+ .stream()
+ .map(ReIndexingExecutionFailures.ReIndexingFailure::getUid)
+ .map(MessageUid::asLong)
+ .collect(Guavate.toImmutableList());
+ return new ReindexingFailureDTO(entry.getKey().serialize(), uids);
+ }
+
+ public static class ReindexingFailureDTO {
+
+ private final String mailboxId;
+ private final List<Long> uids;
+
+ private ReindexingFailureDTO(@JsonProperty("mailboxId") String mailboxId, @JsonProperty("uids") List<Long> uids) {
+ this.mailboxId = mailboxId;
+ this.uids = uids;
+ }
+
+ public String getMailboxId() {
+ return mailboxId;
+ }
+
+ public List<Long> getUids() {
+ return uids;
+ }
+ }
+
+ private final String type;
+ private final List<ReindexingFailureDTO> previousFailures;
+
+ private ErrorRecoveryIndexationTaskDTO(@JsonProperty("type") String type, @JsonProperty("previousFailures") List<ReindexingFailureDTO> previousFailures) {
+ this.type = type;
+ this.previousFailures = previousFailures;
+ }
+
+ @Override
+ public String getType() {
+ return type;
+ }
+
+ public List<ReindexingFailureDTO> getPreviousFailures() {
+ return previousFailures;
+ }
+
+}
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
index 415db36..2103682 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ErrorRecoveryIndexationTaskSerializationTest.java
@@ -58,7 +58,7 @@ class ErrorRecoveryIndexationTaskSerializationTest {
void setUp() {
reIndexerPerformer = mock(ReIndexerPerformer.class);
ErrorRecoveryIndexationTask.Factory factory = new ErrorRecoveryIndexationTask.Factory(reIndexerPerformer, new TestId.Factory());
- taskSerializer = new JsonTaskSerializer(ErrorRecoveryIndexationTask.MODULE.apply(factory));
+ taskSerializer = new JsonTaskSerializer(ErrorRecoveryIndexationTaskDTO.MODULE.apply(factory));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org