Determine how to process a request.
Determine how to process a request. This is the main method than an ActionRefiner has to implement. It can decide to immediately intercept the request and return a Result (Left), or continue processing with a new parameter of type P (Right).
the input request
Either a result or a new parameter to pass to the Action block
Compose this ActionFunction with another, with this one applied first.
Compose this ActionFunction with another, with this one applied first.
ActionFunction with which to compose
The new ActionFunction
Compose another ActionFunction with this one, with this one applied last.
Compose another ActionFunction with this one, with this one applied last.
ActionFunction with which to compose
The new ActionFunction
Get the execution context to run the request in.
Get the execution context to run the request in. Override this if you want a custom execution context
The execution context
Invoke the block.
Invoke the block. This is the main method that an ActionBuilder has to implement, at this stage it can wrap it in any other actions, modify the request object or potentially use a different class to represent the request.
The request
The block of code to invoke
A future of the result
A simple kind of ActionFunction which, given a request (of type R), may either immediately produce a Result (for example, an error), or call its Action block with a parameter (of type P). The critical (abstract) function is refine.