Hi all,
## Context
While contributing a way to rebuild JMAP fast messageView projection via
webadmin, we end up with the need of supporting the following actions on
the same endpoint:
Example:
POST /users/BOB/mailboxes?task=rebuildMessageFastViewProjection
POST /users/BOB/mailboxes?task=reIndex
ReIndexing is a task defined in mailbox-api that any backend relying on
a message search index can rely on.
rebuildMessageFastViewProjection is an action that only make sense for
products shipping JMAP.
We need a way to 'combine' both actions within one endpoint in a modular
way.
## Proposal
- Defining a `TaskRegistration` object:
```
class TaskRegistration {
private final TaskType taskType;
private final TaskGenerator taskGenerator;
}
interface TaskGenerator {
Task generate(Request request);
}
```
- Thus a @Named task factory can collect task registration for each one
of these 03 endpoints, which can thus be defined in a modular way.
- We can thus post ReIndexing to be using these taskDeclaration
- And finally using them to add task=rebuildMessageFastViewProjection
support to this endpoint.
## Consequence
Each back-end can register the actions that make sense for it.
We would furthermore ship a mechanism allowing a REST resource oriented
mechanism that will prevent in the future the creation of RPC like
endpoints.
Would such a proposal make sense?
Best regards,
Benoit.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]