Hi,
Could you please give us a end-to-end example of what you describe?
How does a Task declare the endpoint it contribute to?
How are conflicts managed?
Are routes modular or each endpoint can declare some point of
extensions?
Cheers,
--
Matthieu Baechler
On Mon, 2019-12-02 at 14:33 +0700, Tellier Benoit wrote:
> 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]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]