The servlets in the previous section implemented the {@link oajr.config.BasicUniversalConfig} which simply defines
a preconfigured set of annotations that get inherited by the child classes:
| /**
| * Predefined configuration for a REST resource that supports all languages
| * and provides common default configuration values.
| */
| @Rest(
|
| // Default serializers for all Java methods in the class.
| serializers={
| HtmlDocSerializer.class,
| HtmlStrippedDocSerializer.class,
| HtmlSchemaDocSerializer.class,
| JsonSerializer.class,
| Json5Serializer.class,
| JsonSchemaSerializer.class,
| XmlDocSerializer.class,
| UonSerializer.class,
| UrlEncodingSerializer.class,
| OpenApiSerializer.class,
| MsgPackSerializer.class,
| SoapXmlSerializer.class,
| PlainTextSerializer.class,
| CsvSerializer.class
| },
|
| // Default parsers for all Java methods in the class.
| parsers={
| JsonParser.class,
| Json5Parser.class,
| XmlParser.class,
| HtmlParser.class,
| UonParser.class,
| UrlEncodingParser.class,
| OpenApiParser.class,
| MsgPackParser.class,
| PlainTextParser.class,
| CsvParser.class
| }
| )
| public interface BasicUniversalConfig extends DefaultConfig, DefaultHtmlConfig {}
| /**
| * Predefined REST configuration that defines common default values for all configurations.
| */
| @Rest(
| // Configuration file.
| config="$S{j.configFile,$E{J_CONFIG_FILE,SYSTEM_DEFAULT}}",
|
| // Standard fields.
| path="",
| roleGuard="",
| rolesDeclared="",
|
| // Configuration beans.
| converters={},
| encoders={IdentityEncoder.class},
| guards={},
| parsers={},
| partParser=OpenApiParser.class,
| partSerializer=OpenApiSerializer.class,
| responseProcessors={
| ReaderProcessor.class,
| InputStreamProcessor.class,
| ThrowableProcessor.class,
| HttpResponseProcessor.class,
| HttpResourceProcessor.class,
| HttpEntityProcessor.class,
| ResponseBeanProcessor.class,
| PlainTextPojoProcessor.class,
| SerializedPojoProcessor.class
| },
| restOpArgs={
| AttributeArg.class,
| ContentArg.class,
| FormDataArg.class,
| HasFormDataArg.class,
| HasQueryArg.class,
| HeaderArg.class,
| HttpServletRequestArgs.class,
| HttpServletResponseArgs.class,
| HttpSessionArgs.class,
| InputStreamParserArg.class,
| MethodArg.class,
| ParserArg.class,
| PathArg.class,
| QueryArg.class,
| ReaderParserArg.class,
| RequestBeanArg.class,
| ResponseBeanArg.class,
| ResponseHeaderArg.class,
| ResponseCodeArg.class,
| RestContextArgs.class,
| RestSessionArgs.class,
| RestOpContextArgs.class,
| RestOpSessionArgs.class,
| RestRequestArgs.class,
| RestResponseArgs.class,
| DefaultArg.class
| },
| serializers={},
|
| // Configurable settings.
| allowedHeaderParams="$S{j.allowedHeaderParams,$E{J_ALLOWED_HEADER_PARAMS,Accept,Content-Type}}",
| allowedMethodHeaders="$S{j.allowedMethodHeaders,$E{J_ALLOWED_METHOD_HEADERS,}}",
| allowedMethodParams="$S{j.allowedMethodParams,$E{J_ALLOWED_METHOD_PARAMS,HEAD,OPTIONS}}",
| clientVersionHeader="$S{j.clientVersionHeader,$E{J_CLIENT_VERSION_HEADER,Client-Version}}",
| debug="$S{j.debug,$E{J_DEBUG,}}",
| debugOn="$S{j.debugOn,$E{J_DEBUG_ON,}}",
| defaultAccept="$S{j.defaultAccept,$E{J_DEFAULT_ACCEPT,}}",
| defaultCharset="$S{j.defaultCharset,$E{J_DEFAULT_CHARSET,UTF-8}}",
| defaultContentType="$S{j.defaultContentType,$E{J_DEFAULT_CONTENT_TYPE,}}",
| defaultRequestAttributes="$S{j.defaultRequestAttributes,$E{J_DEFAULT_REQUEST_ATTRIBUTES,}}",
| defaultRequestHeaders="$S{j.defaultRequestHeaders,$E{J_DEFAULT_REQUEST_HEADERS,}}",
| defaultResponseHeaders="$S{j.defaultResponseHeaders,$E{J_DEFAULT_RESPONSE_HEADERS,}}",
| disableContentParam="$S{j.disableContentParam,$E{J_DISABLE_CONTENT_PARAM,false}}",
| maxInput="$S{j.maxInput,$E{J_MAX_INPUT,1000000}}",
| messages="$S{j.messages,$E{J_MESSAGES,}}",
| renderResponseStackTraces="$S{j.renderResponseStackTraces,$E{J_RENDER_RESPONSE_STACK_TRACES,false}}",
| uriAuthority="$S{j.uriAuthority,$E{J_URI_AUTHORITY,}}",
| uriContext="$S{j.uriContext,$E{J_URI_CONTEXT,}}",
| uriRelativity="$S{j.uriRelativity,$E{J_URI_RELATIVITY,}}",
| uriResolution="$S{j.uriResolution,$E{J_URI_RESOLUTION,}}",
|
| // Metadata settings.
| consumes={},
| description="",
| produces={},
| siteName="$S{j.siteName,$E{J_SITE_NAME,}}",
| swagger=@Swagger,
| title="$S{j.title,$E{J_TITLE,}}",
|
| // Injectable/overridable beans.
| beanStore=BeanStore.Void.class, // Defaults to BeanStore.
| callLogger=CallLogger.Void.class, // Defaults to BasicCallLogger.
| debugEnablement=DebugEnablement.Void.class, // Defaults to BasicDefaultEnablement.
| fileFinder=FileFinder.Void.class, // Defaults to BasicFileFinder.
| staticFiles=StaticFiles.Void.class, // Defaults to BasicStaticFiles.
| swaggerProvider=SwaggerProvider.Void.class, // Defaults to BasicSwaggerProvider.
|
| // Overridable context classes.
| contextClass=RestContext.class,
| restChildrenClass=RestChildren.class,
| restOpContextClass=RestOpContext.class,
| restOperationsClass=RestOperations.class
| )
| @BeanConfig(
| // When parsing generated beans, ignore unknown properties
| // that may only exist as getters and not setters.
| ignoreUnknownBeanProperties="true",
| ignoreUnknownEnumValues="true"
| )
| @SerializerConfig(
| // Enable automatic resolution of URI objects to root-relative values.
| uriResolution="ROOT_RELATIVE"
| )
| public interface DefaultConfig {}
| /**
| * Predefined REST configuration that defines common default values the HTML Doc serializer.
| */
| @HtmlDocConfig(
|
| // Default page header contents.
| header={
| "<h1>$RS{title}</h1>", // Use @Rest(title)
| "<h2>$RS{operationSummary,description}</h2>", // Use either @RestOp(summary) or @Rest(description)
| "$C{REST/header}" // Extra header HTML defined in external config file.
| },
|
| // Basic page navigation links.
| navlinks={
| "up: request:/.."
| },
|
| // Default stylesheet to use for the page.
| // Can be overridden from external config file.
| // Default is DevOps look-and-feel (aka Depression look-and-feel).
| stylesheet="$C{REST/theme,servlet:/htdocs/themes/devops.css}",
|
| // Default contents to add to the <head> section of the HTML page.
| // Use it to add a favicon link to the page.
| head="$C{REST/head}",
|
| // No default page footer contents.
| // Can be overridden from external config file.
| footer="$C{REST/footer}",
|
| // By default, table cell contents should not wrap.
| nowrap="true"
| )
| public interface DefaultHtmlConfig {}
The {@link oajr.config} package contains other basic configurations for use.
Annotations are aggregated from child-to-parent order allowing for these basic configurations
to be extended and modified, or you can create your own annotations from scratch.