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 2018/11/29 03:53:15 UTC

[01/10] james-project git commit: MAILBOX-351 ReIndexerPerformer should internally rely on MailboxId

Repository: james-project
Updated Branches:
  refs/heads/master 13989f999 -> 1d5744076


MAILBOX-351 ReIndexerPerformer should internally rely on MailboxId


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

Branch: refs/heads/master
Commit: 655d35b38d2a3ed9577f9998e54c9398c7d91740
Parents: 13989f9
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Nov 23 15:03:31 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:47:49 2018 +0700

----------------------------------------------------------------------
 .../tools/indexer/ReIndexerPerformer.java       | 65 ++++++---------
 .../registrations/GlobalRegistration.java       | 62 ---------------
 .../registrations/GlobalRegistrationTest.java   | 83 --------------------
 3 files changed, 24 insertions(+), 186 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/655d35b3/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
index 92de5be..b86316f 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
@@ -19,9 +19,8 @@
 
 package org.apache.mailbox.tools.indexer;
 
-import java.util.List;
 import java.util.Optional;
-import java.util.function.Function;
+import java.util.stream.Stream;
 
 import javax.inject.Inject;
 
@@ -30,6 +29,7 @@ import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
@@ -40,20 +40,18 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex;
 import org.apache.james.task.Task;
-import org.apache.james.util.OptionalUtils;
 import org.apache.james.util.streams.Iterators;
-import org.apache.mailbox.tools.indexer.registrations.GlobalRegistration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.fge.lambdas.Throwing;
-import com.google.common.collect.ImmutableList;
 
 public class ReIndexerPerformer {
     private static final Logger LOGGER = LoggerFactory.getLogger(ReIndexerPerformer.class);
 
     private static final int NO_LIMIT = 0;
     private static final int SINGLE_MESSAGE = 1;
+    private static final String RE_INDEXING = "re-indexing";
 
     private final MailboxManager mailboxManager;
     private final ListeningMessageSearchIndex messageSearchIndex;
@@ -70,16 +68,19 @@ public class ReIndexerPerformer {
 
     Task.Result reIndex(MailboxPath path, ReprocessingContext reprocessingContext) throws MailboxException {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(path.getUser());
-        return reIndex(path, mailboxSession, reprocessingContext);
+        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(path);
+        return reIndexSingleMailbox(mailbox.getMailboxId(), reprocessingContext);
     }
 
     Task.Result reIndex(ReprocessingContext reprocessingContext) throws MailboxException {
-        MailboxSession mailboxSession = mailboxManager.createSystemSession("re-indexing");
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXING);
         LOGGER.info("Starting a full reindex");
-        List<MailboxPath> mailboxPaths = mailboxManager.list(mailboxSession);
+        Stream<MailboxId> mailboxIds = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).list()
+            .stream()
+            .map(Mailbox::getMailboxId);
 
         try {
-            return reIndex(mailboxPaths, mailboxSession, reprocessingContext);
+            return reIndex(mailboxIds, reprocessingContext);
         } finally {
             LOGGER.info("Full reindex finished");
         }
@@ -88,14 +89,13 @@ public class ReIndexerPerformer {
     Task.Result reIndex(User user, ReprocessingContext reprocessingContext) throws MailboxException {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(user.asString());
         LOGGER.info("Starting a reindex for user {}", user.asString());
-        List<MailboxPath> mailboxPaths = mailboxManager.search(MailboxQuery.privateMailboxesBuilder(mailboxSession)
-            .build(), mailboxSession)
+
+        Stream<MailboxId> mailboxIds = mailboxManager.search(MailboxQuery.privateMailboxesBuilder(mailboxSession).build(), mailboxSession)
             .stream()
-            .map(MailboxMetaData::getPath)
-            .collect(ImmutableList.toImmutableList());
+            .map(MailboxMetaData::getId);
 
         try {
-            return reIndex(mailboxPaths, mailboxSession, reprocessingContext);
+            return reIndex(mailboxIds, reprocessingContext);
         } finally {
             LOGGER.info("User {} reindex finished", user.asString());
         }
@@ -109,21 +109,13 @@ public class ReIndexerPerformer {
         return handleMessageReIndexing(mailboxSession, mailbox, uid);
     }
 
-    private Task.Result reIndex(List<MailboxPath> mailboxPaths, MailboxSession mailboxSession, ReprocessingContext reprocessingContext) throws MailboxException {
-        return wrapInGlobalRegistration(mailboxSession,
-            globalRegistration -> handleMultiMailboxesReindexingIterations(mailboxPaths, globalRegistration, reprocessingContext));
-    }
-
-    private Task.Result handleMultiMailboxesReindexingIterations(List<MailboxPath> mailboxPaths, GlobalRegistration globalRegistration,
-                                                                 ReprocessingContext reprocessingContext) {
-        return mailboxPaths.stream()
-            .map(globalRegistration::getPathToIndex)
-            .flatMap(OptionalUtils::toStream)
-            .map(path -> {
+    private Task.Result reIndex(Stream<MailboxId> mailboxIds, ReprocessingContext reprocessingContext) {
+        return mailboxIds
+            .map(mailboxId -> {
                 try {
-                    return reIndex(path, reprocessingContext);
+                    return reIndexSingleMailbox(mailboxId, reprocessingContext);
                 } catch (Throwable e) {
-                    LOGGER.error("Error while proceeding to full reindexing on {}", path.asString(), e);
+                    LOGGER.error("Error while proceeding to full reindexing on mailbox with mailboxId {}", mailboxId.serialize(), e);
                     return Task.Result.PARTIAL;
                 }
             })
@@ -131,9 +123,10 @@ public class ReIndexerPerformer {
             .orElse(Task.Result.COMPLETED);
     }
 
-    private Task.Result reIndex(MailboxPath path, MailboxSession mailboxSession, ReprocessingContext reprocessingContext) throws MailboxException {
-        LOGGER.info("Intend to reindex {}", path.asString());
-        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(path);
+    private Task.Result reIndexSingleMailbox(MailboxId mailboxId, ReprocessingContext reprocessingContext) throws MailboxException {
+        LOGGER.info("Intend to reindex mailbox with mailboxId {}", mailboxId.serialize());
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXING);
+        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
         messageSearchIndex.deleteAll(mailboxSession, mailbox);
         try {
             return Iterators.toStream(
@@ -145,7 +138,7 @@ public class ReIndexerPerformer {
                 .reduce(Task::combine)
                 .orElse(Task.Result.COMPLETED);
         } finally {
-            LOGGER.info("Finish to reindex {}", path.asString());
+            LOGGER.info("Finish to reindex mailbox with mailboxId {}", mailboxId.serialize());
         }
     }
 
@@ -166,14 +159,4 @@ public class ReIndexerPerformer {
             .findInMailbox(mailbox, MessageRange.one(mUid), MessageMapper.FetchType.Full, SINGLE_MESSAGE))
             .findFirst();
     }
-
-    private <T> T wrapInGlobalRegistration(MailboxSession session, Function<GlobalRegistration, T> function) throws MailboxException {
-        GlobalRegistration globalRegistration = new GlobalRegistration();
-        mailboxManager.addGlobalListener(globalRegistration, session);
-        try {
-            return function.apply(globalRegistration);
-        } finally {
-            mailboxManager.removeGlobalListener(globalRegistration, session);
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/655d35b3/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistration.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistration.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistration.java
deleted file mode 100644
index 1cc7764..0000000
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistration.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/****************************************************************
- * 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.registrations;
-
-import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.james.mailbox.Event;
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.model.MailboxPath;
-
-public class GlobalRegistration implements MailboxListener {
-
-    private final ConcurrentHashMap<MailboxPath, Boolean> isPathDeleted;
-    private final ConcurrentHashMap<MailboxPath, MailboxPath> nameCorrespondence;
-
-    public GlobalRegistration() {
-        this.isPathDeleted = new ConcurrentHashMap<>();
-        this.nameCorrespondence = new ConcurrentHashMap<>();
-    }
-
-    public Optional<MailboxPath> getPathToIndex(MailboxPath mailboxPath) {
-        if (isPathDeleted.get(mailboxPath) != null) {
-            return Optional.empty();
-        }
-        return Optional.of(
-            Optional.ofNullable(nameCorrespondence.get(mailboxPath)).orElse(mailboxPath));
-    }
-
-    @Override
-    public ListenerType getType() {
-        return ListenerType.EACH_NODE;
-    }
-
-    @Override
-    public void event(Event event) {
-        if (event instanceof MailboxDeletion) {
-            MailboxDeletion mailboxDeletion = (MailboxDeletion) event;
-            isPathDeleted.put(mailboxDeletion.getMailboxPath(), true);
-        } else if (event instanceof MailboxRenamed) {
-            MailboxRenamed mailboxRenamed = (MailboxRenamed) event;
-            nameCorrespondence.put(mailboxRenamed.getMailboxPath(), ((MailboxRenamed) event).getNewPath());
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/655d35b3/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistrationTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistrationTest.java
deleted file mode 100644
index e0b06f7..0000000
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/registrations/GlobalRegistrationTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************
- * 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.registrations;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.Optional;
-
-import org.apache.james.core.quota.QuotaCount;
-import org.apache.james.core.quota.QuotaSize;
-import org.apache.james.mailbox.MailboxListener;
-import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.apache.james.mailbox.model.MailboxPath;
-import org.apache.james.mailbox.model.QuotaRoot;
-import org.apache.james.mailbox.store.event.EventFactory;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-public class GlobalRegistrationTest {
-    public static final MailboxPath INBOX = MailboxPath.forUser("btellier@apache.org", "INBOX");
-    private static final MailboxPath NEW_PATH = MailboxPath.forUser("btellier@apache.org", "INBOX.new");
-    private static final int UID_VALIDITY = 45;
-    private static final SimpleMailbox MAILBOX = new SimpleMailbox(INBOX, UID_VALIDITY);
-    private static final SimpleMailbox NEW_MAILBOX = new SimpleMailbox(NEW_PATH, UID_VALIDITY);
-
-    private GlobalRegistration globalRegistration;
-    private EventFactory eventFactory;
-    private MockMailboxSession session;
-
-    @BeforeEach
-    void setUp() {
-        eventFactory = new EventFactory();
-        session = new MockMailboxSession("test");
-        globalRegistration = new GlobalRegistration();
-    }
-
-    @Test
-    void pathToIndexShouldNotBeChangedByDefault() {
-        assertThat(globalRegistration.getPathToIndex(INBOX).get()).isEqualTo(INBOX);
-    }
-
-    @Test
-    void pathToIndexShouldNotBeChangedByAddedEvents() {
-        MailboxListener.MailboxEvent event = eventFactory.mailboxAdded(session, MAILBOX);
-        globalRegistration.event(event);
-        assertThat(globalRegistration.getPathToIndex(INBOX).get()).isEqualTo(INBOX);
-    }
-
-    @Test
-    void pathToIndexShouldBeNullifiedByDeletedEvents() {
-        QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
-        QuotaCount quotaCount = QuotaCount.count(123);
-        QuotaSize quotaSize = QuotaSize.size(456);
-        MailboxListener.MailboxEvent event = eventFactory.mailboxDeleted(session, MAILBOX, quotaRoot, quotaCount, quotaSize);
-        globalRegistration.event(event);
-        assertThat(globalRegistration.getPathToIndex(INBOX)).isEqualTo(Optional.empty());
-    }
-
-    @Test
-    void pathToIndexShouldBeModifiedByRenamedEvents() {
-        MailboxListener.MailboxEvent event = eventFactory.mailboxRenamed(session, INBOX, NEW_MAILBOX);
-        globalRegistration.event(event);
-        assertThat(globalRegistration.getPathToIndex(INBOX).get()).isEqualTo(NEW_PATH);
-    }
-}


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


[09/10] james-project git commit: MAILBOX-351 ReIndexerRoutes: Fail with not found upon unknown mailboxes

Posted by bt...@apache.org.
MAILBOX-351 ReIndexerRoutes: Fail with not found upon unknown mailboxes


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

Branch: refs/heads/master
Commit: 1d57440765f10feeeaab08a19d79e7e499053078
Parents: f1f981a
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Nov 28 15:50:18 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../apache/james/webadmin/routes/ReindexingRoutes.java  |  4 ++--
 .../james/webadmin/routes/ReindexingRoutesTest.java     | 12 ++++++------
 2 files changed, 8 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1d574407/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
index ffb7d98..28b10cc 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
@@ -232,8 +232,8 @@ public class ReindexingRoutes implements Routes {
             return TaskIdDto.respond(response, taskId);
         } catch (MailboxNotFoundException e) {
             throw ErrorResponder.builder()
-                .statusCode(HttpStatus.BAD_REQUEST_400)
-                .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
+                .statusCode(HttpStatus.NOT_FOUND_404)
+                .type(ErrorResponder.ErrorType.NOT_FOUND)
                 .message("mailbox not found")
                 .cause(e)
                 .haltError();

http://git-wip-us.apache.org/repos/asf/james-project/blob/1d574407/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
index f5e9382..38d0205 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
@@ -416,9 +416,9 @@ class ReindexingRoutesTest {
                 when()
                     .post("/mailboxIndex/mailboxes/36?task=reIndex")
                 .then()
-                    .statusCode(HttpStatus.BAD_REQUEST_400)
-                    .body("statusCode", is(400))
-                    .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
+                    .statusCode(HttpStatus.NOT_FOUND_404)
+                    .body("statusCode", is(404))
+                    .body("type", is(ErrorResponder.ErrorType.NOT_FOUND.getType()))
                     .body("message", is("mailbox not found"));
             }
         }
@@ -570,9 +570,9 @@ class ReindexingRoutesTest {
                 when()
                     .post("/mailboxIndex/mailboxes/36/mails/7?task=reIndex")
                 .then()
-                    .statusCode(HttpStatus.BAD_REQUEST_400)
-                    .body("statusCode", is(400))
-                    .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
+                    .statusCode(HttpStatus.NOT_FOUND_404)
+                    .body("statusCode", is(404))
+                    .body("type", is(ErrorResponder.ErrorType.NOT_FOUND.getType()))
                     .body("message", is("mailbox not found"));
             }
 


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


[06/10] james-project git commit: MAILBOX-351 User is not needed for mailboxId based reIndexing

Posted by bt...@apache.org.
MAILBOX-351 User is not needed for mailboxId based reIndexing


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

Branch: refs/heads/master
Commit: a09ef44376ccc4da3ba3071dadc036857e819f13
Parents: 85350b3
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Nov 23 16:00:30 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../james/webadmin/routes/ReindexingRoutes.java |  6 +-
 .../webadmin/routes/ReindexingRoutesTest.java   | 72 ++++----------------
 src/site/markdown/server/manage-webadmin.md     |  6 +-
 3 files changed, 21 insertions(+), 63 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a09ef443/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
index e954a0f..ffb7d98 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
@@ -63,7 +63,7 @@ public class ReindexingRoutes implements Routes {
     private static final String MAILBOX_PARAM = ":mailbox";
     private static final String UID_PARAM = ":uid";
     private static final String USER_PATH = BASE_PATH + "/users/" + USER_PARAM;
-    private static final String MAILBOX_PATH = USER_PATH + "/mailboxes/" + MAILBOX_PARAM;
+    private static final String MAILBOX_PATH = BASE_PATH + "/mailboxes/" + MAILBOX_PARAM;
     private static final String MESSAGE_PATH = MAILBOX_PATH + "/mails/" + UID_PARAM;
 
     private final TaskManager taskManager;
@@ -147,7 +147,7 @@ public class ReindexingRoutes implements Routes {
     }
 
     @POST
-    @Path("/users/{user}/mailboxes/{mailboxId}")
+    @Path("/mailboxes/{mailboxId}")
     @ApiOperation(value = "Re-indexes all the mails in a mailbox")
     @ApiImplicitParams({
         @ApiImplicitParam(
@@ -185,7 +185,7 @@ public class ReindexingRoutes implements Routes {
     }
 
     @POST
-    @Path("/users/{user}/mailboxes/{mailboxId}/mails/{uid}")
+    @Path("/mailboxes/{mailboxId}/mails/{uid}")
     @ApiOperation(value = "Re-indexes a single email")
     @ApiImplicitParams({
         @ApiImplicitParam(

http://git-wip-us.apache.org/repos/asf/james-project/blob/a09ef443/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
index 6ac8cc8..08db547 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
@@ -61,7 +61,6 @@ import org.apache.mailbox.tools.indexer.UserReindexingTask;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
@@ -379,7 +378,7 @@ class ReindexingRoutesTest {
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize())
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize())
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -393,7 +392,7 @@ class ReindexingRoutesTest {
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "?task=bad")
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "?task=bad")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -401,25 +400,10 @@ class ReindexingRoutesTest {
                     .body("message", is("task query parameter is mandatory. The only supported value is `reIndex`"));
             }
 
-            @Disabled("Using user here makes no sens from an API perspective, and will be removed")
-            @Test
-            void mailboxReprocessingShouldFailWithBadUser() throws Exception {
-                MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
-                MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
-
-                when()
-                    .post("/mailboxIndex/users/bad@bad@bad/mailboxes/" + mailboxId.serialize() + "?task=reIndex")
-                .then()
-                    .statusCode(HttpStatus.BAD_REQUEST_400)
-                    .body("statusCode", is(400))
-                    .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
-                    .body("message", is("Error while parsing 'user'"));
-            }
-
             @Test
             void mailboxReprocessingShouldFailWithBadMailboxId() {
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/bad?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/bad?task=reIndex")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -430,18 +414,7 @@ class ReindexingRoutesTest {
             @Test
             void mailboxReprocessingShouldFailWithNonExistentMailboxId() {
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/36?task=reIndex")
-                .then()
-                    .statusCode(HttpStatus.BAD_REQUEST_400)
-                    .body("statusCode", is(400))
-                    .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
-                    .body("message", is("mailbox not found"));
-            }
-
-            @Test
-            void mailboxReprocessingShouldFailWithNonExistentUser() {
-                when()
-                    .post("/mailboxIndex/users/notFound@domain.tld/mailboxes/36?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/36?task=reIndex")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -458,7 +431,7 @@ class ReindexingRoutesTest {
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
                 String taskId = when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "?task=reIndex")
                     .jsonPath()
                     .get("taskId");
 
@@ -488,7 +461,7 @@ class ReindexingRoutesTest {
                         systemSession);
 
                 String taskId = when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "?task=reIndex")
                     .jsonPath()
                     .get("taskId");
 
@@ -521,7 +494,7 @@ class ReindexingRoutesTest {
                         systemSession);
 
                 String taskId = when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "?task=reIndex")
                     .jsonPath()
                     .get("taskId");
 
@@ -559,7 +532,7 @@ class ReindexingRoutesTest {
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "/mails/7")
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "/mails/7")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -573,7 +546,7 @@ class ReindexingRoutesTest {
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "/mails/7?task=bad")
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "/mails/7?task=bad")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -581,25 +554,10 @@ class ReindexingRoutesTest {
                     .body("message", is("task query parameter is mandatory. The only supported value is `reIndex`"));
             }
 
-            @Disabled("Using user here makes no sens from an API perspective, and will be removed")
-            @Test
-            void messageReprocessingShouldFailWithBadUser() throws Exception {
-                MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
-                MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
-
-                when()
-                    .post("/mailboxIndex/users/bad@bad@bad/mailboxes/" + mailboxId.serialize() + "/mails/7?task=reIndex")
-                .then()
-                    .statusCode(HttpStatus.BAD_REQUEST_400)
-                    .body("statusCode", is(400))
-                    .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
-                    .body("message", is("Error while parsing 'user'"));
-            }
-
             @Test
             void messageReprocessingShouldFailWithBadMailboxId() {
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/bad/mails/7?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/bad/mails/7?task=reIndex")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -610,7 +568,7 @@ class ReindexingRoutesTest {
             @Test
             void messageReprocessingShouldFailWithNonExistentMailboxId() {
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/36/mails/7?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/36/mails/7?task=reIndex")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -621,7 +579,7 @@ class ReindexingRoutesTest {
             @Test
             void messageReprocessingShouldFailWithBadUid() {
                 when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/36/mails/bad?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/36/mails/bad?task=reIndex")
                 .then()
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
@@ -638,7 +596,7 @@ class ReindexingRoutesTest {
                 MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 
                 String taskId = when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "/mails/1?task=reIndex")
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "/mails/1?task=reIndex")
                     .jsonPath()
                     .get("taskId");
 
@@ -667,7 +625,7 @@ class ReindexingRoutesTest {
                         systemSession);
 
                 String taskId = when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "/mails/"
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "/mails/"
                         + composedMessageId.getUid().asLong() + "?task=reIndex")
                     .jsonPath()
                     .get("taskId");
@@ -700,7 +658,7 @@ class ReindexingRoutesTest {
                         systemSession);
 
                 String taskId = when()
-                    .post("/mailboxIndex/users/" + USERNAME + "/mailboxes/" + mailboxId.serialize() + "/mails/"
+                    .post("/mailboxIndex/mailboxes/" + mailboxId.serialize() + "/mails/"
                         + createdMessage.getUid().asLong() + "?task=reIndex")
                     .jsonPath()
                     .get("taskId");

http://git-wip-us.apache.org/repos/asf/james-project/blob/a09ef443/src/site/markdown/server/manage-webadmin.md
----------------------------------------------------------------------
diff --git a/src/site/markdown/server/manage-webadmin.md b/src/site/markdown/server/manage-webadmin.md
index 5ce90ac..e1547f9 100644
--- a/src/site/markdown/server/manage-webadmin.md
+++ b/src/site/markdown/server/manage-webadmin.md
@@ -2204,10 +2204,10 @@ concurrent changes done during the reIndexing might be ignored.
 ### ReIndexing a mailbox mails
 
 ```
-curl -XPOST http://ip:port/mailboxIndex/users/bob@domain.com/mailboxes/{mailboxId}?task=reIndex
+curl -XPOST http://ip:port/mailboxIndex/mailboxes/{mailboxId}?task=reIndex
 ```
 
-Will schedule a task for reIndexing all the mails in one mailbox belonging to "bob@domain.com".
+Will schedule a task for reIndexing all the mails in one mailbox.
 
 Note that 'mailboxId' path parameter needs to be a (implementation dependent) valid mailboxId.
 
@@ -2250,7 +2250,7 @@ concurrent changes done during the reIndexing might be ignored.
 ### ReIndexing a single mail
 
 ```
-curl -XPOST http://ip:port/mailboxIndex/users/bob@domain.com/mailboxes/{mailboxId}/uid/36?task=reIndex
+curl -XPOST http://ip:port/mailboxIndex/mailboxes/{mailboxId}/uid/36?task=reIndex
 ```
 
 Will schedule a task for reIndexing a single email.


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


[10/10] james-project git commit: MAILBOX-351 Remove mailboxPath information from reIndexing tasks

Posted by bt...@apache.org.
MAILBOX-351 Remove mailboxPath information from reIndexing tasks


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

Branch: refs/heads/master
Commit: 39572158b4e57b5d507985b1f6252d2765602f2d
Parents: c88e353
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Nov 27 16:55:43 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../mailbox/tools/indexer/ReIndexerImpl.java    | 32 ++++++++------
 .../tools/indexer/ReIndexerPerformer.java       | 45 +++++++++-----------
 .../indexer/SingleMailboxReindexingTask.java    | 23 +++++-----
 .../indexer/SingleMessageReindexingTask.java    | 26 +++++------
 .../indexer/CassandraReIndexerImplTest.java     |  3 +-
 .../tools/indexer/ReIndexerImplTest.java        |  3 +-
 .../webadmin/routes/ReindexingRoutesTest.java   |  4 --
 7 files changed, 64 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/39572158/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
index 761a6cb..9f4b49d 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
@@ -30,7 +30,6 @@ import org.apache.james.mailbox.indexer.ReIndexer;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.task.Task;
 
 /**
@@ -57,16 +56,18 @@ public class ReIndexerImpl implements ReIndexer {
 
     @Override
     public Task reIndex(MailboxPath path) throws MailboxException {
-        MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
-        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(path);
-        return new SingleMailboxReindexingTask(reIndexerPerformer, mailbox);
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(path.getUser());
+
+        MailboxId mailboxId = mailboxManager.getMailbox(path, mailboxSession).getId();
+
+        return new SingleMailboxReindexingTask(reIndexerPerformer, mailboxId);
     }
 
     @Override
     public Task reIndex(MailboxId mailboxId) throws MailboxException {
-        MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
-        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
-        return new SingleMailboxReindexingTask(reIndexerPerformer, mailbox);
+        validateIdExists(mailboxId);
+
+        return new SingleMailboxReindexingTask(reIndexerPerformer, mailboxId);
     }
 
     @Override
@@ -81,15 +82,22 @@ public class ReIndexerImpl implements ReIndexer {
 
     @Override
     public Task reIndex(MailboxPath path, MessageUid uid) throws MailboxException {
-        MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
-        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(path);
-        return new SingleMessageReindexingTask(reIndexerPerformer, mailbox, uid);
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(path.getUser());
+
+        MailboxId mailboxId = mailboxManager.getMailbox(path, mailboxSession).getId();
+
+        return new SingleMessageReindexingTask(reIndexerPerformer, mailboxId, uid);
     }
 
     @Override
     public Task reIndex(MailboxId mailboxId, MessageUid uid) throws MailboxException {
+        validateIdExists(mailboxId);
+
+        return new SingleMessageReindexingTask(reIndexerPerformer, mailboxId, uid);
+    }
+
+    private void validateIdExists(MailboxId mailboxId) throws MailboxException {
         MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
-        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
-        return new SingleMessageReindexingTask(reIndexerPerformer, mailbox, uid);
+        mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/39572158/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
index 4e49f33..ffa623d 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
@@ -65,8 +65,23 @@ public class ReIndexerPerformer {
         this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
     }
 
-    Task.Result reIndex(Mailbox mailbox, ReprocessingContext reprocessingContext) throws MailboxException {
-        return reIndexSingleMailbox(mailbox.getMailboxId(), reprocessingContext);
+    Task.Result reIndex(MailboxId mailboxId, ReprocessingContext reprocessingContext) throws MailboxException {
+        LOGGER.info("Intend to reindex mailbox with mailboxId {}", mailboxId.serialize());
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXING);
+        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
+        messageSearchIndex.deleteAll(mailboxSession, mailbox);
+        try {
+            return Iterators.toStream(
+                mailboxSessionMapperFactory.getMessageMapper(mailboxSession)
+                    .findInMailbox(mailbox, MessageRange.all(), MessageMapper.FetchType.Metadata, NO_LIMIT))
+                .map(MailboxMessage::getUid)
+                .map(uid -> handleMessageReIndexing(mailboxSession, mailbox, uid))
+                .peek(reprocessingContext::updateAccordingToReprocessingResult)
+                .reduce(Task::combine)
+                .orElse(Task.Result.COMPLETED);
+        } finally {
+            LOGGER.info("Finish to reindex mailbox with mailboxId {}", mailboxId.serialize());
+        }
     }
 
     Task.Result reIndex(ReprocessingContext reprocessingContext) throws MailboxException {
@@ -98,9 +113,10 @@ public class ReIndexerPerformer {
         }
     }
 
-    Task.Result handleMessageReIndexing(Mailbox mailbox, MessageUid uid) throws MailboxException {
-        MailboxSession mailboxSession = mailboxManager.createSystemSession(mailbox.getUser());
+    Task.Result handleMessageReIndexing(MailboxId mailboxId, MessageUid uid) throws MailboxException {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXING);
 
+        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
         return handleMessageReIndexing(mailboxSession, mailbox, uid);
     }
 
@@ -108,7 +124,7 @@ public class ReIndexerPerformer {
         return mailboxIds
             .map(mailboxId -> {
                 try {
-                    return reIndexSingleMailbox(mailboxId, reprocessingContext);
+                    return reIndex(mailboxId, reprocessingContext);
                 } catch (Throwable e) {
                     LOGGER.error("Error while proceeding to full reindexing on mailbox with mailboxId {}", mailboxId.serialize(), e);
                     return Task.Result.PARTIAL;
@@ -118,25 +134,6 @@ public class ReIndexerPerformer {
             .orElse(Task.Result.COMPLETED);
     }
 
-    private Task.Result reIndexSingleMailbox(MailboxId mailboxId, ReprocessingContext reprocessingContext) throws MailboxException {
-        LOGGER.info("Intend to reindex mailbox with mailboxId {}", mailboxId.serialize());
-        MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXING);
-        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
-        messageSearchIndex.deleteAll(mailboxSession, mailbox);
-        try {
-            return Iterators.toStream(
-                mailboxSessionMapperFactory.getMessageMapper(mailboxSession)
-                    .findInMailbox(mailbox, MessageRange.all(), MessageMapper.FetchType.Metadata, NO_LIMIT))
-                .map(MailboxMessage::getUid)
-                .map(uid -> handleMessageReIndexing(mailboxSession, mailbox, uid))
-                .peek(reprocessingContext::updateAccordingToReprocessingResult)
-                .reduce(Task::combine)
-                .orElse(Task.Result.COMPLETED);
-        } finally {
-            LOGGER.info("Finish to reindex mailbox with mailboxId {}", mailboxId.serialize());
-        }
-    }
-
     private Task.Result handleMessageReIndexing(MailboxSession mailboxSession, Mailbox mailbox, MessageUid uid) {
         try {
             Optional.of(uid)

http://git-wip-us.apache.org/repos/asf/james-project/blob/39572158/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
index c3f024b..00f771b 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
@@ -24,7 +24,7 @@ import java.util.Optional;
 import javax.inject.Inject;
 
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 
@@ -33,20 +33,17 @@ public class SingleMailboxReindexingTask implements Task {
     public static final String MAILBOX_RE_INDEXING = "mailboxReIndexing";
 
     public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation {
-        private final Mailbox mailbox;
+        private final MailboxId mailboxId;
         private final ReprocessingContext reprocessingContext;
 
-        AdditionalInformation(Mailbox mailbox, ReprocessingContext reprocessingContext) {
-            this.mailbox = mailbox;
+        AdditionalInformation(MailboxId mailboxId, ReprocessingContext reprocessingContext) {
+            this.mailboxId = mailboxId;
             this.reprocessingContext = reprocessingContext;
         }
 
-        public String getMailboxPath() {
-            return mailbox.generateAssociatedPath().asString();
-        }
 
         public String getMailboxId() {
-            return mailbox.getMailboxId().serialize();
+            return mailboxId.serialize();
         }
 
         public int getSuccessfullyReprocessMailCount() {
@@ -59,22 +56,22 @@ public class SingleMailboxReindexingTask implements Task {
     }
 
     private final ReIndexerPerformer reIndexerPerformer;
-    private final Mailbox mailbox;
+    private final MailboxId mailboxId;
     private final AdditionalInformation additionalInformation;
     private final ReprocessingContext reprocessingContext;
 
     @Inject
-    public SingleMailboxReindexingTask(ReIndexerPerformer reIndexerPerformer, Mailbox mailbox) {
+    public SingleMailboxReindexingTask(ReIndexerPerformer reIndexerPerformer, MailboxId mailboxId) {
         this.reIndexerPerformer = reIndexerPerformer;
-        this.mailbox = mailbox;
+        this.mailboxId = mailboxId;
         this.reprocessingContext = new ReprocessingContext();
-        this.additionalInformation = new AdditionalInformation(mailbox, reprocessingContext);
+        this.additionalInformation = new AdditionalInformation(mailboxId, reprocessingContext);
     }
 
     @Override
     public Result run() {
         try {
-            return reIndexerPerformer.reIndex(mailbox, reprocessingContext);
+            return reIndexerPerformer.reIndex(mailboxId, reprocessingContext);
         } catch (MailboxException e) {
             return Result.PARTIAL;
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/39572158/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
index ef6aa07..749bf36 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
@@ -25,7 +25,7 @@ import javax.inject.Inject;
 
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 import org.slf4j.Logger;
@@ -37,20 +37,16 @@ public class SingleMessageReindexingTask implements Task {
     public static final String MESSAGE_RE_INDEXING = "messageReIndexing";
 
     public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation {
-        private final Mailbox mailbox;
+        private final MailboxId mailboxId;
         private final MessageUid uid;
 
-        AdditionalInformation(Mailbox mailbox, MessageUid uid) {
-            this.mailbox = mailbox;
+        AdditionalInformation(MailboxId mailboxId, MessageUid uid) {
+            this.mailboxId = mailboxId;
             this.uid = uid;
         }
 
-        public String getMailboxPath() {
-            return mailbox.generateAssociatedPath().asString();
-        }
-
         public String getMailboxId() {
-            return mailbox.getMailboxId().serialize();
+            return mailboxId.serialize();
         }
 
         public long getUid() {
@@ -59,24 +55,24 @@ public class SingleMessageReindexingTask implements Task {
     }
 
     private final ReIndexerPerformer reIndexerPerformer;
-    private final Mailbox mailbox;
+    private final MailboxId mailboxId;
     private final MessageUid uid;
     private final AdditionalInformation additionalInformation;
 
     @Inject
-    public SingleMessageReindexingTask(ReIndexerPerformer reIndexerPerformer, Mailbox mailbox, MessageUid uid) {
+    public SingleMessageReindexingTask(ReIndexerPerformer reIndexerPerformer, MailboxId mailboxId, MessageUid uid) {
         this.reIndexerPerformer = reIndexerPerformer;
-        this.mailbox = mailbox;
+        this.mailboxId = mailboxId;
         this.uid = uid;
-        this.additionalInformation = new AdditionalInformation(mailbox, uid);
+        this.additionalInformation = new AdditionalInformation(mailboxId, uid);
     }
 
     @Override
     public Result run() {
         try {
-            return reIndexerPerformer.handleMessageReIndexing(mailbox, uid);
+            return reIndexerPerformer.handleMessageReIndexing(mailboxId, uid);
         } catch (MailboxException e) {
-            LOGGER.warn("Error encounteres while reindexing {} {} : {}", mailbox.getMailboxId(), mailbox.generateAssociatedPath(), uid, e);
+            LOGGER.warn("Error encounteres while reindexing {} : {}",mailboxId, uid, e);
             return Result.PARTIAL;
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/39572158/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
index 8a95a85..7161b38 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
@@ -65,8 +65,7 @@ public class CassandraReIndexerImplTest {
         MailboxSessionMapperFactory mailboxSessionMapperFactory = mailboxManager.getMapperFactory();
         messageSearchIndex = mock(ListeningMessageSearchIndex.class);
         reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory),
-            mailboxManager,
-            mailboxSessionMapperFactory);
+            mailboxManager, mailboxSessionMapperFactory);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/39572158/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
index 1f187d3..80bcecd 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
@@ -63,8 +63,7 @@ public class ReIndexerImplTest {
         MailboxSessionMapperFactory mailboxSessionMapperFactory = mailboxManager.getMapperFactory();
         messageSearchIndex = mock(ListeningMessageSearchIndex.class);
         reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory),
-            mailboxManager,
-            mailboxSessionMapperFactory);
+            mailboxManager, mailboxSessionMapperFactory);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/39572158/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
index a6ddc4e..f5e9382 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
@@ -443,7 +443,6 @@ class ReindexingRoutesTest {
                     .body("status", is("completed"))
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMailboxReindexingTask.MAILBOX_RE_INDEXING))
-                    .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
                     .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.successfullyReprocessMailCount", is(0))
                     .body("additionalInformation.failedReprocessedMailCount", is(0))
@@ -474,7 +473,6 @@ class ReindexingRoutesTest {
                     .body("status", is("completed"))
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMailboxReindexingTask.MAILBOX_RE_INDEXING))
-                    .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
                     .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.successfullyReprocessMailCount", is(1))
                     .body("additionalInformation.failedReprocessedMailCount", is(0))
@@ -610,7 +608,6 @@ class ReindexingRoutesTest {
                     .body("status", is("completed"))
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMessageReindexingTask.MESSAGE_RE_INDEXING))
-                    .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
                     .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.uid", is(1))
                     .body("startedDate", is(notNullValue()))
@@ -641,7 +638,6 @@ class ReindexingRoutesTest {
                     .body("status", is("completed"))
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMessageReindexingTask.MESSAGE_RE_INDEXING))
-                    .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
                     .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.uid", is((int) composedMessageId.getUid().asLong()))
                     .body("startedDate", is(notNullValue()))


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


[04/10] james-project git commit: MAILBOX-351 Task details should include mailboxId when relevant

Posted by bt...@apache.org.
MAILBOX-351 Task details should include mailboxId when relevant


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

Branch: refs/heads/master
Commit: c88e353db257d182d6af74caa7906c6d5a27cbe2
Parents: a09ef44
Author: Benoit Tellier <bt...@linagora.com>
Authored: Mon Nov 26 10:09:29 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../org/apache/james/webadmin/routes/ReindexingRoutesTest.java   | 4 ++++
 1 file changed, 4 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/c88e353d/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
index 08db547..a6ddc4e 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
@@ -444,6 +444,7 @@ class ReindexingRoutesTest {
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMailboxReindexingTask.MAILBOX_RE_INDEXING))
                     .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
+                    .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.successfullyReprocessMailCount", is(0))
                     .body("additionalInformation.failedReprocessedMailCount", is(0))
                     .body("startedDate", is(notNullValue()))
@@ -474,6 +475,7 @@ class ReindexingRoutesTest {
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMailboxReindexingTask.MAILBOX_RE_INDEXING))
                     .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
+                    .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.successfullyReprocessMailCount", is(1))
                     .body("additionalInformation.failedReprocessedMailCount", is(0))
                     .body("startedDate", is(notNullValue()))
@@ -609,6 +611,7 @@ class ReindexingRoutesTest {
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMessageReindexingTask.MESSAGE_RE_INDEXING))
                     .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
+                    .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.uid", is(1))
                     .body("startedDate", is(notNullValue()))
                     .body("submitDate", is(notNullValue()))
@@ -639,6 +642,7 @@ class ReindexingRoutesTest {
                     .body("taskId", is(notNullValue()))
                     .body("type", is(SingleMessageReindexingTask.MESSAGE_RE_INDEXING))
                     .body("additionalInformation.mailboxPath", is("#private:benwa@apache.org:INBOX"))
+                    .body("additionalInformation.mailboxId", is(mailboxId.serialize()))
                     .body("additionalInformation.uid", is((int) composedMessageId.getUid().asLong()))
                     .body("startedDate", is(notNullValue()))
                     .body("submitDate", is(notNullValue()))


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


[03/10] james-project git commit: MAILBOX-351 WebAdminReIndexing routes can rely directly on MailboxId

Posted by bt...@apache.org.
MAILBOX-351 WebAdminReIndexing routes can rely directly on MailboxId


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

Branch: refs/heads/master
Commit: 85350b38639e7ae5b15ef785f3c1dc1a80a3789d
Parents: 5e04df0
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Nov 23 15:41:11 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../james/webadmin/routes/ReindexingRoutes.java | 55 ++++++++------------
 .../webadmin/routes/ReindexingRoutesTest.java   |  6 ++-
 2 files changed, 27 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/85350b38/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
index e042580..e954a0f 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/main/java/org/apache/james/webadmin/routes/ReindexingRoutes.java
@@ -25,14 +25,11 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 
 import org.apache.james.core.User;
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.indexer.ReIndexer;
 import org.apache.james.mailbox.model.MailboxId;
-import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskId;
 import org.apache.james.task.TaskManager;
@@ -42,8 +39,6 @@ import org.apache.james.webadmin.utils.ErrorResponder;
 import org.apache.james.webadmin.utils.JsonTransformer;
 import org.eclipse.jetty.http.HttpStatus;
 
-import com.github.fge.lambdas.supplier.ThrowingSupplier;
-
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
@@ -58,6 +53,11 @@ import spark.Service;
 @Path("/mailboxIndex")
 @Produces("application/json")
 public class ReindexingRoutes implements Routes {
+    @FunctionalInterface
+    interface TaskGenerator {
+        Task generate() throws MailboxException;
+    }
+
     static final String BASE_PATH = "/mailboxIndex";
     private static final String USER_PARAM = ":user";
     private static final String MAILBOX_PARAM = ":mailbox";
@@ -67,15 +67,13 @@ public class ReindexingRoutes implements Routes {
     private static final String MESSAGE_PATH = MAILBOX_PATH + "/mails/" + UID_PARAM;
 
     private final TaskManager taskManager;
-    private final MailboxManager mailboxManager;
     private final MailboxId.Factory mailboxIdFactory;
     private final ReIndexer reIndexer;
     private final JsonTransformer jsonTransformer;
 
     @Inject
-    public ReindexingRoutes(TaskManager taskManager, MailboxManager mailboxManager, MailboxId.Factory mailboxIdFactory, ReIndexer reIndexer, JsonTransformer jsonTransformer) {
+    public ReindexingRoutes(TaskManager taskManager, MailboxId.Factory mailboxIdFactory, ReIndexer reIndexer, JsonTransformer jsonTransformer) {
         this.taskManager = taskManager;
-        this.mailboxManager = mailboxManager;
         this.mailboxIdFactory = mailboxIdFactory;
         this.reIndexer = reIndexer;
         this.jsonTransformer = jsonTransformer;
@@ -183,7 +181,7 @@ public class ReindexingRoutes implements Routes {
     })
     private TaskIdDto reIndexMailbox(Request request, Response response) {
         return wrap(request, response,
-            () -> reIndexer.reIndex(retrievePath(request)));
+            () -> reIndexer.reIndex(extractMailboxId(request)));
     }
 
     @POST
@@ -223,14 +221,25 @@ public class ReindexingRoutes implements Routes {
     })
     private TaskIdDto reIndexMessage(Request request, Response response) {
         return wrap(request, response,
-            () -> reIndexer.reIndex(retrievePath(request), extractUid(request)));
+            () -> reIndexer.reIndex(extractMailboxId(request), extractUid(request)));
     }
 
-    private TaskIdDto wrap(Request request, Response response, ThrowingSupplier<Task> taskGenerator) {
+    private TaskIdDto wrap(Request request, Response response, TaskGenerator taskGenerator) {
         ReIndexingRoutesUtil.enforceTaskParameter(request);
-        Task task = taskGenerator.get();
-        TaskId taskId = taskManager.submit(task);
-        return TaskIdDto.respond(response, taskId);
+        try {
+            Task task = taskGenerator.generate();
+            TaskId taskId = taskManager.submit(task);
+            return TaskIdDto.respond(response, taskId);
+        } catch (MailboxNotFoundException e) {
+            throw ErrorResponder.builder()
+                .statusCode(HttpStatus.BAD_REQUEST_400)
+                .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
+                .message("mailbox not found")
+                .cause(e)
+                .haltError();
+        } catch (MailboxException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     private User extractUser(Request request) {
@@ -246,10 +255,6 @@ public class ReindexingRoutes implements Routes {
         }
     }
 
-    private MailboxPath retrievePath(Request request) throws MailboxException {
-        return toMailboxPath(extractUser(request), extractMailboxId(request));
-    }
-
     private MailboxId extractMailboxId(Request request) {
         try {
             return mailboxIdFactory.fromString(request.params(MAILBOX_PARAM));
@@ -275,18 +280,4 @@ public class ReindexingRoutes implements Routes {
                 .haltError();
         }
     }
-
-    private MailboxPath toMailboxPath(User user, MailboxId mailboxId) throws MailboxException {
-        try {
-            MailboxSession systemSession = mailboxManager.createSystemSession(user.asString());
-            return mailboxManager.getMailbox(mailboxId, systemSession).getMailboxPath();
-        } catch (MailboxNotFoundException e) {
-            throw ErrorResponder.builder()
-                .statusCode(HttpStatus.BAD_REQUEST_400)
-                .type(ErrorResponder.ErrorType.INVALID_ARGUMENT)
-                .message("mailbox not found")
-                .cause(e)
-                .haltError();
-        }
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/85350b38/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
index f0c6459..6ac8cc8 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
@@ -61,6 +61,7 @@ import org.apache.mailbox.tools.indexer.UserReindexingTask;
 import org.eclipse.jetty.http.HttpStatus;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
@@ -95,7 +96,6 @@ class ReindexingRoutesTest {
             new TasksRoutes(taskManager, jsonTransformer),
             new ReindexingRoutes(
                 taskManager,
-                mailboxManager,
                 mailboxIdFactory,
                 reIndexer,
                 jsonTransformer),
@@ -401,6 +401,7 @@ class ReindexingRoutesTest {
                     .body("message", is("task query parameter is mandatory. The only supported value is `reIndex`"));
             }
 
+            @Disabled("Using user here makes no sens from an API perspective, and will be removed")
             @Test
             void mailboxReprocessingShouldFailWithBadUser() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
@@ -580,6 +581,7 @@ class ReindexingRoutesTest {
                     .body("message", is("task query parameter is mandatory. The only supported value is `reIndex`"));
             }
 
+            @Disabled("Using user here makes no sens from an API perspective, and will be removed")
             @Test
             void messageReprocessingShouldFailWithBadUser() throws Exception {
                 MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
@@ -624,7 +626,7 @@ class ReindexingRoutesTest {
                     .statusCode(HttpStatus.BAD_REQUEST_400)
                     .body("statusCode", is(400))
                     .body("type", is(ErrorResponder.ErrorType.INVALID_ARGUMENT.getType()))
-                    .body("message", is("mailbox not found"));
+                    .body("message", is("'uid' needs to be a parsable long"));
             }
         }
 


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


[05/10] james-project git commit: MAILBOX-351 ReIndexer should allow to reIndex per MailboxId

Posted by bt...@apache.org.
MAILBOX-351 ReIndexer should allow to reIndex per MailboxId


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

Branch: refs/heads/master
Commit: 1bd2c290518ef0305d0082c7208314ee30cebef6
Parents: 655d35b
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Nov 23 15:34:11 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/indexer/ReIndexer.java |  3 ++
 .../mailbox/tools/indexer/ReIndexerImpl.java    | 25 ++++++++--
 .../tools/indexer/ReIndexerPerformer.java       |  4 +-
 .../indexer/SingleMailboxReindexingTask.java    | 24 +++++----
 .../mailbox/tools/indexer/ThrowsReIndexer.java  |  6 +++
 .../indexer/CassandraReIndexerImplTest.java     |  4 +-
 .../tools/indexer/ReIndexerImplTest.java        | 51 +++++++++++++++++++-
 .../webadmin/routes/ReindexingRoutesTest.java   |  4 +-
 8 files changed, 102 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java b/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
index 817307b..5d4dd3a 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.indexer;
 import org.apache.james.core.User;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.task.Task;
 
@@ -31,6 +32,8 @@ public interface ReIndexer {
 
     Task reIndex(MailboxPath path) throws MailboxException;
 
+    Task reIndex(MailboxId mailboxId) throws MailboxException;
+
     Task reIndex() throws MailboxException;
 
     Task reIndex(MailboxPath path, MessageUid uid) throws MailboxException;

http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
index c32c533..d1c7b9e 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
@@ -22,9 +22,15 @@ package org.apache.mailbox.tools.indexer;
 import javax.inject.Inject;
 
 import org.apache.james.core.User;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.indexer.ReIndexer;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.task.Task;
 
 /**
@@ -39,15 +45,28 @@ import org.apache.james.task.Task;
 public class ReIndexerImpl implements ReIndexer {
 
     private final ReIndexerPerformer reIndexerPerformer;
+    private final MailboxManager mailboxManager;
+    private final MailboxSessionMapperFactory mapperFactory;
 
     @Inject
-    public ReIndexerImpl(ReIndexerPerformer reIndexerPerformer) {
+    public ReIndexerImpl(ReIndexerPerformer reIndexerPerformer, MailboxManager mailboxManager, MailboxSessionMapperFactory mapperFactory) {
         this.reIndexerPerformer = reIndexerPerformer;
+        this.mailboxManager = mailboxManager;
+        this.mapperFactory = mapperFactory;
     }
 
     @Override
-    public Task reIndex(MailboxPath path) {
-        return new SingleMailboxReindexingTask(reIndexerPerformer, path);
+    public Task reIndex(MailboxPath path) throws MailboxException {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
+        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(path);
+        return new SingleMailboxReindexingTask(reIndexerPerformer, mailbox);
+    }
+
+    @Override
+    public Task reIndex(MailboxId mailboxId) throws MailboxException {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
+        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
+        return new SingleMailboxReindexingTask(reIndexerPerformer, mailbox);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
index b86316f..552ddca 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
@@ -66,9 +66,7 @@ public class ReIndexerPerformer {
         this.mailboxSessionMapperFactory = mailboxSessionMapperFactory;
     }
 
-    Task.Result reIndex(MailboxPath path, ReprocessingContext reprocessingContext) throws MailboxException {
-        MailboxSession mailboxSession = mailboxManager.createSystemSession(path.getUser());
-        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(path);
+    Task.Result reIndex(Mailbox mailbox, ReprocessingContext reprocessingContext) throws MailboxException {
         return reIndexSingleMailbox(mailbox.getMailboxId(), reprocessingContext);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
index fc9f834..c3f024b 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMailboxReindexingTask.java
@@ -24,7 +24,7 @@ import java.util.Optional;
 import javax.inject.Inject;
 
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
 
@@ -33,16 +33,20 @@ public class SingleMailboxReindexingTask implements Task {
     public static final String MAILBOX_RE_INDEXING = "mailboxReIndexing";
 
     public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation {
-        private final MailboxPath mailboxPath;
+        private final Mailbox mailbox;
         private final ReprocessingContext reprocessingContext;
 
-        AdditionalInformation(MailboxPath mailboxPath, ReprocessingContext reprocessingContext) {
-            this.mailboxPath = mailboxPath;
+        AdditionalInformation(Mailbox mailbox, ReprocessingContext reprocessingContext) {
+            this.mailbox = mailbox;
             this.reprocessingContext = reprocessingContext;
         }
 
         public String getMailboxPath() {
-            return mailboxPath.asString();
+            return mailbox.generateAssociatedPath().asString();
+        }
+
+        public String getMailboxId() {
+            return mailbox.getMailboxId().serialize();
         }
 
         public int getSuccessfullyReprocessMailCount() {
@@ -55,22 +59,22 @@ public class SingleMailboxReindexingTask implements Task {
     }
 
     private final ReIndexerPerformer reIndexerPerformer;
-    private final MailboxPath path;
+    private final Mailbox mailbox;
     private final AdditionalInformation additionalInformation;
     private final ReprocessingContext reprocessingContext;
 
     @Inject
-    public SingleMailboxReindexingTask(ReIndexerPerformer reIndexerPerformer, MailboxPath path) {
+    public SingleMailboxReindexingTask(ReIndexerPerformer reIndexerPerformer, Mailbox mailbox) {
         this.reIndexerPerformer = reIndexerPerformer;
-        this.path = path;
+        this.mailbox = mailbox;
         this.reprocessingContext = new ReprocessingContext();
-        this.additionalInformation = new AdditionalInformation(path, reprocessingContext);
+        this.additionalInformation = new AdditionalInformation(mailbox, reprocessingContext);
     }
 
     @Override
     public Result run() {
         try {
-            return reIndexerPerformer.reIndex(path, reprocessingContext);
+            return reIndexerPerformer.reIndex(mailbox, reprocessingContext);
         } catch (MailboxException e) {
             return Result.PARTIAL;
         }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
index 5ffb02b..f5016a1 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
@@ -23,6 +23,7 @@ import org.apache.james.core.User;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.indexer.ReIndexer;
+import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.task.Task;
 
@@ -34,6 +35,11 @@ public class ThrowsReIndexer implements ReIndexer {
     }
 
     @Override
+    public Task reIndex(MailboxId mailboxId) throws MailboxException {
+        throw new MailboxException("Not implemented");
+    }
+
+    @Override
     public Task reIndex() throws MailboxException {
         throw new MailboxException("Not implemented");
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
index 6c55478..8a95a85 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/CassandraReIndexerImplTest.java
@@ -64,7 +64,9 @@ public class CassandraReIndexerImplTest {
         mailboxManager = CassandraMailboxManagerProvider.provideMailboxManager(cassandra.getConf(), cassandra.getTypesProvider());
         MailboxSessionMapperFactory mailboxSessionMapperFactory = mailboxManager.getMapperFactory();
         messageSearchIndex = mock(ListeningMessageSearchIndex.class);
-        reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory));
+        reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory),
+            mailboxManager,
+            mailboxSessionMapperFactory);
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
index 74e834a..70a74ca 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
@@ -20,6 +20,7 @@
 package org.apache.mailbox.tools.indexer;
 
 import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
@@ -30,7 +31,9 @@ import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.indexer.ReIndexer;
+import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.model.ComposedMessageId;
@@ -58,7 +61,9 @@ public class ReIndexerImplTest {
         mailboxManager = new InMemoryIntegrationResources().createMailboxManager(new SimpleGroupMembershipResolver());
         MailboxSessionMapperFactory mailboxSessionMapperFactory = mailboxManager.getMapperFactory();
         messageSearchIndex = mock(ListeningMessageSearchIndex.class);
-        reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory));
+        reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory),
+            mailboxManager,
+            mailboxSessionMapperFactory);
     }
 
     @Test
@@ -154,4 +159,48 @@ public class ReIndexerImplTest {
         assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
             && message.getUid().equals(createdMessage.getUid()));
     }
+
+    @Test
+    void mailboxIdReIndexShouldBeWellPerformed() throws Exception {
+        MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
+        MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
+        ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
+            .appendMessage(
+                MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"),
+                systemSession);
+
+        reIndexer.reIndex(mailboxId).run();
+        ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class);
+        ArgumentCaptor<Mailbox> mailboxCaptor = ArgumentCaptor.forClass(Mailbox.class);
+
+        verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor.capture());
+        verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture());
+        verifyNoMoreInteractions(messageSearchIndex);
+
+        assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
+        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
+            && message.getUid().equals(createdMessage.getUid()));
+    }
+
+    @Test
+    void mailboxIdReIndexShouldBeWellPerformedWhenEmptyMailbox() throws Exception {
+        MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
+        MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
+
+        reIndexer.reIndex(mailboxId).run();
+        ArgumentCaptor<Mailbox> mailboxCaptor = ArgumentCaptor.forClass(Mailbox.class);
+
+        verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor.capture());
+        verifyNoMoreInteractions(messageSearchIndex);
+
+        assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
+    }
+
+    @Test
+    void mailboxIdReIndexShouldFailWhenMailboxNotFound() {
+        MailboxId mailboxId = InMemoryId.of(42);
+
+        assertThatThrownBy(() -> reIndexer.reIndex(mailboxId))
+            .isInstanceOf(MailboxNotFoundException.class);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/1bd2c290/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
index c0e90cf..f0c6459 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
@@ -85,7 +85,9 @@ class ReindexingRoutesTest {
             new ReIndexerPerformer(
                 mailboxManager,
                 searchIndex,
-                mailboxManager.getMapperFactory()));
+                mailboxManager.getMapperFactory()),
+            mailboxManager,
+            mailboxManager.getMapperFactory());
         JsonTransformer jsonTransformer = new JsonTransformer();
 
         webAdminServer = WebAdminUtils.createWebAdminServer(


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


[08/10] james-project git commit: MAILBOX-351 ReIndexerImpl test: make test names more accurate

Posted by bt...@apache.org.
MAILBOX-351 ReIndexerImpl test: make test names more accurate


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

Branch: refs/heads/master
Commit: f1f981a4b75d49bdae4ed908f71f50f07ef0f12a
Parents: 9b43051
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Nov 28 15:48:08 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../mailbox/tools/indexer/ReIndexerImplTest.java      | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/f1f981a4/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
index 3e0661f..4ada930 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
@@ -67,7 +67,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void reIndexShouldBeWellPerformed() throws Exception {
+    void reIndexAllShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -94,7 +94,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void mailboxPathUserShouldBeUsedWhenReIndexing() throws Exception {
+    void reIndexMailboxPathShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -120,7 +120,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void userReIndexShouldBeWellPerformed() throws Exception {
+    void userReIndexShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -146,7 +146,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void messageReIndexShouldBeWellPerformed() throws Exception {
+    void messageReIndexShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -169,7 +169,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void messageReIndexUsingMailboxIdShouldBeWellPerformed() throws Exception {
+    void messageReIndexUsingMailboxIdShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -212,7 +212,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void mailboxIdReIndexShouldBeWellPerformed() throws Exception {
+    void mailboxIdReIndexShouldCallMessageSearchIndex() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
         ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
@@ -236,7 +236,7 @@ public class ReIndexerImplTest {
     }
 
     @Test
-    void mailboxIdReIndexShouldBeWellPerformedWhenEmptyMailbox() throws Exception {
+    void mailboxIdReIndexShouldOnlyDropSearchIndexWhenEmptyMailbox() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
 


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


[02/10] james-project git commit: MAILBOX-351 ReIndexerImpl test: use Assertj statisfies

Posted by bt...@apache.org.
MAILBOX-351 ReIndexerImpl test: use Assertj statisfies


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

Branch: refs/heads/master
Commit: 9b430511cd11a16873caf1c51530084f196d200d
Parents: 3957215
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Nov 28 15:44:34 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../tools/indexer/ReIndexerImplTest.java        | 56 ++++++++++++--------
 1 file changed, 34 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9b430511/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
index 80bcecd..3e0661f 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
@@ -85,10 +85,12 @@ public class ReIndexerImplTest {
         verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture());
         verifyNoMoreInteractions(messageSearchIndex);
 
-        assertThat(mailboxCaptor1.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(mailboxCaptor2.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
-            && message.getUid().equals(createdMessage.getUid()));
+        assertThat(mailboxCaptor1.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(mailboxCaptor2.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(messageCaptor.getValue()).satisfies(message -> {
+            assertThat(message.getMailboxId()).isEqualTo(mailboxId);
+            assertThat(message.getUid()).isEqualTo(createdMessage.getUid());
+        });
     }
 
     @Test
@@ -109,10 +111,12 @@ public class ReIndexerImplTest {
         verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture());
         verifyNoMoreInteractions(messageSearchIndex);
 
-        assertThat(mailboxCaptor1.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(mailboxCaptor2.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
-            && message.getUid().equals(createdMessage.getUid()));
+        assertThat(mailboxCaptor1.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(mailboxCaptor2.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(messageCaptor.getValue()).satisfies(message -> {
+            assertThat(message.getMailboxId()).isEqualTo(mailboxId);
+            assertThat(message.getUid()).isEqualTo(createdMessage.getUid());
+        });
     }
 
     @Test
@@ -133,10 +137,12 @@ public class ReIndexerImplTest {
         verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor2.capture(), messageCaptor.capture());
         verifyNoMoreInteractions(messageSearchIndex);
 
-        assertThat(mailboxCaptor1.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(mailboxCaptor2.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
-            && message.getUid().equals(createdMessage.getUid()));
+        assertThat(mailboxCaptor1.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(mailboxCaptor2.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(messageCaptor.getValue()).satisfies(message -> {
+            assertThat(message.getMailboxId()).isEqualTo(mailboxId);
+            assertThat(message.getUid()).isEqualTo(createdMessage.getUid());
+        });
     }
 
     @Test
@@ -155,9 +161,11 @@ public class ReIndexerImplTest {
         verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture());
         verifyNoMoreInteractions(messageSearchIndex);
 
-        assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
-            && message.getUid().equals(createdMessage.getUid()));
+        assertThat(mailboxCaptor.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(messageCaptor.getValue()).satisfies(message -> {
+            assertThat(message.getMailboxId()).isEqualTo(mailboxId);
+            assertThat(message.getUid()).isEqualTo(createdMessage.getUid());
+        });
     }
 
     @Test
@@ -176,9 +184,11 @@ public class ReIndexerImplTest {
         verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture());
         verifyNoMoreInteractions(messageSearchIndex);
 
-        assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
-            && message.getUid().equals(createdMessage.getUid()));
+        assertThat(mailboxCaptor.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(messageCaptor.getValue()).satisfies(message -> {
+            assertThat(message.getMailboxId()).isEqualTo(mailboxId);
+            assertThat(message.getUid()).isEqualTo(createdMessage.getUid());
+        });
     }
 
     @Test
@@ -218,9 +228,11 @@ public class ReIndexerImplTest {
         verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture());
         verifyNoMoreInteractions(messageSearchIndex);
 
-        assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
-        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
-            && message.getUid().equals(createdMessage.getUid()));
+        assertThat(mailboxCaptor.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
+        assertThat(messageCaptor.getValue()).satisfies(message -> {
+            assertThat(message.getMailboxId()).isEqualTo(mailboxId);
+            assertThat(message.getUid()).isEqualTo(createdMessage.getUid());
+        });
     }
 
     @Test
@@ -234,7 +246,7 @@ public class ReIndexerImplTest {
         verify(messageSearchIndex).deleteAll(any(MailboxSession.class), mailboxCaptor.capture());
         verifyNoMoreInteractions(messageSearchIndex);
 
-        assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
+        assertThat(mailboxCaptor.getValue()).satisfies(mailbox -> assertThat(mailbox.getMailboxId()).isEqualTo(mailboxId));
     }
 
     @Test


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


[07/10] james-project git commit: MAILBOX-351 ReIndexer should allow to reIndex single message per MailboxId

Posted by bt...@apache.org.
MAILBOX-351 ReIndexer should allow to reIndex single message per MailboxId


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

Branch: refs/heads/master
Commit: 5e04df0550ae7226899ebfe882ec06ed6cf2d977
Parents: 1bd2c29
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Nov 23 15:39:44 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Thu Nov 29 10:52:45 2018 +0700

----------------------------------------------------------------------
 .../apache/james/mailbox/indexer/ReIndexer.java |  2 +
 .../mailbox/tools/indexer/ReIndexerImpl.java    | 13 +++++-
 .../tools/indexer/ReIndexerPerformer.java       |  7 +---
 .../indexer/SingleMessageReindexingTask.java    | 28 ++++++++-----
 .../mailbox/tools/indexer/ThrowsReIndexer.java  |  6 ++-
 .../tools/indexer/ReIndexerImplTest.java        | 42 ++++++++++++++++++++
 6 files changed, 80 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5e04df05/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java b/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
index 5d4dd3a..837ba38 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/indexer/ReIndexer.java
@@ -38,4 +38,6 @@ public interface ReIndexer {
 
     Task reIndex(MailboxPath path, MessageUid uid) throws MailboxException;
 
+    Task reIndex(MailboxId mailboxId, MessageUid uid) throws MailboxException;
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5e04df05/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
index d1c7b9e..761a6cb 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerImpl.java
@@ -80,7 +80,16 @@ public class ReIndexerImpl implements ReIndexer {
     }
 
     @Override
-    public Task reIndex(MailboxPath path, MessageUid uid) {
-        return new SingleMessageReindexingTask(reIndexerPerformer, path, uid);
+    public Task reIndex(MailboxPath path, MessageUid uid) throws MailboxException {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
+        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxByPath(path);
+        return new SingleMessageReindexingTask(reIndexerPerformer, mailbox, uid);
+    }
+
+    @Override
+    public Task reIndex(MailboxId mailboxId, MessageUid uid) throws MailboxException {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession("ReIndexingImap");
+        Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
+        return new SingleMessageReindexingTask(reIndexerPerformer, mailbox, uid);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5e04df05/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
index 552ddca..4e49f33 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
@@ -31,7 +31,6 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
-import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageRange;
 import org.apache.james.mailbox.model.search.MailboxQuery;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
@@ -99,10 +98,8 @@ public class ReIndexerPerformer {
         }
     }
 
-    Task.Result handleMessageReIndexing(MailboxPath path, MessageUid uid) throws MailboxException {
-        MailboxSession mailboxSession = mailboxManager.createSystemSession(path.getUser());
-        Mailbox mailbox = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession)
-            .findMailboxByPath(path);
+    Task.Result handleMessageReIndexing(Mailbox mailbox, MessageUid uid) throws MailboxException {
+        MailboxSession mailboxSession = mailboxManager.createSystemSession(mailbox.getUser());
 
         return handleMessageReIndexing(mailboxSession, mailbox, uid);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5e04df05/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
index 501ee6f..ef6aa07 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/SingleMessageReindexingTask.java
@@ -25,25 +25,32 @@ import javax.inject.Inject;
 
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.task.Task;
 import org.apache.james.task.TaskExecutionDetails;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class SingleMessageReindexingTask implements Task {
+    private static final Logger LOGGER = LoggerFactory.getLogger(SingleMessageReindexingTask.class);
 
     public static final String MESSAGE_RE_INDEXING = "messageReIndexing";
 
     public static class AdditionalInformation implements TaskExecutionDetails.AdditionalInformation {
-        private final MailboxPath mailboxPath;
+        private final Mailbox mailbox;
         private final MessageUid uid;
 
-        AdditionalInformation(MailboxPath mailboxPath, MessageUid uid) {
-            this.mailboxPath = mailboxPath;
+        AdditionalInformation(Mailbox mailbox, MessageUid uid) {
+            this.mailbox = mailbox;
             this.uid = uid;
         }
 
         public String getMailboxPath() {
-            return mailboxPath.asString();
+            return mailbox.generateAssociatedPath().asString();
+        }
+
+        public String getMailboxId() {
+            return mailbox.getMailboxId().serialize();
         }
 
         public long getUid() {
@@ -52,23 +59,24 @@ public class SingleMessageReindexingTask implements Task {
     }
 
     private final ReIndexerPerformer reIndexerPerformer;
-    private final MailboxPath path;
+    private final Mailbox mailbox;
     private final MessageUid uid;
     private final AdditionalInformation additionalInformation;
 
     @Inject
-    public SingleMessageReindexingTask(ReIndexerPerformer reIndexerPerformer, MailboxPath path, MessageUid uid) {
+    public SingleMessageReindexingTask(ReIndexerPerformer reIndexerPerformer, Mailbox mailbox, MessageUid uid) {
         this.reIndexerPerformer = reIndexerPerformer;
-        this.path = path;
+        this.mailbox = mailbox;
         this.uid = uid;
-        this.additionalInformation = new AdditionalInformation(path, uid);
+        this.additionalInformation = new AdditionalInformation(mailbox, uid);
     }
 
     @Override
     public Result run() {
         try {
-            return reIndexerPerformer.handleMessageReIndexing(path, uid);
+            return reIndexerPerformer.handleMessageReIndexing(mailbox, uid);
         } catch (MailboxException e) {
+            LOGGER.warn("Error encounteres while reindexing {} {} : {}", mailbox.getMailboxId(), mailbox.generateAssociatedPath(), uid, e);
             return Result.PARTIAL;
         }
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5e04df05/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
index f5016a1..5a5173b 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ThrowsReIndexer.java
@@ -28,7 +28,6 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.task.Task;
 
 public class ThrowsReIndexer implements ReIndexer {
-
     @Override
     public Task reIndex(MailboxPath path) throws MailboxException {
         throw new MailboxException("Not implemented");
@@ -53,4 +52,9 @@ public class ThrowsReIndexer implements ReIndexer {
     public Task reIndex(MailboxPath path, MessageUid uid) throws MailboxException {
         throw new MailboxException("Not implemented");
     }
+
+    @Override
+    public Task reIndex(MailboxId mailboxId, MessageUid uid) throws MailboxException {
+        throw new MailboxException("Not implemented");
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5e04df05/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
----------------------------------------------------------------------
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
index 70a74ca..1f187d3 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
@@ -29,6 +29,7 @@ import static org.mockito.Mockito.verifyNoMoreInteractions;
 import org.apache.james.core.User;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageManager;
+import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
@@ -161,6 +162,47 @@ public class ReIndexerImplTest {
     }
 
     @Test
+    void messageReIndexUsingMailboxIdShouldBeWellPerformed() throws Exception {
+        MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
+        MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
+        ComposedMessageId createdMessage = mailboxManager.getMailbox(INBOX, systemSession)
+            .appendMessage(
+                MessageManager.AppendCommand.builder().build("header: value\r\n\r\nbody"),
+                systemSession);
+
+        reIndexer.reIndex(mailboxId, createdMessage.getUid()).run();
+        ArgumentCaptor<MailboxMessage> messageCaptor = ArgumentCaptor.forClass(MailboxMessage.class);
+        ArgumentCaptor<Mailbox> mailboxCaptor = ArgumentCaptor.forClass(Mailbox.class);
+
+        verify(messageSearchIndex).add(any(MailboxSession.class), mailboxCaptor.capture(), messageCaptor.capture());
+        verifyNoMoreInteractions(messageSearchIndex);
+
+        assertThat(mailboxCaptor.getValue()).matches(mailbox -> mailbox.getMailboxId().equals(mailboxId));
+        assertThat(messageCaptor.getValue()).matches(message -> message.getMailboxId().equals(mailboxId)
+            && message.getUid().equals(createdMessage.getUid()));
+    }
+
+    @Test
+    void messageReIndexUsingMailboxIdShouldDoNothingWhenUidNotFound() throws Exception {
+        MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
+        MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();
+        MessageUid uid = MessageUid.of(36);
+
+        reIndexer.reIndex(mailboxId, uid).run();
+
+        verifyNoMoreInteractions(messageSearchIndex);
+    }
+
+    @Test
+    void messageReIndexUsingMailboxIdShouldFailWhenMailboxNotFound() {
+        MailboxId mailboxId = InMemoryId.of(42);
+        MessageUid uid = MessageUid.of(36);
+
+        assertThatThrownBy(() -> reIndexer.reIndex(mailboxId, uid))
+            .isInstanceOf(MailboxNotFoundException.class);
+    }
+
+    @Test
     void mailboxIdReIndexShouldBeWellPerformed() throws Exception {
         MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
         MailboxId mailboxId = mailboxManager.createMailbox(INBOX, systemSession).get();


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