public class Action<A extends Action> extends Rule<A> implements OpenAPIWriter<A>
Nearly the entire job of the Engine and Api Endpoint configuration is to match one or more Action subclass instances to a Request.
All matched actions are sorted by their order property and executed in sequence as a Chain of Responsibility pattern.
Colloquially, at Rocket Partners we somehow started to call this the 'action sandwich'.
If an Action should be run across multiple Endpoints, a logging or security Action for example, it can be added directly to an Api via Api.withAction.
In most cases however, you will group sets of related actions under an Endpoint and add the Endpoint to the Api.
Both Api registered Actions and Endpoint registered Actions can be selected into the 'action sandwich' for a particular Request.
One big difference however is that includesPaths and excludePaths are relative to the Api path for
Api registered Actions and relative to the Endpoint path for Endpoint registered actions. They are all sorted togeter in one big group according to order.
Once the Engine has selected the Actions to run for a given request (creating the 'action sandwich'), they are all loaded into a Chain object
which is responsible for invoking run(Request, Response) on each one in sequence.
You can override run to process all Requests this Action is selected for, or you can override any of the HTTP method specific doGet/Post/Put/Patch/Delete() handlers
if you want to segregate your business logic by HTTP method.
Rule.RuleMatcherALL_METHODS, configMap, description, excludeMatchers, excludeOn, includeMatchers, includeOn, log, name, order, params| Constructor and Description |
|---|
Action() |
| Modifier and Type | Method and Description |
|---|---|
void |
configureOp(io.inversion.utils.Task task,
Op op)
This task has been selected to run as part of the supplied operation, this
callback allows actions to perform any custom configuration on the op.
|
void |
doDelete(Request req,
Response res)
Handle an HTTP DELETE.
|
void |
doGet(Request req,
Response res)
Handle an HTTP GET.
|
void |
doPatch(Request req,
Response res)
Handle an HTTP PATCH.
|
void |
doPost(Request req,
Response res)
Handle an HTTP POST.
|
void |
doPut(Request req,
Response res)
Handle an HTTP PUT.
|
java.util.List<io.inversion.utils.Path> |
getFullIncludePaths(Api api,
Db db,
java.lang.String method,
io.inversion.utils.Path endpointPath,
boolean relative) |
protected java.util.LinkedHashSet<io.inversion.utils.Path> |
getIncludePaths(Api api,
Db db,
java.lang.String method) |
boolean |
isDecoration() |
static io.inversion.utils.Path |
joinPaths(io.inversion.utils.Path endpointPath,
io.inversion.utils.Path actionPath,
boolean relative) |
static io.inversion.utils.Path |
joinPaths0(io.inversion.utils.Path endpointPath,
io.inversion.utils.Path actionPath,
boolean relative) |
void |
run(Request req,
Response res)
Override this method with your custom business logic or override one of the
http method "doMETHOD" specific handlers.
|
protected void |
run0(Request req,
Response res) |
A |
withDecoration(boolean decoration) |
afterWiringComplete, checkLazyConfig, compareTo, doLazyConfig, getAllExcludePaths, getAllIncludeMethods, getAllIncludePaths, getDefaultIncludeMatchers, getDescription, getExcludeMatchers, getIncludeMatchers, getName, getOrder, getParams, match, match, matches, matches, toString, withDescription, withExcludeOn, withExcludeOn, withIncludeOn, withIncludeOn, withName, withOrder, withParam, withParamsclone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitaddResponse, addResponse, beautifyTag, buildOperation, documentOpDelete, documentOperationSchema, documentOpFind, documentOpGet, documentOpPatch, documentOpPost, documentOpPut, documentOpRelated, documentParam, documentQueryParams, documentRequestSchema, documentResourceSchema, documentResponseSchema, findOp, getDescription, getSchemaRef, hasParam, hook_documentOp, newComponentRefSchema, newHrefSchema, newTypeSchema, removeReadOnlyPropertiespublic java.util.List<io.inversion.utils.Path> getFullIncludePaths(Api api, Db db, java.lang.String method, io.inversion.utils.Path endpointPath, boolean relative)
protected java.util.LinkedHashSet<io.inversion.utils.Path> getIncludePaths(Api api, Db db, java.lang.String method)
public static io.inversion.utils.Path joinPaths(io.inversion.utils.Path endpointPath,
io.inversion.utils.Path actionPath,
boolean relative)
public static io.inversion.utils.Path joinPaths0(io.inversion.utils.Path endpointPath,
io.inversion.utils.Path actionPath,
boolean relative)
public void configureOp(io.inversion.utils.Task task,
Op op)
task - op - public void run(Request req, Response res) throws ApiException
req - the Request being servicedres - the Reponse being generatedApiExceptionprotected void run0(Request req, Response res) throws ApiException
ApiExceptionpublic void doGet(Request req, Response res) throws ApiException
Override run() to handle all requests or override this method with your business logic specifically for a GET request
req - the request to runres - the response to populateApiExceptionpublic void doPost(Request req, Response res) throws ApiException
Override run() to handle all requests or override this method with your business logic for a POST request
req - the request to runres - the response to populateApiExceptionpublic void doPut(Request req, Response res) throws ApiException
Override run() to handle all requests or override this method with your business logic for a PUT request
req - the request to runres - the response to populateApiExceptionpublic void doPatch(Request req, Response res) throws ApiException
Override run() to handle all requests or override this method with your business logic for a PATCH request
req - the request to runres - the response to populateApiExceptionpublic void doDelete(Request req, Response res) throws ApiException
Override run() to handle all requests or override this method with your business logic for a DELETE request
req - the request to runres - the response to populateApiExceptionpublic boolean isDecoration()
public A withDecoration(boolean decoration)
Copyright © 2023 Rocket Partners, LLC. All rights reserved.