Java methods can contain any of the following parameters in any order:
-
Parameters based on class types:
- Request objects:
- {@code AsyncContext}
- {@link oajr.arg.CookieList}
- {@code DispatcherType}
- {@link oaj.httppart.HttpPartParserSession}
- {@link oaj.httppart.HttpPartSerializerSession}
- {@code HttpServletRequest}
- {@link java.io.InputStream}
- {@link oaj.parser.InputStreamParser}
- {@link java.util.Locale}
- {@link oaj.cp.Messages}
- {@link oaj.parser.Parser}
- {@link java.security.Principal}
- {@link java.io.Reader}
- {@link oaj.parser.ReaderParser}
- {@link oajr.httppart.RequestAttributes}
- {@link oajr.httppart.RequestContent}
- {@link oajr.httppart.RequestFormParams}
- {@link oajr.httppart.RequestHeaders}
- {@link oajr.httppart.RequestPathParams}
- {@link oajr.httppart.RequestQueryParams}
- {@link java.util.ResourceBundle}
- {@link oajr.RestRequest}
- {@code ServletInputStream}
- {@link oaj.dto.swagger.Swagger}
- {@link java.util.TimeZone}
- {@link oaj.UriContext}
- {@link oaj.UriResolver}
- {@link oaj.svl.VarResolverSession}
- Response objects:
- {@code HttpServletResponse}
- {@link java.io.OutputStream}
- {@link oajr.RestResponse}
- {@code ServletOutputStream}
- {@link java.io.Writer}
- Session objects:
- {@code HttpSession}
- {@link oajr.RestSession}
- {@link oajr.util.UrlPath}
- {@link oajr.util.UrlPathMatch}
- {@link oaj.cp.BeanStore}
- {@link oajr.RestOpSession}
- Parsed request header values:
- {@link oaj.http.header.Accept}
- {@link oaj.http.header.AcceptCharset}
- {@link oaj.http.header.AcceptEncoding}
- {@link oaj.http.header.AcceptLanguage}
- {@link oaj.http.header.AcceptRanges}
- {@link oaj.http.header.Authorization}
- {@link oaj.http.header.CacheControl}
- {@link oaj.http.header.ClientVersion}
- {@link oaj.http.header.Connection}
- {@link oaj.http.header.ContentDisposition}
- {@link oaj.http.header.ContentEncoding}
- {@link oaj.http.header.ContentLength}
- {@link oaj.http.header.ContentType}
- {@link oaj.http.header.Date}
- {@link oaj.http.header.Debug}
- {@link oaj.http.header.Expect}
- {@link oaj.http.header.Forwarded}
- {@link oaj.http.header.From}
- {@link oaj.http.header.Host}
- {@link oaj.http.header.IfMatch}
- {@link oaj.http.header.IfModifiedSince}
- {@link oaj.http.header.IfNoneMatch}
- {@link oaj.http.header.IfRange}
- {@link oaj.http.header.IfUnmodifiedSince}
- {@link oaj.http.header.MaxForwards}
- {@link oaj.http.header.NoTrace}
- {@link oaj.http.header.Origin}
- {@link oaj.http.header.Pragma}
- {@link oaj.http.header.ProxyAuthorization}
- {@link oaj.http.header.Range}
- {@link oaj.http.header.Referer}
- {@link oaj.http.header.TE}
- {@link oaj.http.header.Thrown}
- {@link oaj.http.header.Upgrade}
- {@link oaj.http.header.UserAgent}
- {@link oaj.http.header.Warning}
- Context values:
- {@link oaj.BeanContext}
- {@link oajr.logger.CallLogger}
- {@link oaj.config.Config}
- {@link oajr.debug.DebugEnablement}
- {@link oaj.encoders.EncoderSet}
- {@link oaj.cp.FileFinder}
- {@link oaj.jsonschema.JsonSchemaGenerator}
- {@link java.util.logging.Logger}
- {@link oajr.stats.MethodExecStore}
- {@link oaj.parser.ParserSet}
- {@link oajr.RestChildren}
- {@link oajr.RestContext}
- {@link oajr.stats.RestContextStats}
- {@link oajr.RestOpContext}
- {@link oajr.RestOperations}
- {@link oaj.serializer.SerializerSet}
- {@link oajr.staticfile.StaticFiles}
- {@link oajr.stats.ThrownStore}
- Annotated parameters (either on the parameter or parameter type):
- {@link oajr.annotation.Attr}
- {@link oaj.http.annotation.Content}
- {@link oaj.http.annotation.Path}
- {@link oaj.http.annotation.FormData}
- {@link oaj.http.annotation.HasFormData}
- {@link oaj.http.annotation.Query}
- {@link oaj.http.annotation.HasQuery}
- {@link oaj.http.annotation.Header}
- {@link oaj.http.annotation.StatusCode}
- {@link oajr.annotation.Method}
- {@link oaj.http.annotation.Request}
- {@link oaj.http.annotation.Response}
In Spring Boot environments, any available Spring Beans can also be passed in as parameters.
| @RestGet("/example1/{a1}/{a2}/{a3}/*")
| public String doGetExample1(
| RestRequest req,
| RestResponse res,
| @Method String method,
| @Path("a1") String a1,
| @Path("a2") int a2,
| @Path("a3") UUID a3,
| @Query("p1") int p1,
| @Query("p2") String p2,
| @Query("p3") UUID p3,
| @HasQuery("p3") boolean hasP3,
| @Path("/*") String remainder,
| @Header("Accept-Language") String lang,
| @Header("Accept") String accept,
| @Header("DNT") int doNotTrack,
| RequestAttributes attributes,
| ResourceBundle nls
| ) {
| // Do something with all of those
| }
Additional parameter types can be defined via the annotation {@link oajr.annotation.Rest#restOpArgs()} or by calling {@link oajr.RestContext.Builder#restOpArgs(Class...)}.
| @Rest(
| restOpArgs={ MyOpArg.class } // Option #1 - Via annotation
| )
| public class MyResource extends BasicRestObject {
|
| // Option #2 - Programmatically
| @RestInit
| public void init(RestContext.Builder builder) {
| builder.restOpArgs(MyOpArg.class);
| }
| }