James allows to index and search for specific emails in a MessageSearchIndex. However some implementations stores data in a separated data store (eg Lucene or ElasticSearch), which brings data consistencies issues. The way to solve these issues is to re-index data from the mailbox.
Such process is currently triggered from the Command Line Client, but is not available yet using *webadmin. The goal of this task is to enable it.
To do so, in webadmin-mailbox create a ReindexRoutes class. You will implement the following proposed endpoints using the Reindexer:
PUT /reindex PUT /reindex/:namespace/:user/:mailboxName
You will, through a simple locking strategy, ensure that James is not performing two re-indexation at the same time.
You will implement tests for your routes in ReindexRoutesTest. You can get a look at surrounding tests.
Don't hesitate to ask for help on the *Gitter *chat.