This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new 295b497  Javadocs
295b497 is described below

commit 295b4978964f83acb2f4da7f7cc2f6dcf730d45e
Author: JamesBognar <[email protected]>
AuthorDate: Thu Dec 30 10:16:01 2021 -0500

    Javadocs
---
 .../java/org/apache/juneau/jena/RdfParser.java     |   2 -
 .../java/org/apache/juneau/jena/RdfSerializer.java |   2 -
 .../main/java/org/apache/juneau/BeanContext.java   |   1 -
 .../org/apache/juneau/BeanTraverseContext.java     |   2 -
 .../org/apache/juneau/html/HtmlSerializer.java     |   2 -
 .../java/org/apache/juneau/json/JsonParser.java    |   2 -
 .../org/apache/juneau/json/JsonSerializer.java     |   1 -
 .../juneau/jsonschema/JsonSchemaGenerator.java     |   1 -
 .../apache/juneau/msgpack/MsgPackSerializer.java   |   1 -
 .../apache/juneau/parser/InputStreamParser.java    |   2 -
 .../main/java/org/apache/juneau/parser/Parser.java |   2 -
 .../org/apache/juneau/parser/ReaderParser.java     |   2 -
 .../juneau/serializer/OutputStreamSerializer.java  |   2 -
 .../org/apache/juneau/serializer/Serializer.java   |   2 -
 .../apache/juneau/serializer/WriterSerializer.java |   1 -
 .../main/java/org/apache/juneau/uon/UonParser.java |   2 -
 .../java/org/apache/juneau/uon/UonSerializer.java  |   2 -
 .../juneau/urlencoding/UrlEncodingParser.java      |   2 -
 .../juneau/urlencoding/UrlEncodingSerializer.java  |   2 -
 .../main/java/org/apache/juneau/xml/XmlParser.java |   2 -
 .../java/org/apache/juneau/xml/XmlSerializer.java  |   2 -
 .../02.jrs.AnnotatedClasses.html                   |  14 +-
 .../03.jrs.RestOpAnnotatedMethods.html             |   2 +-
 .../07.jrs.AdditionalInformation.html              |   2 +-
 .../06.juneau-rest-server/04.jrs.HttpParts.html    |   4 +-
 .../04.jrs.HttpParts/05.jrs.HttpPartApis.html      |  34 +-
 .../06.juneau-rest-server/05.jrs.Marshalling.html  |  25 +-
 .../06.juneau-rest-server/10.jrs.Encoders.html     |  14 +-
 .../11.jrs.ConfigurationFiles.html                 |  17 +-
 .../06.juneau-rest-server/12.jrs.SvlVariables.html |  83 ++--
 .../06.juneau-rest-server/13.jrs.StaticFiles.html  |  67 ++-
 .../14.jrs.ClientVersioning.html                   |   6 +-
 .../06.juneau-rest-server/15.jrs.InfoProvider.html |  62 ---
 .../{16.jrs.Swagger.html => 15.jrs.Swagger.html}   |   0
 .../01.jrs.BasicRestServletSwagger.html            |   0
 .../02.jrs.BasicSwaggerInfo.html                   |   0
 .../03.jrs.SwaggerTags.html                        |   0
 .../04.jrs.SwaggerOperations.html                  |   0
 .../05.jrs.SwaggerParameters.html                  |   0
 .../06.jrs.SwaggerParameterExamples.html           |   0
 .../07.jrs.SwaggerResponses.html                   |   0
 .../08.jrs.SwaggerResponseExamples.html            |   0
 .../09.jrs.SwaggerModels.html                      |   0
 .../10.jrs.SwaggerStylesheet.html                  |   0
 .../doc-files/jrs.Swagger.Models.1.png             | Bin
 .../doc-files/jrs.Swagger.Models.2.png             | Bin
 .../doc-files/jrs.Swagger.Models.3.png             | Bin
 .../doc-files/jrs.Swagger.Operations.1.png         | Bin
 .../doc-files/jrs.Swagger.Operations.2.png         | Bin
 .../doc-files/jrs.Swagger.Operations.3.png         | Bin
 .../doc-files/jrs.Swagger.Parameters.1.png         | Bin
 .../doc-files/jrs.Swagger.Parameters.2.png         | Bin
 .../doc-files/jrs.Swagger.Parameters.3.png         | Bin
 .../doc-files/jrs.Swagger.Parameters.4.png         | Bin
 .../doc-files/jrs.Swagger.ResponseExamples.1.png   | Bin
 .../doc-files/jrs.Swagger.ResponseExamples.2.png   | Bin
 .../doc-files/jrs.Swagger.ResponseExamples.3.png   | Bin
 .../doc-files/jrs.Swagger.ResponseExamples.4.png   | Bin
 ...istics.html => 16.jrs.ExecutionStatistics.html} |   0
 ...notation.html => 17.jrs.HtmlDocAnnotation.html} |   0
 .../01.jrs.HtmlUIvsDI.html                         |   0
 .../02.jrs.HtmlWidgets.html                        |   0
 .../03.jrs.HtmlPredefinedWidgets.html              |   0
 .../04.jrs.HtmlUiCustomization.html                |   0
 .../05.jrs.HtmlStylesheets.html                    |   0
 .../jrs.HtmlDocAnnotation.PredefinedWidgets.1.png  | Bin
 .../jrs.HtmlDocAnnotation.PredefinedWidgets.2.png  | Bin
 .../jrs.HtmlDocAnnotation.PredefinedWidgets.3.png  | Bin
 .../jrs.HtmlDocAnnotation.PredefinedWidgets.4.png  | Bin
 ...aultHeaders.html => 18.jrs.DefaultHeaders.html} |   0
 ...ugging.html => 19.jrs.LoggingAndDebugging.html} |   0
 ...tatusCodes.html => 20.jrs.HttpStatusCodes.html} |   0
 ...ods.html => 21.jrs.OverloadingHttpMethods.html} |   0
 ...rameters.html => 22.jrs.BuiltInParameters.html} |   0
 ...tml => 23.jrs.CustomSerializersAndParsers.html} |   0
 ...singWithOsgi.html => 24.jrs.UsingWithOsgi.html} |   0
 ...26.jrs.Injection.html => 25.jrs.Injection.html} |   0
 ....jrs.OtherNotes.html => 26.jrs.OtherNotes.html} |   0
 ...rs.RestContext.html => 27.jrs.RestContext.html} |   0
 .../{29.jrs.RestRpc.html => 28.jrs.RestRpc.html}   |   0
 ...l => 29.jrs.CustomRestContextsAndBuilders.html} |   0
 ...rocessors.html => 30.jrs.FluentAssertions.html} |   0
 ....jrs.UtilityBeans.html => 31.jrs.Overview.html} |   0
 ...ertions.html => 32.jrs.ResponseProcessors.html} |   0
 ....jrs.Overview.html => 33.jrs.UtilityBeans.html} |   0
 ...lizingUris.html => 34.jrs.SerializingUris.html} |   0
 juneau-doc/src/main/javadoc/overview.html          | 532 +++++++++------------
 juneau-doc/src/main/javadoc/resources/docs.txt     |   1 -
 .../src/main/javadoc/resources/fragments/toc.html  |   7 +-
 .../java/org/apache/juneau/rest/RestContext.java   | 134 +++---
 90 files changed, 427 insertions(+), 614 deletions(-)

diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
index 8ace700..c016a7d 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.jena;
 
 import static org.apache.juneau.collections.OMap.filteredMap;
-import static org.apache.juneau.internal.SystemEnv.env;
-
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.nio.charset.Charset;
diff --git 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index d9f8f6d..f667d89 100644
--- 
a/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ 
b/juneau-core/juneau-marshall-rdf/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -14,8 +14,6 @@ package org.apache.juneau.jena;
 
 import static java.util.Optional.*;
 import static org.apache.juneau.collections.OMap.filteredMap;
-import static org.apache.juneau.internal.SystemEnv.env;
-
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
 import java.nio.charset.Charset;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
index 9793d15..14e8bdb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanContext.java
@@ -18,7 +18,6 @@ import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.CollectionUtils.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.SystemEnv.*;
 import static java.util.Optional.*;
 import static java.util.Arrays.*;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
index c7160e7..36b3622 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/BeanTraverseContext.java
@@ -14,8 +14,6 @@ package org.apache.juneau;
 
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.util.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 6b3a80e..9aec023 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.html;
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
index 30613af..141a6cf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonParser.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.json;
 
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 4ab0900..9385fe9 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.json;
 
-import static org.apache.juneau.internal.SystemEnv.*;
 import static org.apache.juneau.collections.OMap.*;
 
 import java.lang.annotation.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
index 4fc6926..361a151 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/jsonschema/JsonSchemaGenerator.java
@@ -15,7 +15,6 @@ package org.apache.juneau.jsonschema;
 import static org.apache.juneau.collections.OMap.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.SystemEnv.*;
 import static java.util.Collections.*;
 
 import java.lang.annotation.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index 92148f5..ed10924 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -12,7 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.msgpack;
 
-import static org.apache.juneau.internal.SystemEnv.*;
 import static org.apache.juneau.collections.OMap.*;
 
 import java.lang.annotation.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
index 950c0c7..f161bac 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/InputStreamParser.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.parser;
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.util.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
index 1c82398..5e1ad87 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/Parser.java
@@ -14,8 +14,6 @@ package org.apache.juneau.parser;
 
 import static java.util.Optional.*;
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.io.*;
 import java.lang.annotation.*;
 import java.lang.reflect.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
index 9dcb5f9..20ade69 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/parser/ReaderParser.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.parser;
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
index b379cce..425c59e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/OutputStreamSerializer.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.serializer;
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.util.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
index 4391449..98bae87 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/Serializer.java
@@ -14,8 +14,6 @@ package org.apache.juneau.serializer;
 
 import static java.util.Optional.*;
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.io.*;
 import java.lang.annotation.*;
 import java.lang.reflect.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
index 8a8eb5a..c202fe4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/serializer/WriterSerializer.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.serializer;
 
 import static org.apache.juneau.internal.ThrowableUtils.*;
-import static org.apache.juneau.internal.SystemEnv.*;
 import static org.apache.juneau.collections.OMap.*;
 import static java.util.Optional.*;
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
index 870f9b8..fd2d298 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonParser.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.uon;
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
index 0d23f6d..b6e7729 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/uon/UonSerializer.java
@@ -14,8 +14,6 @@ package org.apache.juneau.uon;
 
 import static java.util.Optional.*;
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
index 779aab9..5018142 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.urlencoding;
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
index be932da..5ef28ac 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
@@ -13,8 +13,6 @@
 package org.apache.juneau.urlencoding;
 
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
index 9fd0cba..ee04580 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -15,8 +15,6 @@ package org.apache.juneau.xml;
 import static java.util.Optional.*;
 import static org.apache.juneau.collections.OMap.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index 84aeb94..f165229 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -14,8 +14,6 @@ package org.apache.juneau.xml;
 
 import static java.util.Optional.*;
 import static org.apache.juneau.collections.OMap.*;
-import static org.apache.juneau.internal.SystemEnv.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/02.jrs.AnnotatedClasses.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/02.jrs.AnnotatedClasses.html
index e561e7a..6293f7a 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/02.jrs.AnnotatedClasses.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/02.jrs.AnnotatedClasses.html
@@ -151,7 +151,7 @@
        <p>
                In a Spring Boot environment, child classes will typically 
extend from these latter two when
                implementing REST resources as <ja>@Bean</ja>-annotated Spring 
Beans.
-               If you extend from one of the servlet classses, Spring Boot 
will automatically
+               If you extend from one of the servlet classes, Spring Boot will 
automatically
                register them as top-level servlets which typically is not the 
desired behavior.
        </p>
        <p>
@@ -160,6 +160,7 @@
        <ul class='javatree'>
                <li class='jic'>{@link oajr.config.BasicUniversalRest} - 
Support for all languages.
                <li class='jic'>{@link oajr.config.BasicJsonRest} - Support for 
JSON.
+               <li class='jic'>{@link oajr.config.BasicJsonHtmlRest} - Support 
for JSON and HTML.
                <li class='jic'>{@link oajr.config.BasicSimpleJsonRest} - 
Support for simplified JSON.
                <li class='jic'>{@link oajr.config.BasicOpenApiRest} - Support 
for OpenAPI. 
        </ul>
@@ -211,11 +212,12 @@
                Child REST objects can also be preconfigured with basic 
functionality by implementing one of the 
                following interfaces as well:
        </p>
-       <ul class='javatree'>
-               <li class='jic'>{@link oajr.config.BasicUniversalRest} - 
Support for all languages.
-               <li class='jic'>{@link oajr.config.BasicJsonRest} - Support for 
JSON.
-               <li class='jic'>{@link oajr.config.BasicSimpleJsonRest} - 
Support for simplified JSON.
-               <li class='jic'>{@link oajr.config.BasicOpenApiRest} - Support 
for OpenAPI. 
+       <ul class='javatreec'>
+               <li class='jic'>{@link oajr.config.BasicUniversalRest}
+               <li class='jic'>{@link oajr.config.BasicJsonRest}
+               <li class='jic'>{@link oajr.config.BasicJsonHtmlRest}
+               <li class='jic'>{@link oajr.config.BasicSimpleJsonRest}
+               <li class='jic'>{@link oajr.config.BasicOpenApiRest}
        </ul>
        
        <h5 class='topic'>Path Variables</h5>
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods.html
index ff638e3..e7c9539 100644
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods.html
+++ 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods.html
@@ -67,7 +67,7 @@
        <p>
                The following specialized annotations are also provided for 
specific HTTP methods:
        </p>
-       <ul class='javatree'>
+       <ul class='javatreec'>
                <li class='ja'>{@link oajr.annotation.RestGet}
                <li class='ja'>{@link oajr.annotation.RestPut}
                <li class='ja'>{@link oajr.annotation.RestPost}
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/07.jrs.AdditionalInformation.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/07.jrs.AdditionalInformation.html
index c547163..33be748 100644
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/07.jrs.AdditionalInformation.html
+++ 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/07.jrs.AdditionalInformation.html
@@ -22,7 +22,7 @@
        <ul class='javatreec w900'>
                <li class='jc'>{@link oajr.RestRequest}
                <li class='jc'>{@link oajr.RestResponse}
-               <li class='jc'>{@link oajr.RequestBody}
+               <li class='jc'>{@link oajr.httppart.RequestBody}
                <li class='jc'>{@link oajr.httppart.RequestHeaders}
                <li class='jc'>{@link oajr.httppart.RequestQueryParams}
                <li class='jc'>{@link oajr.httppart.RequestFormParams}
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts.html
index 1eab817..9cd63f6 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts.html
@@ -60,8 +60,8 @@
                </ul>
                <li>Sub-annotations:
                <ul class='javatreec'>
-                       <li class='ja'>{@link oaj.jsonschema.annotation.Schema}
-                       <li class='ja'>{@link oaj.jsonschema.annotation.Items}
+                       <li class='ja'>{@link oaj.http.annotation.Schema}
+                       <li class='ja'>{@link oaj.http.annotation.Items}
                </ul>   
        </ul>
        <p>
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts/05.jrs.HttpPartApis.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts/05.jrs.HttpPartApis.html
index 1d16e26..2b25937 100644
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts/05.jrs.HttpPartApis.html
+++ 
b/juneau-doc/docs/Topics/06.juneau-rest-server/04.jrs.HttpParts/05.jrs.HttpPartApis.html
@@ -28,18 +28,18 @@
        </ul>
        <h5 class='figure'>Example:</h5>
        <p class='bcode w800'>
-               <ja>@RestPost</ja>(...)
-               <jk>public</jk> Object myMethod(RequestHeaders 
<jv>headers</jv>) {
-       
-                       <jc>// Add a default value.</jc>
-                       <jv>headers</jv>.addDefault(<js>"ETag"</js>, 
<jsf>DEFAULT_UUID</jsf>);
-       
-                       <jc>// Get a header value as a POJO.</jc>
-                       UUID <jv>etag</jv> = 
<jv>headers</jv>.get(<js>"ETag"</js>).as(UUID.<jk>class</jk>).get();
-       
-                       <jc>// Get a header as a standard HTTP part.</jc>
-                       ContentType <jv>contentType</jv> = 
<jv>headers</jv>.get(ContentType.<jk>class</jk>).orElse(ContentType.<jsf>TEXT_XML</jsf>);
-               }
+               |       <ja>@RestPost</ja>(...)
+               |       <jk>public</jk> Object myMethod(RequestHeaders 
<jv>headers</jv>) {
+               |       
+               |               <jc>// Add a default value.</jc>
+               |               <jv>headers</jv>.addDefault(<js>"ETag"</js>, 
<jsf>DEFAULT_UUID</jsf>);
+               |       
+               |               <jc>// Get a header value as a POJO.</jc>
+               |               UUID <jv>etag</jv> = 
<jv>headers</jv>.get(<js>"ETag"</js>).as(UUID.<jk>class</jk>).get();
+               |       
+               |               <jc>// Get a header as a standard HTTP 
part.</jc>
+               |               ContentType <jv>contentType</jv> = 
<jv>headers</jv>.get(ContentType.<jk>class</jk>).orElse(ContentType.<jsf>TEXT_XML</jsf>);
+               |       }
        </p>
        <p>
                Built in to these APIs are various convenience methods such as 
converting parts to 
@@ -47,10 +47,10 @@
        </p>
        <h5 class='figure'>Example:</h5>
        <p class='bcode w800'>
-               <jc>// Inline fluent assertion and retrieval.</jc>
-               String <jv>foo</jv> = <jv>request</jv>
-                       .getHeader(<js>"Foo"</js>)
-                       .assertString().contains(<js>"bar"</js>)
-                       .get();
+               |       <jc>// Inline fluent assertion and retrieval.</jc>
+               |       String <jv>foo</jv> = <jv>request</jv>
+               |               .getHeader(<js>"Foo"</js>)
+               |               .assertString().contains(<js>"bar"</js>)
+               |               .get();
        </p>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/05.jrs.Marshalling.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/05.jrs.Marshalling.html
index ec056ef..5c86c9f 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/05.jrs.Marshalling.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/05.jrs.Marshalling.html
@@ -56,15 +56,22 @@
                The following classes provide common default serializers and 
parsers that can be
                used as-is or augmented by child classes:
        <p>
-       <ul class='javatreec'>
-               <li class='jic'>{@link oajr.config.BasicUniversalRest}
-               <li class='jic'>{@link oajr.config.BasicJsonRest}
-               <li class='jic'>{@link oajr.config.BasicSimpleJsonRest}
-               <li class='jic'>{@link oajr.config.BasicOpenApiRest}
-               <li class='jc'>{@link oajr.BasicRestServlet}
-               <li class='jc'>{@link oajr.BasicRestServletGroup}
-               <li class='jc'>{@link oajr.BasicRestObject}
-               <li class='jc'>{@link oajr.BasicRestObjectGroup}
+       <ul class='javatree'>
+               <li>Classes:
+                       <ul class='javatreec'>
+                               <li class='jc'>{@link oajr.BasicRestServlet}
+                               <li class='jc'>{@link 
oajr.BasicRestServletGroup}
+                               <li class='jc'>{@link oajr.BasicRestObject}
+                               <li class='jc'>{@link oajr.BasicRestObjectGroup}
+                       </ul>
+               <li>Interfaces:
+                       <ul class='javatreec'>
+                               <li class='jic'>{@link 
oajr.config.BasicUniversalRest}
+                               <li class='jic'>{@link 
oajr.config.BasicJsonRest}
+                               <li class='jic'>{@link 
oajr.config.BasicJsonHtmlRest}
+                               <li class='jic'>{@link 
oajr.config.BasicSimpleJsonRest}
+                               <li class='jic'>{@link 
oajr.config.BasicOpenApiRest}
+                       </ul>
        </ul>
        <p>
                Serializers and parsers can also be defined programmatically 
using an INIT hook method like shown below:
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/10.jrs.Encoders.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/10.jrs.Encoders.html
index 9626ba1..4fc0250 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/10.jrs.Encoders.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/10.jrs.Encoders.html
@@ -34,14 +34,10 @@
        <p>
                Juneau defines the following encoders out-of-the-box:
        </p>
-       <ul class='javatree'>
-               <li class='jac'>
-               {@link oaj.encoders.Encoder}
-               <ul>
-                       <li class='jc'>
-                               {@link oaj.encoders.GzipEncoder}
-                       <li class='jc'>
-                               {@link oaj.encoders.IdentityEncoder}
-               </ul>
+       <ul class='javatreec'>
+               <li class='jc'>
+                       {@link oaj.encoders.GzipEncoder}
+               <li class='jc'>
+                       {@link oaj.encoders.IdentityEncoder}
        </ul>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/11.jrs.ConfigurationFiles.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/11.jrs.ConfigurationFiles.html
index f90e938..05d78ba 100644
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/11.jrs.ConfigurationFiles.html
+++ 
b/juneau-doc/docs/Topics/06.juneau-rest-server/11.jrs.ConfigurationFiles.html
@@ -45,7 +45,8 @@
                |       <cs>[MyProperties]</cs>
                |       <ck>path</ck> = <cv>$E{PATH}</cv>
                |       <ck>javaHome</ck> = <cv>$S{java.home}</cv>
-               |       <ck>customMessage</ck> = <cv>Java home is 
$C{MyProperties/javaHome} and the environment path is 
$C{MyProperties/path}.</cv>
+               |       <ck>customMessage</ck> = <cv>Java home is 
$C{MyProperties/javaHome} and the 
+               |               environment path is $C{MyProperties/path}.</cv>
        </p>
        <p>
                These properties are then accessible through the {@link 
oaj.config.Config} class.
@@ -53,9 +54,9 @@
        <p class='bcode w800'>
                |       <ja>@RestGet</ja>(<js>"/"</js>)
                |       <jk>public</jk> String sample(Config <jv>config</jv>) {
-               |               String <jv>path</jv> = 
<jv>config</jv>.getString(<js>"MyProperties/path"</js>);
-               |               File <jv>javaHome</jv> = 
<jv>config</jv>.getObject(<js>"MyProperties/javaHome"</js>, 
File.<jk>class</jk>);
-               |               String <jv>customMessage</jv> = 
<jv>config</jv>.getString(<js>"MyProperties/customMessage"</js>);
+               |               String <jv>path</jv> = 
<jv>config</jv>.get(<js>"MyProperties/path"</js>).get();
+               |               File <jv>javaHome</jv> = 
<jv>config</jv>.get(<js>"MyProperties/javaHome"</js>).to(File.<jk>class</jk>);
+               |               String <jv>customMessage</jv> = 
<jv>config</jv>.get(<js>"MyProperties/customMessage"</js>).orElse(<js>"Hello"</js>);
                |               ...
                |       }
        </p>
@@ -107,8 +108,8 @@
                |       
                |               <jk>public</jk> MyResource(RestContext.Builder 
builder) {
                |                       Config c = builder.getConfig();
-               |                       <jf>path</jf> = 
c.getString(<js>"MyProperties/path"</js>);
-               |                       <jf>javaHome</jf> = 
c.getObject(File.<jk>class</jk>, <js>"MyProperties/javaHome"</js>);
+               |                       <jf>path</jf> = 
c.get(<js>"MyProperties/path"</js>).orElse(<js>"mypath"</js>);
+               |                       <jf>javaHome</jf> = 
c.get(<js>"MyProperties/javaHome"</js>).to(File.<jk>class</jk>);
                |               }
        </p>
        <p>
@@ -185,8 +186,8 @@
                |                * Specify the GET parameter "?person=X" for a 
specialized message! 
                |                */</jd>
                |               <ja>@RestGet</ja>(<js>"/"</js>)
-               |               <jk>public</jk> String sayHello(RestRequest 
<jv>req</jv>) {
-               |                       <jk>return</jk> 
<jv>req</jv>.getConfig().getString(<js>"HelloWorldResource/message"</js>);
+               |               <jk>public</jk> String sayHello(Config 
<jv>config</jv>) {
+               |                       <jk>return</jk> 
<jv>config</jv>.getString(<js>"HelloWorldResource/message"</js>);
                |               }
                |       }
        </p>
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/12.jrs.SvlVariables.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/12.jrs.SvlVariables.html
index f200423..9b2630c 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/12.jrs.SvlVariables.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/12.jrs.SvlVariables.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'SVL Variables', flags:'todo'}
+{title:'SVL Variables', updated:'9.0.0'}
 
 <div class='topic'>
        <p>     
@@ -38,46 +38,7 @@
                <li>
                        Variables are recursively resolved. 
                        <br>i.e., if a variable results to a value with another 
variable in it, that variable will also be 
-                       resolved (restricted for security reasons on some 
variables).
-       </ul>
-       <p>
-               Variables are configured on resources via the following API:
-       </p>
-       <ul class='javatree'>
-               <li class='jm'>{@del oajr.RestContext.Builder#vars(Class[])}
-       </ul>
-       <h5 class='figure'>Example:</h5>
-       <p class='bcode w800'>
-               |       <jc>// Defined a variable that simply wrapps all 
strings inside [] brackets.</jc>
-               |       <jc>// e.g. "$BRACKET{foobar}" -> "[foobar]"</jc>
-               |       <jk>public class</jk> BracketVar <jk>extends</jk> 
SimpleVar {
-               |               
-               |               <jk>public</jk> BracketVar() {
-               |                       <jk>super</jk>(<js>"BRACKET"</js>);
-               |               }
-               |                       
-               |               <ja>@Override</ja> <jc>/* Var */</jc>
-               |               <jk>public</jk> String 
resolve(VarResolverSession session, String arg) {
-               |                       <jk>return</jk> <js>'['</js> + arg + 
<js>']'</js>;
-               |               }
-               |       }
-               |
-               |       <jc>// Register it with our resource.</jc>
-               |       <ja>@Rest</ja>(...)
-               |       <jk>public class</jk> MyResource {
-               |       
-               |               <jk>public</jk> MyResource(RestContext.Builder 
builder) {
-               |                       builder.vars(BracketVar.<jk>class</jk>);
-               |               }
-               |       }
-       </p>
-       <p>
-               The methods involved with variables are:
-       </p>
-       <ul class='javatree'>
-               <li class='jm'>{@link oajr.RestContext#getVarResolver()}
-               <li class='jm'>{@link oajr.RestRequest#getVarResolverSession()}
-               <li class='jm'>{@del 
RestRequest#getClasspathHttpResource(String,boolean)}
+                       resolved (restricted for security reasons on variables 
that involve user input).
        </ul>
        <p>
                There are two distinct groups of variables:
@@ -277,11 +238,49 @@
                        <td class='code'>$U{servlet:/foo?bar=$UE{$RA{bar}}</td>
                </tr>
                <tr class='dark dd'>
-                       <td>{@del oajr.vars.WidgetVar}</td>
+                       <td>{@link oaj.html.Widget}</td>
                        <td class='code'>$W{name}</td>
                        <td style='text-align:center;font-weight:bold'>no</td>
                        <td style='text-align:center;font-weight:bold'>yes</td>
                        <td class='code'>$W{MenuItemWidget}</td>
                </tr>
        </table>
+       <p>
+               Custom variables can be defined on resources via the following 
API:
+       </p>
+       <ul class='javatree'>
+               <li class='jm'>{@link oajr.RestContext.Builder#varResolver()}
+       </ul>
+       <h5 class='figure'>Example:</h5>
+       <p class='bcode w800'>
+               |       <jc>// Defined a variable that simply wrapps all 
strings inside [] brackets.</jc>
+               |       <jc>// e.g. "$BRACKET{foobar}" -> "[foobar]"</jc>
+               |       <jk>public class</jk> BracketVar <jk>extends</jk> 
SimpleVar {
+               |               
+               |               <jk>public</jk> BracketVar() {
+               |                       <jk>super</jk>(<js>"BRACKET"</js>);
+               |               }
+               |                       
+               |               <ja>@Override</ja> <jc>/* Var */</jc>
+               |               <jk>public</jk> String 
resolve(VarResolverSession <jv>session</jv>, String <jv>arg</jv>) {
+               |                       <jk>return</jk> <js>'['</js> + 
<jv>arg</jv> + <js>']'</js>;
+               |               }
+               |       }
+               |
+               |       <jc>// Register it with our resource.</jc>
+               |       <ja>@Rest</ja>(...)
+               |       <jk>public class</jk> MyResource {
+               |       
+               |               <jk>public</jk> MyResource(RestContext.Builder 
<jv>builder</jv>) {
+               |                       
<jv>builder</jv>.varResolver().vars(BracketVar.<jk>class</jk>);
+               |               }
+               |       }
+       </p>
+       <p>
+               The methods involved with variables are:
+       </p>
+       <ul class='javatree'>
+               <li class='jm'>{@link oajr.RestContext#getVarResolver()}
+               <li class='jm'>{@link oajr.RestRequest#getVarResolverSession()}
+       </ul>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/13.jrs.StaticFiles.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/13.jrs.StaticFiles.html
index 4200142..3518dc8 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/13.jrs.StaticFiles.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/13.jrs.StaticFiles.html
@@ -13,52 +13,43 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Static files', flags:'todo'}
+{title:'Static files', updated:'9.0.0'}
 
 <div class='topic'>
        <p>
-               The {@link oajr.annotation.Rest#staticFiles @Rest(staticFiles)} 
-               annotation is used to define paths and locations of 
statically-served files such as images or HTML 
-               documents.
+               The {@link oajr.BasicRestServlet} and {@link 
oajr.BasicRestObject} classes come with built-in support
+               for serving up static files through the following REST 
operation:
+       </p>
+       <p class='bcode w800'>
+               |       <ja>@RestGet</ja>(path=<js>"/htdocs/*"</js>)
+               |       <jk>public</jk> HttpResource 
getHtdoc(<ja>@Path</ja>("/*") String <jv>path</jv>, Locale <jv>locale</jv>) 
<jk>throws</jk> NotFound {
+               |               <jk>return</jk> 
getContext().getStaticFiles().resolve(<jv>path</jv>, 
<jv>locale</jv>).orElseThrow(NotFound::<jk>new</jk>);
+               |       }
        </p>
        <p>
-               The value is a JSON map of paths to packages/directories 
located on either the classpath or working 
-               directory.
+               The static file finder can be accessed through the following 
methods:
        </p>
-       
-       <h5 class='figure'>Example:</h5>
-       <p class='bcode w800'>
-               |       <jk>package</jk> com.foo.mypackage;
-               |
-               |       <ja>@Rest</ja>(
-               |               path=<js>"/myresource"</js>,
-               |               staticFiles={<js>"htdocs:docs"</js>}
-               |       )
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {...}
+       <ul class='javatree'>
+               <li class='jm'>{@link oajr.RestContext#getStaticFiles()}
+               <li class='jm'>{@link oajr.RestRequest#getStaticFiles()}
+       </ul>
+       <p>
+               By default, the {@link oajr.staticfile.StaticFiles} bean is 
configured as follows:
        </p>
-       <p>     
-               Static files are found by calling {@link 
java.lang.Class#getResource(String)} up the class hierarchy.  
-               If not found, then an attempt is made to find the class in the 
Java working directory.
+       <p class='bcode w800'>
+               |       StaticFiles
+               |               .<jsm>create</jsm>()
+               |               .beanStore(<jv>beanStore</jv>)  <jc>// Allow 
injected beans in constructor.</jc>
+               |               .type(BasicStaticFiles.<jk>class</jk>)  <jc>// 
Default implementation class.</jc>
+               |               .dir(<js>"static"</js>)  <jc>// Look in working 
/static directory.</jc>
+               |               .dir(<js>"htdocs"</js>)  <jc>// Look in working 
/htdocs directory.</jc>
+               |               .cp(<jv>resourceClass</jv>, <js>"htdocs"</js>, 
<jk>true</jk>)  <jc>// Look in htdocs subpackage.</jc>
+               |               .cp(<jv>resourceClass</jv>, <js>"/htdocs"</js>, 
<jk>true</jk>)  <jc>// Look in htdocs package.</jc>
+               |               .caching(1_000_000)  <jc>// Cache files in 
memory up to 1MB.</jc>
+               |               
.exclude(<js>"(?i).*\\.(class|properties)"</js>)  <jc>// Ignore 
class/properties files.</jc>
+               |               
.headers(<jsm>cacheControl</jsm>(<js>"max-age=86400, public"</js>));  <jc>// 
Add cache control.</jc>
        </p>
        <p>
-               In the example above, given a GET request to 
<l>/myresource/htdocs/foobar.html</l>, the servlet will 
-               attempt to find the <l>foobar.html</l> file in the following 
ordered locations:
+               See {@link 
oajr.RestContext.Builder#createStaticFiles(BeanStore,Supplier)} for details on 
configuring this bean.
        </p>
-       <ol>
-               <li><l>com.foo.mypackage.docs</l> package.
-               <li><l>[working-dir]/docs</l> directory.
-       </ol>
-       
-       <ul class='notes'>
-               <li>
-                       Mappings are cumulative from parent to child.  
-                       <br>Child resources can override mappings made on 
parent resources.
-               <li>
-                       The media type on the response is determined by the 
-                       {@del RestContext#getMediaTypeForName(String)} method.
-       </ul>
-       
-       <ul class='seealso'>
-               <li class='jf'>{@del oajr.RestContext#REST_staticFiles}
-       </ul>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/14.jrs.ClientVersioning.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/14.jrs.ClientVersioning.html
index d4bede4..c8b1b38 100644
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/14.jrs.ClientVersioning.html
+++ b/juneau-doc/docs/Topics/06.juneau-rest-server/14.jrs.ClientVersioning.html
@@ -13,7 +13,7 @@
  
***************************************************************************************************************************/
  -->
 
-{title:'Client Versioning', flags:'todo'}
+{title:'Client Versioning', updated:'9.0.0'}
 
 <div class='topic'>
        <p>
@@ -53,8 +53,4 @@
                |                       ...
                |               }
        </p>
-       
-       <ul class='seealso'>
-               <li class='jf'>{@del oajr.RestContext#REST_clientVersionHeader}
-       </ul>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.InfoProvider.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.InfoProvider.html
deleted file mode 100644
index 967ebad..0000000
--- a/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.InfoProvider.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!--
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *  
- *  http://www.apache.org/licenses/LICENSE-2.0
- *  
- * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 
or implied.  See the License for the
- * specific language governing permissions and limitations under the License.
- 
***************************************************************************************************************************/
- -->
-
-{title:'RestInfoProvider', flags:'todo'}
-
-<div class='topic'>
-       <p>
-               The {@del oajr.RestInfoProvider} class is used to find the title
-               and description for your resource and also generate the Swagger 
documentation.
-               It can be overridden to provide your own custom Swagger 
documentation.
-       </p>
-       <p>
-               The methods on this interface are:
-       </p>
-       <ul class='javatree'>
-               <li class='jic'>{@del RestInfoProvider}
-               <ul>
-                       <li class='jm'>{@del getSwagger(RestRequest)}
-                       <li class='jm'>{@del getSiteName(RestRequest)}
-                       <li class='jm'>{@del getTitle(RestRequest)}
-                       <li class='jm'>{@del getDescription(RestRequest)}
-                       <li class='jm'>{@del 
getMethodSummary(Method,RestRequest)}
-                       <li class='jm'>{@del 
getMethodDescription(Method,RestRequest)}
-               </ul>
-       </ul>
-       <p>
-               The info provider in turn supplies the information returned by 
the following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link oajr.RestRequest}
-               <ul>
-                       <li class='jm'>{@link oajr.RestRequest#getSwagger() 
getSwagger()}
-                       <li class='jm'>{@del getSiteName()}
-                       <li class='jm'>{@del getResourceTitle()}
-                       <li class='jm'>{@del getResourceDescription()}
-                       <li class='jm'>{@del getMethodSummary()}
-                       <li class='jm'>{@del getMethodDescription()}
-               </ul>
-       </ul>
-       <p>
-               Info providers are registered through the following property:
-       </p>
-       <ul class='javatree'>
-               <li class='jf'>{@del RestContext#REST_infoProvider}
-       </ul>
-       <p>
-               While you can implement this interface from scratch, you may 
want to instead consider extending
-               from the <l>BasicRestInfoProvider</l> class described next.
-       </p>
-</div>
\ No newline at end of file
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/01.jrs.BasicRestServletSwagger.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/01.jrs.BasicRestServletSwagger.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/01.jrs.BasicRestServletSwagger.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/01.jrs.BasicRestServletSwagger.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/03.jrs.SwaggerTags.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/03.jrs.SwaggerTags.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/03.jrs.SwaggerTags.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/03.jrs.SwaggerTags.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/04.jrs.SwaggerOperations.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/04.jrs.SwaggerOperations.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/04.jrs.SwaggerOperations.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/04.jrs.SwaggerOperations.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/05.jrs.SwaggerParameters.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/05.jrs.SwaggerParameters.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/05.jrs.SwaggerParameters.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/05.jrs.SwaggerParameters.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/06.jrs.SwaggerParameterExamples.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/06.jrs.SwaggerParameterExamples.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/06.jrs.SwaggerParameterExamples.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/06.jrs.SwaggerParameterExamples.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/07.jrs.SwaggerResponses.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/07.jrs.SwaggerResponses.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/07.jrs.SwaggerResponses.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/07.jrs.SwaggerResponses.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/08.jrs.SwaggerResponseExamples.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/08.jrs.SwaggerResponseExamples.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/08.jrs.SwaggerResponseExamples.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/08.jrs.SwaggerResponseExamples.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/09.jrs.SwaggerModels.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/09.jrs.SwaggerModels.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/09.jrs.SwaggerModels.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/09.jrs.SwaggerModels.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/10.jrs.SwaggerStylesheet.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/10.jrs.SwaggerStylesheet.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/10.jrs.SwaggerStylesheet.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/10.jrs.SwaggerStylesheet.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Models.1.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Models.1.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Models.1.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Models.1.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Models.2.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Models.2.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Models.2.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Models.2.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Models.3.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Models.3.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Models.3.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Models.3.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Operations.1.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Operations.1.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Operations.1.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Operations.1.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Operations.2.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Operations.2.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Operations.2.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Operations.2.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Operations.3.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Operations.3.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Operations.3.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Operations.3.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.1.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.1.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.1.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.1.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.2.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.2.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.2.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.2.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.3.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.3.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.3.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.3.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.4.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.4.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.Parameters.4.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.Parameters.4.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.1.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.1.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.1.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.1.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.2.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.2.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.2.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.2.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.3.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.3.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.3.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.3.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.4.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.4.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.4.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/15.jrs.Swagger/doc-files/jrs.Swagger.ResponseExamples.4.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.ExecutionStatistics.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.ExecutionStatistics.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.ExecutionStatistics.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/16.jrs.ExecutionStatistics.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/01.jrs.HtmlUIvsDI.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/01.jrs.HtmlUIvsDI.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/01.jrs.HtmlUIvsDI.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/01.jrs.HtmlUIvsDI.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/02.jrs.HtmlWidgets.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/02.jrs.HtmlWidgets.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/02.jrs.HtmlWidgets.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/02.jrs.HtmlWidgets.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/03.jrs.HtmlPredefinedWidgets.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/03.jrs.HtmlPredefinedWidgets.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/03.jrs.HtmlPredefinedWidgets.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/03.jrs.HtmlPredefinedWidgets.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.1.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.1.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.1.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.1.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.2.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.2.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.2.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.2.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.3.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.3.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.3.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.3.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.4.png
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.4.png
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.4.png
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/17.jrs.HtmlDocAnnotation/doc-files/jrs.HtmlDocAnnotation.PredefinedWidgets.4.png
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/19.jrs.DefaultHeaders.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.DefaultHeaders.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/19.jrs.DefaultHeaders.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/18.jrs.DefaultHeaders.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/20.jrs.LoggingAndDebugging.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/19.jrs.LoggingAndDebugging.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/20.jrs.LoggingAndDebugging.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/19.jrs.LoggingAndDebugging.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/21.jrs.HttpStatusCodes.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/20.jrs.HttpStatusCodes.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/21.jrs.HttpStatusCodes.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/20.jrs.HttpStatusCodes.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/22.jrs.OverloadingHttpMethods.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/21.jrs.OverloadingHttpMethods.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/22.jrs.OverloadingHttpMethods.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/21.jrs.OverloadingHttpMethods.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/23.jrs.BuiltInParameters.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/22.jrs.BuiltInParameters.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/23.jrs.BuiltInParameters.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/22.jrs.BuiltInParameters.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/24.jrs.CustomSerializersAndParsers.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/23.jrs.CustomSerializersAndParsers.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/24.jrs.CustomSerializersAndParsers.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/23.jrs.CustomSerializersAndParsers.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/25.jrs.UsingWithOsgi.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/24.jrs.UsingWithOsgi.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/25.jrs.UsingWithOsgi.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/24.jrs.UsingWithOsgi.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/26.jrs.Injection.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/25.jrs.Injection.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/26.jrs.Injection.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/25.jrs.Injection.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/27.jrs.OtherNotes.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/26.jrs.OtherNotes.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/27.jrs.OtherNotes.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/26.jrs.OtherNotes.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/28.jrs.RestContext.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/27.jrs.RestContext.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/28.jrs.RestContext.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/27.jrs.RestContext.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/29.jrs.RestRpc.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/28.jrs.RestRpc.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/29.jrs.RestRpc.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/28.jrs.RestRpc.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/30.jrs.CustomRestContextsAndBuilders.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/29.jrs.CustomRestContextsAndBuilders.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/30.jrs.CustomRestContextsAndBuilders.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/29.jrs.CustomRestContextsAndBuilders.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/33.jrs.ResponseProcessors.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/30.jrs.FluentAssertions.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/33.jrs.ResponseProcessors.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/30.jrs.FluentAssertions.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/34.jrs.UtilityBeans.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/31.jrs.Overview.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/34.jrs.UtilityBeans.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/31.jrs.Overview.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/31.jrs.FluentAssertions.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/32.jrs.ResponseProcessors.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/31.jrs.FluentAssertions.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/32.jrs.ResponseProcessors.html
diff --git a/juneau-doc/docs/Topics/06.juneau-rest-server/32.jrs.Overview.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/33.jrs.UtilityBeans.html
similarity index 100%
rename from juneau-doc/docs/Topics/06.juneau-rest-server/32.jrs.Overview.html
rename to juneau-doc/docs/Topics/06.juneau-rest-server/33.jrs.UtilityBeans.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/35.jrs.SerializingUris.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/34.jrs.SerializingUris.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/35.jrs.SerializingUris.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/34.jrs.SerializingUris.html
diff --git a/juneau-doc/src/main/javadoc/overview.html 
b/juneau-doc/src/main/javadoc/overview.html
index 46753b0..1d216d3 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -377,10 +377,9 @@
                <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.LocalizedMessages'>Localized Messages</a><span 
class='update'>updated: 8.2.0,<b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.Encoders'>Encoders</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.ConfigurationFiles'>Configuration Files</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
-               <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.SvlVariables'>SVL Variables</a><span 
class='update'><b><red>todo</red></b></span></p>
-               <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.StaticFiles'>Static files</a><span 
class='update'><b><red>todo</red></b></span></p>
-               <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.ClientVersioning'>Client Versioning</a><span 
class='update'><b><red>todo</red></b></span></p>
-               <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.InfoProvider'>RestInfoProvider</a><span 
class='update'><b><red>todo</red></b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.SvlVariables'>SVL Variables</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.StaticFiles'>Static files</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.ClientVersioning'>Client Versioning</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.Swagger'>Swagger</a><span 
class='update'><b><red>todo</red></b></span></p>
                <ol>
                        <li><p><a class='doclink' 
href='#juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger'>BasicRestServlet</a><span
 class='update'>updated: 8.1.0, <b><red>todo</red></b></span></p>
@@ -14298,7 +14297,7 @@
        </p>
        <ul class='javatree'>
                <li class='jc'>{@link org.apache.juneau.config.Config}
-               <ul>
+               <ul class='javatreec'>
                        <li class='jm'>{@link 
org.apache.juneau.config.Config#getSystemDefault() getSystemDefault()}
                        <li class='jm'>{@link 
org.apache.juneau.config.Config#setSystemDefault(Config) 
setSystemDefault(Config)}
                </ul>
@@ -14693,7 +14692,7 @@
        <p>
                In a Spring Boot environment, child classes will typically 
extend from these latter two when
                implementing REST resources as <ja>@Bean</ja>-annotated Spring 
Beans.
-               If you extend from one of the servlet classses, Spring Boot 
will automatically
+               If you extend from one of the servlet classes, Spring Boot will 
automatically
                register them as top-level servlets which typically is not the 
desired behavior.
        </p>
        <p>
@@ -14702,6 +14701,7 @@
        <ul class='javatree'>
                <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicUniversalRest} - Support for all languages.
                <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonRest} - Support for JSON.
+               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonHtmlRest} - Support for JSON and HTML.
                <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicSimpleJsonRest} - Support for simplified 
JSON.
                <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicOpenApiRest} - Support for OpenAPI. 
        </ul>
@@ -14753,11 +14753,12 @@
                Child REST objects can also be preconfigured with basic 
functionality by implementing one of the 
                following interfaces as well:
        </p>
-       <ul class='javatree'>
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicUniversalRest} - Support for all languages.
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonRest} - Support for JSON.
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicSimpleJsonRest} - Support for simplified 
JSON.
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicOpenApiRest} - Support for OpenAPI. 
+       <ul class='javatreec'>
+               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicUniversalRest}
+               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonRest}
+               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonHtmlRest}
+               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicSimpleJsonRest}
+               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicOpenApiRest}
        </ul>
        
        <h5 class='topic'>Path Variables</h5>
@@ -15313,7 +15314,7 @@
        <p>
                The following specialized annotations are also provided for 
specific HTTP methods:
        </p>
-       <ul class='javatree'>
+       <ul class='javatreec'>
                <li class='ja'>{@link org.apache.juneau.rest.annotation.RestGet}
                <li class='ja'>{@link org.apache.juneau.rest.annotation.RestPut}
                <li class='ja'>{@link 
org.apache.juneau.rest.annotation.RestPost}
@@ -15956,7 +15957,7 @@
        <ul class='javatreec w900'>
                <li class='jc'>{@link org.apache.juneau.rest.RestRequest}
                <li class='jc'>{@link org.apache.juneau.rest.RestResponse}
-               <li class='jc'>{@link org.apache.juneau.rest.RequestBody}
+               <li class='jc'>{@link 
org.apache.juneau.rest.httppart.RequestBody}
                <li class='jc'>{@link 
org.apache.juneau.rest.httppart.RequestHeaders}
                <li class='jc'>{@link 
org.apache.juneau.rest.httppart.RequestQueryParams}
                <li class='jc'>{@link 
org.apache.juneau.rest.httppart.RequestFormParams}
@@ -16016,8 +16017,8 @@
                </ul>
                <li>Sub-annotations:
                <ul class='javatreec'>
-                       <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.Schema}
-                       <li class='ja'>{@link 
org.apache.juneau.jsonschema.annotation.Items}
+                       <li class='ja'>{@link 
org.apache.juneau.http.annotation.Schema}
+                       <li class='ja'>{@link 
org.apache.juneau.http.annotation.Items}
                </ul>   
        </ul>
        <p>
@@ -16744,18 +16745,18 @@
        </ul>
        <h5 class='figure'>Example:</h5>
        <p class='bcode w800'>
-               <ja>@RestPost</ja>(...)
-               <jk>public</jk> Object myMethod(RequestHeaders 
<jv>headers</jv>) {
+       <ja>@RestPost</ja>(...)
+       <jk>public</jk> Object myMethod(RequestHeaders <jv>headers</jv>) {
        
-                       <jc>// Add a default value.</jc>
-                       <jv>headers</jv>.addDefault(<js>"ETag"</js>, 
<jsf>DEFAULT_UUID</jsf>);
+               <jc>// Add a default value.</jc>
+               <jv>headers</jv>.addDefault(<js>"ETag"</js>, 
<jsf>DEFAULT_UUID</jsf>);
        
-                       <jc>// Get a header value as a POJO.</jc>
-                       UUID <jv>etag</jv> = 
<jv>headers</jv>.get(<js>"ETag"</js>).as(UUID.<jk>class</jk>).get();
+               <jc>// Get a header value as a POJO.</jc>
+               UUID <jv>etag</jv> = 
<jv>headers</jv>.get(<js>"ETag"</js>).as(UUID.<jk>class</jk>).get();
        
-                       <jc>// Get a header as a standard HTTP part.</jc>
-                       ContentType <jv>contentType</jv> = 
<jv>headers</jv>.get(ContentType.<jk>class</jk>).orElse(ContentType.<jsf>TEXT_XML</jsf>);
-               }
+               <jc>// Get a header as a standard HTTP part.</jc>
+               ContentType <jv>contentType</jv> = 
<jv>headers</jv>.get(ContentType.<jk>class</jk>).orElse(ContentType.<jsf>TEXT_XML</jsf>);
+       }
        </p>
        <p>
                Built in to these APIs are various convenience methods such as 
converting parts to 
@@ -16763,11 +16764,11 @@
        </p>
        <h5 class='figure'>Example:</h5>
        <p class='bcode w800'>
-               <jc>// Inline fluent assertion and retrieval.</jc>
-               String <jv>foo</jv> = <jv>request</jv>
-                       .getHeader(<js>"Foo"</js>)
-                       .assertString().contains(<js>"bar"</js>)
-                       .get();
+       <jc>// Inline fluent assertion and retrieval.</jc>
+       String <jv>foo</jv> = <jv>request</jv>
+               .getHeader(<js>"Foo"</js>)
+               .assertString().contains(<js>"bar"</js>)
+               .get();
        </p>
 </div>
 </div><!-- END: 6.4.5 - juneau-rest-server.jrs.HttpParts.jrs.HttpPartApis -->
@@ -16818,15 +16819,22 @@
                The following classes provide common default serializers and 
parsers that can be
                used as-is or augmented by child classes:
        <p>
-       <ul class='javatreec'>
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicUniversalRest}
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonRest}
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicSimpleJsonRest}
-               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicOpenApiRest}
-               <li class='jc'>{@link org.apache.juneau.rest.BasicRestServlet}
-               <li class='jc'>{@link 
org.apache.juneau.rest.BasicRestServletGroup}
-               <li class='jc'>{@link org.apache.juneau.rest.BasicRestObject}
-               <li class='jc'>{@link 
org.apache.juneau.rest.BasicRestObjectGroup}
+       <ul class='javatree'>
+               <li>Classes:
+                       <ul class='javatreec'>
+                               <li class='jc'>{@link 
org.apache.juneau.rest.BasicRestServlet}
+                               <li class='jc'>{@link 
org.apache.juneau.rest.BasicRestServletGroup}
+                               <li class='jc'>{@link 
org.apache.juneau.rest.BasicRestObject}
+                               <li class='jc'>{@link 
org.apache.juneau.rest.BasicRestObjectGroup}
+                       </ul>
+               <li>Interfaces:
+                       <ul class='javatreec'>
+                               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicUniversalRest}
+                               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonRest}
+                               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicJsonHtmlRest}
+                               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicSimpleJsonRest}
+                               <li class='jic'>{@link 
org.apache.juneau.rest.config.BasicOpenApiRest}
+                       </ul>
        </ul>
        <p>
                Serializers and parsers can also be defined programmatically 
using an INIT hook method like shown below:
@@ -17311,15 +17319,11 @@
        <p>
                Juneau defines the following encoders out-of-the-box:
        </p>
-       <ul class='javatree'>
-               <li class='jac'>
-               {@link org.apache.juneau.encoders.Encoder}
-               <ul>
-                       <li class='jc'>
-                               {@link org.apache.juneau.encoders.GzipEncoder}
-                       <li class='jc'>
-                               {@link 
org.apache.juneau.encoders.IdentityEncoder}
-               </ul>
+       <ul class='javatreec'>
+               <li class='jc'>
+                       {@link org.apache.juneau.encoders.GzipEncoder}
+               <li class='jc'>
+                       {@link org.apache.juneau.encoders.IdentityEncoder}
        </ul>
 </div>
 </div><!-- END: 6.10 - juneau-rest-server.jrs.Encoders -->
@@ -17358,7 +17362,8 @@
        <cs>[MyProperties]</cs>
        <ck>path</ck> = <cv>$E{PATH}</cv>
        <ck>javaHome</ck> = <cv>$S{java.home}</cv>
-       <ck>customMessage</ck> = <cv>Java home is $C{MyProperties/javaHome} and 
the environment path is $C{MyProperties/path}.</cv>
+       <ck>customMessage</ck> = <cv>Java home is $C{MyProperties/javaHome} and 
the 
+               environment path is $C{MyProperties/path}.</cv>
        </p>
        <p>
                These properties are then accessible through the {@link 
org.apache.juneau.config.Config} class.
@@ -17366,9 +17371,9 @@
        <p class='bcode w800'>
        <ja>@RestGet</ja>(<js>"/"</js>)
        <jk>public</jk> String sample(Config <jv>config</jv>) {
-               String <jv>path</jv> = 
<jv>config</jv>.getString(<js>"MyProperties/path"</js>);
-               File <jv>javaHome</jv> = 
<jv>config</jv>.getObject(<js>"MyProperties/javaHome"</js>, 
File.<jk>class</jk>);
-               String <jv>customMessage</jv> = 
<jv>config</jv>.getString(<js>"MyProperties/customMessage"</js>);
+               String <jv>path</jv> = 
<jv>config</jv>.get(<js>"MyProperties/path"</js>).get();
+               File <jv>javaHome</jv> = 
<jv>config</jv>.get(<js>"MyProperties/javaHome"</js>).to(File.<jk>class</jk>);
+               String <jv>customMessage</jv> = 
<jv>config</jv>.get(<js>"MyProperties/customMessage"</js>).orElse(<js>"Hello"</js>);
                ...
        }
        </p>
@@ -17420,8 +17425,8 @@
        
                <jk>public</jk> MyResource(RestContext.Builder builder) {
                        Config c = builder.getConfig();
-                       <jf>path</jf> = 
c.getString(<js>"MyProperties/path"</js>);
-                       <jf>javaHome</jf> = c.getObject(File.<jk>class</jk>, 
<js>"MyProperties/javaHome"</js>);
+                       <jf>path</jf> = 
c.get(<js>"MyProperties/path"</js>).orElse(<js>"mypath"</js>);
+                       <jf>javaHome</jf> = 
c.get(<js>"MyProperties/javaHome"</js>).to(File.<jk>class</jk>);
                }
        </p>
        <p>
@@ -17498,8 +17503,8 @@
                 * Specify the GET parameter "?person=X" for a specialized 
message! 
                 */</jd>
                <ja>@RestGet</ja>(<js>"/"</js>)
-               <jk>public</jk> String sayHello(RestRequest <jv>req</jv>) {
-                       <jk>return</jk> 
<jv>req</jv>.getConfig().getString(<js>"HelloWorldResource/message"</js>);
+               <jk>public</jk> String sayHello(Config <jv>config</jv>) {
+                       <jk>return</jk> 
<jv>config</jv>.getString(<js>"HelloWorldResource/message"</js>);
                }
        }
        </p>
@@ -17512,7 +17517,7 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.SvlVariables' 
id='juneau-rest-server.jrs.SvlVariables'>6.12 - SVL Variables</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.SvlVariables' 
id='juneau-rest-server.jrs.SvlVariables'>6.12 - SVL Variables</a><span 
class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 6.12 - juneau-rest-server.jrs.SvlVariables -->
 <div class='topic'>
        <p>     
@@ -17537,46 +17542,7 @@
                <li>
                        Variables are recursively resolved. 
                        <br>i.e., if a variable results to a value with another 
variable in it, that variable will also be 
-                       resolved (restricted for security reasons on some 
variables).
-       </ul>
-       <p>
-               Variables are configured on resources via the following API:
-       </p>
-       <ul class='javatree'>
-               <li class='jm'>{@del 
org.apache.juneau.rest.RestContext.Builder#vars(Class[])}
-       </ul>
-       <h5 class='figure'>Example:</h5>
-       <p class='bcode w800'>
-       <jc>// Defined a variable that simply wrapps all strings inside [] 
brackets.</jc>
-       <jc>// e.g. "$BRACKET{foobar}" -> "[foobar]"</jc>
-       <jk>public class</jk> BracketVar <jk>extends</jk> SimpleVar {
-               
-               <jk>public</jk> BracketVar() {
-                       <jk>super</jk>(<js>"BRACKET"</js>);
-               }
-                       
-               <ja>@Override</ja> <jc>/* Var */</jc>
-               <jk>public</jk> String resolve(VarResolverSession session, 
String arg) {
-                       <jk>return</jk> <js>'['</js> + arg + <js>']'</js>;
-               }
-       }
-
-       <jc>// Register it with our resource.</jc>
-       <ja>@Rest</ja>(...)
-       <jk>public class</jk> MyResource {
-       
-               <jk>public</jk> MyResource(RestContext.Builder builder) {
-                       builder.vars(BracketVar.<jk>class</jk>);
-               }
-       }
-       </p>
-       <p>
-               The methods involved with variables are:
-       </p>
-       <ul class='javatree'>
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestContext#getVarResolver()}
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getVarResolverSession()}
-               <li class='jm'>{@del 
RestRequest#getClasspathHttpResource(String,boolean)}
+                       resolved (restricted for security reasons on variables 
that involve user input).
        </ul>
        <p>
                There are two distinct groups of variables:
@@ -17776,72 +17742,101 @@
                        <td class='code'>$U{servlet:/foo?bar=$UE{$RA{bar}}</td>
                </tr>
                <tr class='dark dd'>
-                       <td>{@del org.apache.juneau.rest.vars.WidgetVar}</td>
+                       <td>{@link org.apache.juneau.html.Widget}</td>
                        <td class='code'>$W{name}</td>
                        <td style='text-align:center;font-weight:bold'>no</td>
                        <td style='text-align:center;font-weight:bold'>yes</td>
                        <td class='code'>$W{MenuItemWidget}</td>
                </tr>
        </table>
+       <p>
+               Custom variables can be defined on resources via the following 
API:
+       </p>
+       <ul class='javatree'>
+               <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#varResolver()}
+       </ul>
+       <h5 class='figure'>Example:</h5>
+       <p class='bcode w800'>
+       <jc>// Defined a variable that simply wrapps all strings inside [] 
brackets.</jc>
+       <jc>// e.g. "$BRACKET{foobar}" -> "[foobar]"</jc>
+       <jk>public class</jk> BracketVar <jk>extends</jk> SimpleVar {
+               
+               <jk>public</jk> BracketVar() {
+                       <jk>super</jk>(<js>"BRACKET"</js>);
+               }
+                       
+               <ja>@Override</ja> <jc>/* Var */</jc>
+               <jk>public</jk> String resolve(VarResolverSession 
<jv>session</jv>, String <jv>arg</jv>) {
+                       <jk>return</jk> <js>'['</js> + <jv>arg</jv> + 
<js>']'</js>;
+               }
+       }
+
+       <jc>// Register it with our resource.</jc>
+       <ja>@Rest</ja>(...)
+       <jk>public class</jk> MyResource {
+       
+               <jk>public</jk> MyResource(RestContext.Builder 
<jv>builder</jv>) {
+                       
<jv>builder</jv>.varResolver().vars(BracketVar.<jk>class</jk>);
+               }
+       }
+       </p>
+       <p>
+               The methods involved with variables are:
+       </p>
+       <ul class='javatree'>
+               <li class='jm'>{@link 
org.apache.juneau.rest.RestContext#getVarResolver()}
+               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getVarResolverSession()}
+       </ul>
 </div>
 </div><!-- END: 6.12 - juneau-rest-server.jrs.SvlVariables -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.StaticFiles' 
id='juneau-rest-server.jrs.StaticFiles'>6.13 - Static files</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.StaticFiles' 
id='juneau-rest-server.jrs.StaticFiles'>6.13 - Static files</a><span 
class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 6.13 - juneau-rest-server.jrs.StaticFiles -->
 <div class='topic'>
        <p>
-               The {@link org.apache.juneau.rest.annotation.Rest#staticFiles 
@Rest(staticFiles)} 
-               annotation is used to define paths and locations of 
statically-served files such as images or HTML 
-               documents.
+               The {@link org.apache.juneau.rest.BasicRestServlet} and {@link 
org.apache.juneau.rest.BasicRestObject} classes come with built-in support
+               for serving up static files through the following REST 
operation:
+       </p>
+       <p class='bcode w800'>
+       <ja>@RestGet</ja>(path=<js>"/htdocs/*"</js>)
+       <jk>public</jk> HttpResource getHtdoc(<ja>@Path</ja>("/*") String 
<jv>path</jv>, Locale <jv>locale</jv>) <jk>throws</jk> NotFound {
+               <jk>return</jk> 
getContext().getStaticFiles().resolve(<jv>path</jv>, 
<jv>locale</jv>).orElseThrow(NotFound::<jk>new</jk>);
+       }
        </p>
        <p>
-               The value is a JSON map of paths to packages/directories 
located on either the classpath or working 
-               directory.
+               The static file finder can be accessed through the following 
methods:
        </p>
-       
-       <h5 class='figure'>Example:</h5>
-       <p class='bcode w800'>
-       <jk>package</jk> com.foo.mypackage;
-
-       <ja>@Rest</ja>(
-               path=<js>"/myresource"</js>,
-               staticFiles={<js>"htdocs:docs"</js>}
-       )
-       <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet {...}
+       <ul class='javatree'>
+               <li class='jm'>{@link 
org.apache.juneau.rest.RestContext#getStaticFiles()}
+               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getStaticFiles()}
+       </ul>
+       <p>
+               By default, the {@link 
org.apache.juneau.rest.staticfile.StaticFiles} bean is configured as follows:
        </p>
-       <p>     
-               Static files are found by calling {@link 
java.lang.Class#getResource(String)} up the class hierarchy.  
-               If not found, then an attempt is made to find the class in the 
Java working directory.
+       <p class='bcode w800'>
+       StaticFiles
+               .<jsm>create</jsm>()
+               .beanStore(<jv>beanStore</jv>)  <jc>// Allow injected beans in 
constructor.</jc>
+               .type(BasicStaticFiles.<jk>class</jk>)  <jc>// Default 
implementation class.</jc>
+               .dir(<js>"static"</js>)  <jc>// Look in working /static 
directory.</jc>
+               .dir(<js>"htdocs"</js>)  <jc>// Look in working /htdocs 
directory.</jc>
+               .cp(<jv>resourceClass</jv>, <js>"htdocs"</js>, <jk>true</jk>)  
<jc>// Look in htdocs subpackage.</jc>
+               .cp(<jv>resourceClass</jv>, <js>"/htdocs"</js>, <jk>true</jk>)  
<jc>// Look in htdocs package.</jc>
+               .caching(1_000_000)  <jc>// Cache files in memory up to 
1MB.</jc>
+               .exclude(<js>"(?i).*\\.(class|properties)"</js>)  <jc>// Ignore 
class/properties files.</jc>
+               .headers(<jsm>cacheControl</jsm>(<js>"max-age=86400, 
public"</js>));  <jc>// Add cache control.</jc>
        </p>
        <p>
-               In the example above, given a GET request to 
<l>/myresource/htdocs/foobar.html</l>, the servlet will 
-               attempt to find the <l>foobar.html</l> file in the following 
ordered locations:
+               See {@link 
org.apache.juneau.rest.RestContext.Builder#createStaticFiles(BeanStore,Supplier)}
 for details on configuring this bean.
        </p>
-       <ol>
-               <li><l>com.foo.mypackage.docs</l> package.
-               <li><l>[working-dir]/docs</l> directory.
-       </ol>
-       
-       <ul class='notes'>
-               <li>
-                       Mappings are cumulative from parent to child.  
-                       <br>Child resources can override mappings made on 
parent resources.
-               <li>
-                       The media type on the response is determined by the 
-                       {@del RestContext#getMediaTypeForName(String)} method.
-       </ul>
-       
-       <ul class='seealso'>
-               <li class='jf'>{@del 
org.apache.juneau.rest.RestContext#REST_staticFiles}
-       </ul>
 </div>
 </div><!-- END: 6.13 - juneau-rest-server.jrs.StaticFiles -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.ClientVersioning' 
id='juneau-rest-server.jrs.ClientVersioning'>6.14 - Client Versioning</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.ClientVersioning' 
id='juneau-rest-server.jrs.ClientVersioning'>6.14 - Client Versioning</a><span 
class='update'>updated: <b>9.0.0</b></span></h3>
 <div class='topic'><!-- START: 6.14 - juneau-rest-server.jrs.ClientVersioning 
-->
 <div class='topic'>
        <p>
@@ -17881,68 +17876,13 @@
                        ...
                }
        </p>
-       
-       <ul class='seealso'>
-               <li class='jf'>{@del 
org.apache.juneau.rest.RestContext#REST_clientVersionHeader}
-       </ul>
 </div>
 </div><!-- END: 6.14 - juneau-rest-server.jrs.ClientVersioning -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.InfoProvider' 
id='juneau-rest-server.jrs.InfoProvider'>6.15 - RestInfoProvider</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.15 - juneau-rest-server.jrs.InfoProvider -->
-<div class='topic'>
-       <p>
-               The {@del org.apache.juneau.rest.RestInfoProvider} class is 
used to find the title
-               and description for your resource and also generate the Swagger 
documentation.
-               It can be overridden to provide your own custom Swagger 
documentation.
-       </p>
-       <p>
-               The methods on this interface are:
-       </p>
-       <ul class='javatree'>
-               <li class='jic'>{@del RestInfoProvider}
-               <ul>
-                       <li class='jm'>{@del getSwagger(RestRequest)}
-                       <li class='jm'>{@del getSiteName(RestRequest)}
-                       <li class='jm'>{@del getTitle(RestRequest)}
-                       <li class='jm'>{@del getDescription(RestRequest)}
-                       <li class='jm'>{@del 
getMethodSummary(Method,RestRequest)}
-                       <li class='jm'>{@del 
getMethodDescription(Method,RestRequest)}
-               </ul>
-       </ul>
-       <p>
-               The info provider in turn supplies the information returned by 
the following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link org.apache.juneau.rest.RestRequest}
-               <ul>
-                       <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getSwagger() getSwagger()}
-                       <li class='jm'>{@del getSiteName()}
-                       <li class='jm'>{@del getResourceTitle()}
-                       <li class='jm'>{@del getResourceDescription()}
-                       <li class='jm'>{@del getMethodSummary()}
-                       <li class='jm'>{@del getMethodDescription()}
-               </ul>
-       </ul>
-       <p>
-               Info providers are registered through the following property:
-       </p>
-       <ul class='javatree'>
-               <li class='jf'>{@del RestContext#REST_infoProvider}
-       </ul>
-       <p>
-               While you can implement this interface from scratch, you may 
want to instead consider extending
-               from the <l>BasicRestInfoProvider</l> class described next.
-       </p>
-</div>
-</div><!-- END: 6.15 - juneau-rest-server.jrs.InfoProvider -->
-
-<!-- 
====================================================================================================
 -->
-
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger' id='juneau-rest-server.jrs.Swagger'>6.16 
- Swagger</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.16 - juneau-rest-server.jrs.Swagger -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger' id='juneau-rest-server.jrs.Swagger'>6.15 
- Swagger</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.15 - juneau-rest-server.jrs.Swagger -->
 <div class='topic'>
        <p>
                One of the most useful features of Juneau is the ability to 
generate Swagger-based OPTIONS pages for self-documenting designs 
@@ -17960,8 +17900,8 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger' 
id='juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger'>6.16.1 - 
BasicRestServlet</a><span class='update'>updated: 8.1.0, 
<b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.1 - 
juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger' 
id='juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger'>6.15.1 - 
BasicRestServlet</a><span class='update'>updated: 8.1.0, 
<b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.1 - 
juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger -->
 <div class='topic'>
        <p>
                Any subclass of {@link org.apache.juneau.rest.BasicRestServlet} 
gets an auto-generated Swagger UI when performing an <c>OPTIONS</c>
@@ -18038,12 +17978,12 @@
                your own <ja>@RestOp</ja>-annotated method that returns a 
{@link org.apache.juneau.dto.swagger.Swagger} object and a {@link 
org.apache.juneau.dto.swagger.ui.SwaggerUI} swap.
        </p>
 </div>
-</div><!-- END: 6.16.1 - 
juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger -->
+</div><!-- END: 6.15.1 - 
juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo' 
id='juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo'>6.16.2 - Basic Swagger 
Info</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.2 - 
juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo' 
id='juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo'>6.15.2 - Basic Swagger 
Info</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.2 - 
juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo -->
 <div class='topic'>
        <p>
                Let's look at the various parts of the <c>Petstore</c> 
application Swagger UI to see how they are defined.
@@ -18206,12 +18146,12 @@
                <li>Swagger JSON file
        </ol>
 </div>
-</div><!-- END: 6.16.2 - juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo 
-->
+</div><!-- END: 6.15.2 - juneau-rest-server.jrs.Swagger.jrs.BasicSwaggerInfo 
-->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerTags' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerTags'>6.16.3 - Tags</a><span 
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.3 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerTags -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerTags' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerTags'>6.15.3 - Tags</a><span 
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.3 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerTags -->
 <div class='topic'>
        <p>
                Tags allow you to group operations into general categories.
@@ -18308,12 +18248,12 @@
        </p>
        <img class='bordered w900' src='doc-files/jrs.Swagger.5.png'>
 </div>
-</div><!-- END: 6.16.3 - juneau-rest-server.jrs.Swagger.jrs.SwaggerTags -->
+</div><!-- END: 6.15.3 - juneau-rest-server.jrs.Swagger.jrs.SwaggerTags -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations'>6.16.4 - 
Operations</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.4 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations'>6.15.4 - 
Operations</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.4 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations -->
 <div class='topic'>
        <p>
                <ja>@RestOp</ja>-annotated methods automatically get rendered 
as Swagger operations:
@@ -18353,12 +18293,12 @@
        }
        </p>
 </div>
-</div><!-- END: 6.16.4 - juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations 
-->
+</div><!-- END: 6.15.4 - juneau-rest-server.jrs.Swagger.jrs.SwaggerOperations 
-->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters'>6.16.5 - 
Parameters</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.5 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters'>6.15.5 - 
Parameters</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.5 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters -->
 <div class='topic'>
        <p>
                Expanding operations shows you a list of parameters:
@@ -18492,12 +18432,12 @@
                Note that the schema information on the body parameter is 
automatically detected if not provided.
        </p>
 </div>
-</div><!-- END: 6.16.5 - juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters 
-->
+</div><!-- END: 6.15.5 - juneau-rest-server.jrs.Swagger.jrs.SwaggerParameters 
-->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples'>6.16.6 - 
Parameter Examples</a><span class='update'>updated: 8.1.0, 
<b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.6 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples'>6.15.6 - 
Parameter Examples</a><span class='update'>updated: 8.1.0, 
<b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.6 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples -->
 <div class='topic'>
        <p>
                The <c>model</c> select box in the parameters can be expanded 
to show examples:
@@ -18719,12 +18659,12 @@
                </ul>
        </ul>
 </div>
-</div><!-- END: 6.16.6 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples -->
+</div><!-- END: 6.15.6 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerParameterExamples -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses'>6.16.7 - 
Responses</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.7 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses'>6.15.7 - 
Responses</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.7 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses -->
 <div class='topic'>
        <p>
                Under the input parameters are listed the possible responses 
for the resource:
@@ -18763,12 +18703,12 @@
                <li class='link'>{@doc jrs.ResponseBeans}
        </ul>
 </div>
-</div><!-- END: 6.16.7 - juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses 
-->
+</div><!-- END: 6.15.7 - juneau-rest-server.jrs.Swagger.jrs.SwaggerResponses 
-->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples'>6.16.8 - 
Response Examples</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.8 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples'>6.15.8 - 
Response Examples</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.8 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples -->
 <div class='topic'>
        <p>
                The <c>model</c> select box in the responses can be expanded to 
show examples:
@@ -18988,12 +18928,12 @@
        }
        </p>    
 </div>
-</div><!-- END: 6.16.8 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples -->
+</div><!-- END: 6.15.8 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerResponseExamples -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerModels' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerModels'>6.16.9 - Models</a><span 
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.9 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerModels -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerModels' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerModels'>6.15.9 - Models</a><span 
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.9 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerModels -->
 <div class='topic'>
        <p>
                The {@del 
org.apache.juneau.jsonschema.JsonSchemaGenerator#JSONSCHEMA_useBeanDefs} 
setting can be used to reduce the size of your
@@ -19088,12 +19028,12 @@
        </p>
        <img class='bordered w900' src='doc-files/jrs.Swagger.Models.3.png'> 
 </div>
-</div><!-- END: 6.16.9 - juneau-rest-server.jrs.Swagger.jrs.SwaggerModels -->
+</div><!-- END: 6.15.9 - juneau-rest-server.jrs.Swagger.jrs.SwaggerModels -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet'>6.16.10 - 
SwaggerUI.css</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.16.10 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet' 
id='juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet'>6.15.10 - 
SwaggerUI.css</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.15.10 - 
juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet -->
 <div class='topic'>
        <p>
                The look-and-feel of the Swagger UI is controlled via a single 
CSS file:  <c>SwaggerUI.css</c>.
@@ -19104,13 +19044,13 @@
                This file can be modified to change the look-and-feel of your 
Swagger UI.
        </p>
 </div>
-</div><!-- END: 6.16.10 - juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet 
-->
-</div><!-- END: 6.16 - juneau-rest-server.jrs.Swagger -->
+</div><!-- END: 6.15.10 - juneau-rest-server.jrs.Swagger.jrs.SwaggerStylesheet 
-->
+</div><!-- END: 6.15 - juneau-rest-server.jrs.Swagger -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.ExecutionStatistics' 
id='juneau-rest-server.jrs.ExecutionStatistics'>6.17 - REST method execution 
statistics</a><span class='update'>created: 8.1.3, 
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.17 - 
juneau-rest-server.jrs.ExecutionStatistics -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.ExecutionStatistics' 
id='juneau-rest-server.jrs.ExecutionStatistics'>6.16 - REST method execution 
statistics</a><span class='update'>created: 8.1.3, 
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.16 - 
juneau-rest-server.jrs.ExecutionStatistics -->
 <div class='topic'>
        <p>
                <ja>@RestResource</ja> annotated classes get automated timing 
and error statistic information for all <ja>@RestOp</ja>
@@ -19138,12 +19078,12 @@
                </ul>
        </ul>
 </div>
-</div><!-- END: 6.17 - juneau-rest-server.jrs.ExecutionStatistics -->
+</div><!-- END: 6.16 - juneau-rest-server.jrs.ExecutionStatistics -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation' 
id='juneau-rest-server.jrs.HtmlDocAnnotation'>6.18 - @HtmlDocConfig</a><span 
class='update'>updated: 8.1.0, <b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.18 - juneau-rest-server.jrs.HtmlDocAnnotation 
-->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation' 
id='juneau-rest-server.jrs.HtmlDocAnnotation'>6.17 - @HtmlDocConfig</a><span 
class='update'>updated: 8.1.0, <b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.17 - juneau-rest-server.jrs.HtmlDocAnnotation 
-->
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.html.annotation.HtmlDocConfig 
@HtmlDocConfig} annotation is used to customize the HTML 
@@ -19261,8 +19201,8 @@
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI'>6.18.1 - User 
Interfaces (UI) vs. Developer Interfaces (DI)</a><span 
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.18.1 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI'>6.17.1 - User 
Interfaces (UI) vs. Developer Interfaces (DI)</a><span 
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.17.1 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI -->
 <div class='topic'>
        <p>
                An important distinction needs to be made about the HTML 
representations produced by the REST
@@ -19305,12 +19245,12 @@
                        Angular, or any number of sophisticated Javascript UI 
frameworks.  Resist the urge to do so.
        </ul>           
 </div>
-</div><!-- END: 6.18.1 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI -->
+</div><!-- END: 6.17.1 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUIvsDI -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets'>6.18.2 - 
Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.18.2 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets'>6.17.2 - 
Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.17.2 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets -->
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.rest.widget.Widget} class allows 
you to add arbitrary HTML, CSS, and Javascript
@@ -19425,12 +19365,12 @@
                <li class='jf'>{@del 
org.apache.juneau.rest.RestContext#REST_widgets}
        </ul>
 </div>
-</div><!-- END: 6.18.2 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets -->
+</div><!-- END: 6.17.2 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlWidgets -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets'>6.18.3 
- Predefined Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.18.3 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets'>6.17.3 
- Predefined Widgets</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.17.3 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets -->
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.rest.widget} package contains 
predefined reusable widgets.
@@ -19667,12 +19607,12 @@
        }
        </p>
 </div>
-</div><!-- END: 6.18.3 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets -->
+</div><!-- END: 6.17.3 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlPredefinedWidgets -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization'>6.18.4 - 
UI Customization</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.18.4 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization'>6.17.4 - 
UI Customization</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.17.4 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization -->
 <div class='topic'>
        <p>
                The HTML views of POJOs can somewhat be considered a 
rudimentary User Interface.
@@ -19818,12 +19758,12 @@
                <li class='link'>{@doc jmj.UiCustomization}
        </ul>
 </div>
-</div><!-- END: 6.18.4 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization -->
+</div><!-- END: 6.17.4 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlUiCustomization -->
 
 <!-- 
====================================================================================================
 -->
 
-<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets'>6.18.5 - 
Stylesheets</a><span class='update'>updated: 8.1.0, 
<b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.18.5 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets -->
+<h5 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets' 
id='juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets'>6.17.5 - 
Stylesheets</a><span class='update'>updated: 8.1.0, 
<b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.17.5 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets -->
 <div class='topic'>
        <p>
                The sample root page renders in the default "devops" 
look-and-feel:
@@ -19935,13 +19875,13 @@
        }
        </p>
 </div>
-</div><!-- END: 6.18.5 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets -->
-</div><!-- END: 6.18 - juneau-rest-server.jrs.HtmlDocAnnotation -->
+</div><!-- END: 6.17.5 - 
juneau-rest-server.jrs.HtmlDocAnnotation.jrs.HtmlStylesheets -->
+</div><!-- END: 6.17 - juneau-rest-server.jrs.HtmlDocAnnotation -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.DefaultHeaders' 
id='juneau-rest-server.jrs.DefaultHeaders'>6.19 - Default Headers</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.19 - juneau-rest-server.jrs.DefaultHeaders -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.DefaultHeaders' 
id='juneau-rest-server.jrs.DefaultHeaders'>6.18 - Default Headers</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.18 - juneau-rest-server.jrs.DefaultHeaders -->
 <div class='topic'>
        <p>
                The following annotations are provided for specifying default 
header values for requests and responses:
@@ -19985,12 +19925,12 @@
                </li>
        </ul>
 </div>
-</div><!-- END: 6.19 - juneau-rest-server.jrs.DefaultHeaders -->
+</div><!-- END: 6.18 - juneau-rest-server.jrs.DefaultHeaders -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.LoggingAndDebugging' 
id='juneau-rest-server.jrs.LoggingAndDebugging'>6.20 - Logging / 
Debugging</a><span class='update'>created: 8.1.0, updated: 8.2.0, 
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.20 - 
juneau-rest-server.jrs.LoggingAndDebugging -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.LoggingAndDebugging' 
id='juneau-rest-server.jrs.LoggingAndDebugging'>6.19 - Logging / 
Debugging</a><span class='update'>created: 8.1.0, updated: 8.2.0, 
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.19 - 
juneau-rest-server.jrs.LoggingAndDebugging -->
 <div class='topic'>
        <p>
                The REST APIs provides support for fine-tuned control of 
logging for HTTP requests and responses.
@@ -20323,12 +20263,12 @@
                to the log file again.
        </p>
 </div>
-</div><!-- END: 6.20 - juneau-rest-server.jrs.LoggingAndDebugging -->
+</div><!-- END: 6.19 - juneau-rest-server.jrs.LoggingAndDebugging -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HttpStatusCodes' 
id='juneau-rest-server.jrs.HttpStatusCodes'>6.21 - HTTP Status Codes</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.21 - juneau-rest-server.jrs.HttpStatusCodes 
-->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.HttpStatusCodes' 
id='juneau-rest-server.jrs.HttpStatusCodes'>6.20 - HTTP Status Codes</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.20 - juneau-rest-server.jrs.HttpStatusCodes 
-->
 <div class='topic'>
        <p>
                By default, a 200 (OK) status is automatically set as the HTTP 
status when a Java method executes 
@@ -20393,12 +20333,12 @@
                </tr>
        </table>
 </div>
-</div><!-- END: 6.21 - juneau-rest-server.jrs.HttpStatusCodes -->
+</div><!-- END: 6.20 - juneau-rest-server.jrs.HttpStatusCodes -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.OverloadingHttpMethods' 
id='juneau-rest-server.jrs.OverloadingHttpMethods'>6.22 - Overloading HTTP 
Methods</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.22 - 
juneau-rest-server.jrs.OverloadingHttpMethods -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.OverloadingHttpMethods' 
id='juneau-rest-server.jrs.OverloadingHttpMethods'>6.21 - Overloading HTTP 
Methods</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.21 - 
juneau-rest-server.jrs.OverloadingHttpMethods -->
 <div class='topic'>
        <p>
                Through the use of the built-in <l>"method"</l> GET parameter, 
you can implement requests beyond the basic 
@@ -20424,12 +20364,12 @@
        )
        </p>
 </div>
-</div><!-- END: 6.22 - juneau-rest-server.jrs.OverloadingHttpMethods -->
+</div><!-- END: 6.21 - juneau-rest-server.jrs.OverloadingHttpMethods -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.BuiltInParameters' 
id='juneau-rest-server.jrs.BuiltInParameters'>6.23 - Built-in 
Parameters</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.23 - juneau-rest-server.jrs.BuiltInParameters 
-->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.BuiltInParameters' 
id='juneau-rest-server.jrs.BuiltInParameters'>6.22 - Built-in 
Parameters</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.22 - juneau-rest-server.jrs.BuiltInParameters 
-->
 <div class='topic'>
        <p>
                The following URL parameters have special meaning and can be 
passed in through the URL of the request:
@@ -20491,12 +20431,12 @@
                </tr>
        </table>
 </div>
-</div><!-- END: 6.23 - juneau-rest-server.jrs.BuiltInParameters -->
+</div><!-- END: 6.22 - juneau-rest-server.jrs.BuiltInParameters -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.CustomSerializersAndParsers' 
id='juneau-rest-server.jrs.CustomSerializersAndParsers'>6.24 - Custom 
Serializers and Parsers</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.24 - 
juneau-rest-server.jrs.CustomSerializersAndParsers -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.CustomSerializersAndParsers' 
id='juneau-rest-server.jrs.CustomSerializersAndParsers'>6.23 - Custom 
Serializers and Parsers</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.23 - 
juneau-rest-server.jrs.CustomSerializersAndParsers -->
 <div class='topic'>
        <p>
                A very easy-to-use API is provided for defining your own 
serializers and parsers at both the servlet and 
@@ -20613,12 +20553,12 @@
        }
        </p>
 </div>
-</div><!-- END: 6.24 - juneau-rest-server.jrs.CustomSerializersAndParsers -->
+</div><!-- END: 6.23 - juneau-rest-server.jrs.CustomSerializersAndParsers -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.UsingWithOsgi' 
id='juneau-rest-server.jrs.UsingWithOsgi'>6.25 - Using with OSGi</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.25 - juneau-rest-server.jrs.UsingWithOsgi -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.UsingWithOsgi' 
id='juneau-rest-server.jrs.UsingWithOsgi'>6.24 - Using with OSGi</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.24 - juneau-rest-server.jrs.UsingWithOsgi -->
 <div class='topic'>
        <p>
                Since REST servlets are basically just <l>HttpServlets</l>, 
incorporating them into an OSGi environment
@@ -20682,12 +20622,12 @@
        }
        </p>
 </div>
-</div><!-- END: 6.25 - juneau-rest-server.jrs.UsingWithOsgi -->
+</div><!-- END: 6.24 - juneau-rest-server.jrs.UsingWithOsgi -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Injection' 
id='juneau-rest-server.jrs.Injection'>6.26 - Using with Spring and Injection 
frameworks</a><span class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.26 - juneau-rest-server.jrs.Injection -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Injection' 
id='juneau-rest-server.jrs.Injection'>6.25 - Using with Spring and Injection 
frameworks</a><span class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.25 - juneau-rest-server.jrs.Injection -->
 <div class='topic'>
        <p>
                The Juneau REST server API is compatible with dependency 
injection frameworks such as Spring.
@@ -20791,12 +20731,12 @@
                }
        </p>
 </div>
-</div><!-- END: 6.26 - juneau-rest-server.jrs.Injection -->
+</div><!-- END: 6.25 - juneau-rest-server.jrs.Injection -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.OtherNotes' 
id='juneau-rest-server.jrs.OtherNotes'>6.27 - Other Notes</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.27 - juneau-rest-server.jrs.OtherNotes -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.OtherNotes' 
id='juneau-rest-server.jrs.OtherNotes'>6.26 - Other Notes</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.26 - juneau-rest-server.jrs.OtherNotes -->
 <div class='topic'>
        <ul class='spaced-list'>
                <li>
@@ -20809,12 +20749,12 @@
                        parameter can be specified:  
<l>"/sample?X-Response-Headers={Refresh=1}"</l>
        </ul>
 </div>
-</div><!-- END: 6.27 - juneau-rest-server.jrs.OtherNotes -->
+</div><!-- END: 6.26 - juneau-rest-server.jrs.OtherNotes -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.RestContext' 
id='juneau-rest-server.jrs.RestContext'>6.28 - RestContext</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.28 - juneau-rest-server.jrs.RestContext -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.RestContext' 
id='juneau-rest-server.jrs.RestContext'>6.27 - RestContext</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.27 - juneau-rest-server.jrs.RestContext -->
 <div class='topic'>
        <p>
                The {@link org.apache.juneau.rest.RestContext} object is the 
workhorse class for all of the configuration
@@ -20864,12 +20804,12 @@
                        resource finders, info providers, etc...
        </p>
 </div>
-</div><!-- END: 6.28 - juneau-rest-server.jrs.RestContext -->
+</div><!-- END: 6.27 - juneau-rest-server.jrs.RestContext -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.RestRpc' id='juneau-rest-server.jrs.RestRpc'>6.29 
- REST/RPC</a><span class='update'>updated: 8.0.0, 
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.29 - juneau-rest-server.jrs.RestRpc -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.RestRpc' id='juneau-rest-server.jrs.RestRpc'>6.28 
- REST/RPC</a><span class='update'>updated: 8.0.0, 
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.28 - juneau-rest-server.jrs.RestRpc -->
 <div class='topic'>
        <p>
                The REST/RPC (RPC over REST) API allows the creation of 
client-side remote proxy interfaces for calling methods on server-side POJOs 
using entirely REST.
@@ -21190,12 +21130,12 @@
        <h5 class='figure'>Sample form entry page results</h5>
        <img class='bordered w800' src='doc-files/jrs.restRPC.9.png'>
 </div>
-</div><!-- END: 6.29 - juneau-rest-server.jrs.RestRpc -->
+</div><!-- END: 6.28 - juneau-rest-server.jrs.RestRpc -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.CustomRestContextsAndBuilders' 
id='juneau-rest-server.jrs.CustomRestContextsAndBuilders'>6.30 - Custom REST 
Context and Builders</a><span class='update'>created: <b>9.0.0</b>, 
<b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.30 - 
juneau-rest-server.jrs.CustomRestContextsAndBuilders -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.CustomRestContextsAndBuilders' 
id='juneau-rest-server.jrs.CustomRestContextsAndBuilders'>6.29 - Custom REST 
Context and Builders</a><span class='update'>created: <b>9.0.0</b>, 
<b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.29 - 
juneau-rest-server.jrs.CustomRestContextsAndBuilders -->
 <div class='topic'>
        <p>
                They can also be defined programmatically:
@@ -21229,56 +21169,56 @@
        }
        </p>
 </div>
-</div><!-- END: 6.30 - juneau-rest-server.jrs.CustomRestContextsAndBuilders -->
+</div><!-- END: 6.29 - juneau-rest-server.jrs.CustomRestContextsAndBuilders -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.FluentAssertions' 
id='juneau-rest-server.jrs.FluentAssertions'>6.31 - Fluent Assertions</a><span 
class='update'>created: <b>9.0.0</b>, <b><red>TODO</red></b></span></h3>
-<div class='topic'><!-- START: 6.31 - juneau-rest-server.jrs.FluentAssertions 
-->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.FluentAssertions' 
id='juneau-rest-server.jrs.FluentAssertions'>6.30 - Fluent Assertions</a><span 
class='update'>created: <b>9.0.0</b>, <b><red>TODO</red></b></span></h3>
+<div class='topic'><!-- START: 6.30 - juneau-rest-server.jrs.FluentAssertions 
-->
 <div class='topic'>
        <p>
                TODO
        </p>
 </div>
-</div><!-- END: 6.31 - juneau-rest-server.jrs.FluentAssertions -->
+</div><!-- END: 6.30 - juneau-rest-server.jrs.FluentAssertions -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Overview' 
id='juneau-rest-server.jrs.Overview'>6.32 - Utility Beans</a><span 
class='update'>created: <b>9.0.0</b>, <b><red>TODO</red></b></span></h3>
-<div class='topic'><!-- START: 6.32 - juneau-rest-server.jrs.Overview -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.Overview' 
id='juneau-rest-server.jrs.Overview'>6.31 - Utility Beans</a><span 
class='update'>created: <b>9.0.0</b>, <b><red>TODO</red></b></span></h3>
+<div class='topic'><!-- START: 6.31 - juneau-rest-server.jrs.Overview -->
 <div class='topic'>
        <p>
                TODO
        </p>
 </div>
-</div><!-- END: 6.32 - juneau-rest-server.jrs.Overview -->
+</div><!-- END: 6.31 - juneau-rest-server.jrs.Overview -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.ResponseProcessors' 
id='juneau-rest-server.jrs.ResponseProcessors'>6.33 - Fluent 
Assertions</a><span class='update'>created: <b>9.0.0</b>, 
<b><red>TODO</red></b></span></h3>
-<div class='topic'><!-- START: 6.33 - 
juneau-rest-server.jrs.ResponseProcessors -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.ResponseProcessors' 
id='juneau-rest-server.jrs.ResponseProcessors'>6.32 - Fluent 
Assertions</a><span class='update'>created: <b>9.0.0</b>, 
<b><red>TODO</red></b></span></h3>
+<div class='topic'><!-- START: 6.32 - 
juneau-rest-server.jrs.ResponseProcessors -->
 <div class='topic'>
        <p>
                TODO
        </p>
 </div>
-</div><!-- END: 6.33 - juneau-rest-server.jrs.ResponseProcessors -->
+</div><!-- END: 6.32 - juneau-rest-server.jrs.ResponseProcessors -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.UtilityBeans' 
id='juneau-rest-server.jrs.UtilityBeans'>6.34 - Utility Beans</a><span 
class='update'>created: <b>9.0.0</b>, <b><red>TODO</red></b></span></h3>
-<div class='topic'><!-- START: 6.34 - juneau-rest-server.jrs.UtilityBeans -->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.UtilityBeans' 
id='juneau-rest-server.jrs.UtilityBeans'>6.33 - Utility Beans</a><span 
class='update'>created: <b>9.0.0</b>, <b><red>TODO</red></b></span></h3>
+<div class='topic'><!-- START: 6.33 - juneau-rest-server.jrs.UtilityBeans -->
 <div class='topic'>
        <p>
                TODO
        </p>
 </div>
-</div><!-- END: 6.34 - juneau-rest-server.jrs.UtilityBeans -->
+</div><!-- END: 6.33 - juneau-rest-server.jrs.UtilityBeans -->
 
 <!-- 
====================================================================================================
 -->
 
-<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.SerializingUris' 
id='juneau-rest-server.jrs.SerializingUris'>6.35 - URIs</a><span 
class='update'><b><red>todo</red></b></span></h3>
-<div class='topic'><!-- START: 6.35 - juneau-rest-server.jrs.SerializingUris 
-->
+<h3 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.jrs.SerializingUris' 
id='juneau-rest-server.jrs.SerializingUris'>6.34 - URIs</a><span 
class='update'><b><red>todo</red></b></span></h3>
+<div class='topic'><!-- START: 6.34 - juneau-rest-server.jrs.SerializingUris 
-->
 <div class='topic'>
        <p>
                As mention earlier {@doc jm.MarshallingUris here}, Juneau 
serializers have sophisticated support for transforming relative URIs to 
absolute form.
@@ -21360,7 +21300,7 @@
                URIs are resolved by both regular and part serializers.
        </p>
 </div>
-</div><!-- END: 6.35 - juneau-rest-server.jrs.SerializingUris -->
+</div><!-- END: 6.34 - juneau-rest-server.jrs.SerializingUris -->
 </div><!-- END: 6 - juneau-rest-server -->
 
 <!-- 
====================================================================================================
 -->
diff --git a/juneau-doc/src/main/javadoc/resources/docs.txt 
b/juneau-doc/src/main/javadoc/resources/docs.txt
index d6c0966..6ee1798 100644
--- a/juneau-doc/src/main/javadoc/resources/docs.txt
+++ b/juneau-doc/src/main/javadoc/resources/docs.txt
@@ -277,7 +277,6 @@ jrs.HttpPartApis = 
#juneau-rest-server.jrs.HttpParts.jrs.HttpPartApis, Overview
 jrs.HttpParts = #juneau-rest-server.jrs.HttpParts, Overview > 
juneau-rest-server > HTTP Parts
 jrs.HttpStatusCodes = #juneau-rest-server.jrs.HttpStatusCodes, Overview > 
juneau-rest-server > HTTP Status Codes
 jrs.InferredHttpMethodsAndPaths = 
#juneau-rest-server.jrs.RestOpAnnotatedMethods.jrs.InferredHttpMethodsAndPaths, 
Overview > juneau-rest-server > @RestOp-Annotated Methods > Inferred HTTP 
Methods and Paths
-jrs.InfoProvider = #juneau-rest-server.jrs.InfoProvider, Overview > 
juneau-rest-server > RestInfoProvider
 jrs.Injection = #juneau-rest-server.jrs.Injection, Overview > 
juneau-rest-server > Using with Spring and Injection frameworks
 jrs.JavaMethodParameters = 
#juneau-rest-server.jrs.RestOpAnnotatedMethods.jrs.JavaMethodParameters, 
Overview > juneau-rest-server > @RestOp-Annotated Methods > Java Method 
Parameters
 jrs.JavaMethodReturnTypes = 
#juneau-rest-server.jrs.RestOpAnnotatedMethods.jrs.JavaMethodReturnTypes, 
Overview > juneau-rest-server > @RestOp-Annotated Methods > Java Method Return 
Types
diff --git a/juneau-doc/src/main/javadoc/resources/fragments/toc.html 
b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
index 2b9baca..125752a 100644
--- a/juneau-doc/src/main/javadoc/resources/fragments/toc.html
+++ b/juneau-doc/src/main/javadoc/resources/fragments/toc.html
@@ -231,10 +231,9 @@
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.LocalizedMessages'>Localized 
Messages</a><span class='update'>updated: 8.2.0,<b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.Encoders'>Encoders</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.ConfigurationFiles'>Configuration 
Files</a><span class='update'>updated: <b>9.0.0</b></span></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.SvlVariables'>SVL 
Variables</a><span class='update'><b><red>todo</red></b></span></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.StaticFiles'>Static files</a><span 
class='update'><b><red>todo</red></b></span></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.ClientVersioning'>Client 
Versioning</a><span class='update'><b><red>todo</red></b></span></p>
-               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.InfoProvider'>RestInfoProvider</a><span
 class='update'><b><red>todo</red></b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.SvlVariables'>SVL 
Variables</a><span class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.StaticFiles'>Static files</a><span 
class='update'>updated: <b>9.0.0</b></span></p>
+               <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.ClientVersioning'>Client 
Versioning</a><span class='update'>updated: <b>9.0.0</b></span></p>
                <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.Swagger'>Swagger</a><span 
class='update'><b><red>todo</red></b></span></p>
                <ol>
                        <li><p><a class='doclink' 
href='{OVERVIEW_URL}#juneau-rest-server.jrs.Swagger.jrs.BasicRestServletSwagger'>BasicRestServlet</a><span
 class='update'>updated: 8.1.0, <b><red>todo</red></b></span></p>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index 969806c..b199850 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -20,7 +20,6 @@ import static org.apache.juneau.internal.ClassUtils.*;
 import static org.apache.juneau.internal.ThrowableUtils.*;
 import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
-import static org.apache.juneau.internal.SystemEnv.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 import static org.apache.juneau.rest.logging.RestLoggingDetail.*;
 import static org.apache.juneau.rest.processor.ResponseProcessor.*;
@@ -2741,96 +2740,78 @@ public class RestContext extends Context {
                 * <p>
                 * The static file finder is instantiated via the {@link 
RestContext.Builder#createStaticFiles(BeanStore,Supplier)} method which in turn 
instantiates
                 * based on the following logic:
-                * <ul>
-                *      <li>Returns the resource class itself is an instance of 
{@link StaticFiles}.
-                *      <li>Looks for a public <c>createStaticFiles()</> method 
on the resource class with an optional {@link RestContext} argument.
-                *      <li>Instantiates a {@link BasicStaticFiles} which 
provides basic support for finding localized
-                *              resources on the classpath and JVM working 
directory..
+                *
+                * <ol class='spaced-list'>
+                *      <li>
+                *              Uses resource object itself if it implements 
the <c>StaticFiles</c> interface.
+                *      <li>
+                *              Uses existing {@link StaticFiles} bean if found 
in the bean store (e.g. an injected bean).
+                *      <li>
+                *              Uses existing {@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder} bean if found in the 
bean store (e.g. an injected bean).
+                *      <li>
+                *              Constructs a builder with default settings:
+                *              <p class='bcode w800'>
+                *      StaticFiles
+                *              .<jsm>create</jsm>()
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#beanStore(BeanStore) 
beanStore}(<jv>beanStore</jv>)  <jc>// Allow injected beans in constructor.</jc>
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#type(Class) type}({@link 
BasicStaticFiles}.<jk>class</jk>)
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#dir(String) 
dir}(<js>"static"</js>)  <jc>// Look in working /static directory.</jc>
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#dir(String) 
dir}(<js>"htdocs"</js>)  <jc>// Look in working /htdocs directory.</jc>
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#cp(Class,String,boolean) 
cp}(<jv>resourceClass</jv>, <js>"htdocs"</js>, <jk>true</jk>)  <jc>// Look in 
htdocs subpackage.</jc>
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#cp(Class,String,boolean) 
cp}(<jv>resourceClass</jv>, <js>"/htdocs"</js>, <jk>true</jk>)  <jc>// Look in 
htdocs package.</jc>
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#caching(long) 
caching}(1_000_000)  <jc>// Cache files in memory up to 1MB.</jc>
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#exclude(String...) 
exclude}(<js>"(?i).*\\.(class|properties)"</js>)  <jc>// Ignore 
class/properties files.</jc>
+                *              .{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#headers(Header...) 
headers}(<jsm>{@link org.apache.juneau.http.HttpHeaders#cacheControl(String) 
cacheControl}</jsm>(<js>"max-age=86400, public"</js>));  <jc>// Add cache 
control.</jc>
+                *              </p>
+                *      <li>
+                *              Looks for the following method on the resource 
class:
+                *              <p class='bcode w800'>
+                *      <jk>public [static]</jk> StaticFiles.Builder 
createStaticFiles(<ja>&lt;args&gt;</ja>)
+                *              </p>
+                *              Args can be any bean found in the bean store 
(including injected beans) and the <c>StaticFiles.Builder</c> itself.
+                *      <li>
+                *              Looks for the following method on the resource 
class:
+                *              <p class='bcode w800'>
+                *      <jk>public [static]</jk> StaticFiles 
createStaticFiles(<ja>&lt;args&gt;</ja>)
+                *              </p>
+                *              Args can be any bean found in the bean store 
(including injected beans) and the <c>StaticFiles.Builder</c> itself.
+                * </ol>
+                *
+                * <p>
+                * The default static files finder implementation class is 
{@link BasicStaticFiles}.  This can be overridden via the following:
+                * <ul class='spaced-list'>
+                *      <li>
+                *              The {@link Rest#staticFiles() 
@Rest(staticFiles)} annotation.
+                *      <li>
+                *              Overridden {@link StaticFiles} implementation 
class name specified in {@link #defaultClasses()}.
+                *      <li>
+                *              Type specified via <c>{@link 
RestContext.Builder}.{@link #staticFiles() staticFiles()}.{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#type(Class) 
type(Class)}</c>.
+                *      <li>
+                *              Bean specified via <c>{@link 
RestContext.Builder}.{@link #staticFiles() staticFiles()}.{@link 
org.apache.juneau.rest.staticfile.StaticFiles.Builder#impl(Object) 
impl(Object)}</c>.
                 * </ul>
                 *
                 * <h5 class='section'>Example:</h5>
                 * <p class='bcode w800'>
-                *      <jc>// Create a static file finder that looks for files 
in the /files working subdirectory, but overrides the find()
-                *      // and resolve methods for special handling of special 
cases and adds a Foo header to all requests.</jc>
-                *      <jk>public class</jk> MyStaticFiles <jk>extends</jk> 
StaticFiles {
+                *      <jc>// Create a static file finder that looks for files 
in the /files working subdirectory, but
+                *      // overrides the find() and resolve methods for special 
handling of special cases and adds a
+                *      // Foo header to all requests.</jc>
+                *      <jk>public class</jk> MyStaticFiles <jk>extends</jk> 
BasicStaticFiles {
                 *
-                *              <jk>public</jk> MyStaticFiles() 
<jk>extends</jk> BasicStaticFiles {
+                *              <jk>public</jk> MyStaticFiles() {
                 *                      <jk>super</jk>(
-                *                              <jk>new</jk> 
StaticFilesBuilder()
+                *                              StaticFiles
+                *                                      .<jsm>create</jsm>()
                 *                                      .dir(<js>"/files"</js>)
                 *                                      
.headers(BasicStringHeader.<jsm>of</jsm>(<js>"Foo"</js>, <js>"bar"</js>))
                 *                      );
                 *              }
-                *
-                *              <ja>@Override</ja> <jc>// FileFinder</jc>
-                *              <jk>protected</jk> Optional&lt;InputStream&gt; 
find(String <jv>name</jv>, Locale <jv>locale</jv>) <jk>throws</jk> IOException {
-                *                      <jc>// Do special handling or just call 
super.find().</jc>
-                *                      <jk>return 
super</jk>.find(<jv>name</jv>, <jv>locale</jv>);
-                *              }
-                *
-                *              <ja>@Override</ja> <jc>// staticFiles</jc>
-                *              <jk>public</jk> 
Optional&lt;BasicHttpResource&gt; resolve(String <jv>path</jv>, Locale 
<jv>locale</jv>) {
-                *                      <jc>// Do special handling or just call 
super.resolve().</jc>
-                *                      <jk>return 
super</jk>.resolve(<jv>path</jv>, <jv>locale</jv>);
-                *              }
                 *      }
                 * </p>
-                *
-                *      <jc>// Option #1 - Registered via annotation.</jc>
+                * <p class='bcode w800'>
                 *      <ja>@Rest</ja>(staticFiles=MyStaticFiles.<jk>class</jk>)
-                *      <jk>public class</jk> MyResource {
-                *
-                *              <jc>// Option #2 - Created via 
createStaticFiles() method.</jc>
-                *              <jk>public</jk> StaticFiles 
createStaticFiles(RestContext <jv>context</jv>) <jk>throws</jk> Exception {
-                *                      <jk>return new</jk> MyStaticFiles();
-                *              }
-                *
-                *              <jc>// Option #3 - Registered via builder 
passed in through resource constructor.</jc>
-                *              <jk>public</jk> MyResource(Builder 
<jv>builder</jv>) <jk>throws</jk> Exception {
-                *
-                *                      <jc>// Using method on builder.</jc>
-                *                      
<jv>builder</jv>.staticFiles(MyStaticFiles.<jk>class</jk>);
-                *
-                *                      <jc>// Use a pre-instantiated object 
instead.</jc>
-                *                      
<jv>builder</jv>.staticFiles(<jk>new</jk> MyStaticFiles());
-                *              }
-                *
-                *              <jc>// Option #4 - Registered via builder 
passed in through init method.</jc>
-                *              <ja>@RestHook</ja>(<jsf>INIT</jsf>)
-                *              <jk>public void</jk> init(Builder 
<jv>builder</jv>) <jk>throws</jk> Exception {
-                *                      
<jv>builder</jv>.staticFiles(MyStaticFiles.<jk>class</jk>);
-                *              }
-                *
-                *              <jc>// Create a REST method that uses the 
static files finder.</jc>
-                *              <ja>@RestGet<ja>(<js>"/htdocs/*"</js>)
-                *              <jk>public</jk> HttpResource htdocs(RestRequest 
<jv>req</jv>, <ja>@Path</ja>("/*") String <jv>path</jv>, Locale 
<jv>locale</jv>) <jk>throws</jk> NotFound {
-                *                      <jk>return</jk> 
<jv>req</jv>.getStaticFiles().resolve(<jv>path</jv>, 
<jv>locale</jv>).orElseThrow(NotFound::<jk>new</jk>);
-                *              }
-                *      }
+                *      <jk>public class</jk> MyResource {...}
                 * </p>
                 *
-                * <p>
-                * Instantiates based on the following logic:
-                * <ul>
-                *      <li>Returns the resource class itself is an instance of 
FileFinder.
-                *      <li>Looks for static files set via any of the following:
-                *              <ul>
-                *                      <li>{@link 
RestContext.Builder#staticFiles()}
-                *                      <li>{@link Rest#staticFiles()}.
-                *              </ul>
-                *      <li>Looks for a static or non-static 
<c>createStaticFiles()</> method that returns {@link StaticFiles} on the
-                *              resource class with any of the following 
arguments:
-                *              <ul>
-                *                      <li>{@link RestContext}
-                *                      <li>{@link BeanStore}
-                *                      <li>{@link BasicFileFinder}
-                *                      <li>Any {@doc jrs.Injection injected 
beans}.
-                *              </ul>
-                *      <li>Resolves it via the bean store registered in this 
context.
-                *      <li>Looks for value in default static files setting.
-                *      <li>Instantiates a {@link BasicStaticFiles}.
-                * </ul>
-                *
                 * @param beanStore
                 *      The factory used for creating beans and retrieving 
injected beans.
                 * @param resource
@@ -2844,6 +2825,7 @@ public class RestContext extends Context {
                                StaticFiles
                                        .create()
                                        .beanStore(beanStore)
+                                       .type(BasicStaticFiles.class)
                                        .dir("static")
                                        .dir("htdocs")
                                        .cp(resourceClass, "htdocs", true)

Reply via email to