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: server-dev-unsubscr...@james.apache.org > For additional commands, e-mail: server-dev-h...@james.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org