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 0ab1ae4a3 Make BasicRestServlet implement BasicUniversalConfig
0ab1ae4a3 is described below

commit 0ab1ae4a34d989a3c2a4afcc59532fa9806afef0
Author: JamesBognar <[email protected]>
AuthorDate: Sun Sep 11 10:49:29 2022 -0400

    Make BasicRestServlet implement BasicUniversalConfig
---
 .../org/apache/juneau/dto/jsonschema/package.html  |   2 +-
 .../org/apache/juneau/html/HtmlDocSerializer.java  |   2 +-
 .../juneau/html/annotation/HtmlDocConfig.java      |   2 +-
 juneau-doc/docs/ReleaseNotes/9.0.0.html            |   7 +-
 juneau-doc/docs/Topics/01.Overview.html            |   6 +-
 .../docs/Topics/01.Overview/03.o.RestServer.html   |  10 +-
 .../docs/Topics/01.Overview/04.o.RestClient.html   |   2 +-
 .../07.jm.ContextAnnotations.html                  |   2 +-
 .../27.jm.HtmlDetails/06.jm.HtmlDocSerializer.html |   2 +-
 .../01.jrc.org.apache.juneau.http.html             |   6 +-
 .../03.jrc.org.apache.juneau.http.header.html      |  28 +--
 .../04.jrc.org.apache.juneau.http.part.html        |  26 +--
 .../05.jrc.org.apache.juneau.http.entity.html      |  56 ++---
 .../06.jrc.org.apache.juneau.http.resource.html    |  67 +++---
 .../07.jrc.org.apache.juneau.http.response.html    |  36 +--
 .../08.juneau-rest-server/01.jrs.Overview.html     |   7 +-
 .../01.jrs.PredefinedClasses.html                  |   6 +-
 .../02.jrs.ChildResources.html                     |   4 +-
 .../03.jrs.PathVariables.html                      |   2 +-
 .../05.jrs.LifecycleHooks.html                     |   4 +-
 .../02.jrs.JavaMethodParameters.html               |   2 +-
 .../03.jrs.JavaMethodReturnTypes.html              |   2 +-
 .../04.jrs.HttpParts/03.jrs.DefaultParts.html      |   2 +-
 .../08.juneau-rest-server/05.jrs.Marshalling.html  |   4 +-
 .../06.jrs.HandlingFormPosts.html                  |   2 +-
 .../08.juneau-rest-server/07.jrs.Guards.html       |   4 +-
 .../08.juneau-rest-server/10.jrs.Encoders.html     |   2 +-
 .../11.jrs.ConfigurationFiles.html                 |   4 +-
 .../08.juneau-rest-server/12.jrs.SvlVariables.html |   2 +-
 .../15.jrs.Swagger/02.jrs.BasicSwaggerInfo.html    |   8 +-
 .../17.jrs.HtmlDocAnnotation.html                  |   4 +-
 .../04.jrs.HtmlUiCustomization.html                |   2 +-
 .../05.jrs.HtmlStylesheets.html                    |   4 +-
 .../24.jrs.ResponseProcessors.html                 |   2 +-
 .../01.jrss.Overview.html                          |   4 +-
 .../09.jrc.Proxies/02.jrc.RemoteMethod.html        |  12 +
 .../09.jrc.Proxies/08.jrc.Request.html             |   8 +-
 .../10.jrc.DualPurposeInterfaces.html              |   2 +-
 .../03.jmj.ResourceClasses.html                    |   4 +-
 .../05.jmj.Config.html                             |   4 +-
 .../01.mjm.Installing.html                         |   2 +-
 .../01.msm.Installing.html                         |   2 +-
 .../04.jp.juneau-petstore-server.html              |   4 +-
 juneau-doc/src/main/javadoc/overview.html          | 246 +++++++++------------
 .../rest/springboot/HelloWorldResource.java        |   3 +-
 .../examples/rest/springboot/RootResources.java    |   3 +-
 .../juneau/examples/rest/HelloWorldResource.java   |   3 +-
 .../juneau/examples/rest/HtmlBeansResource.java    |   3 +-
 .../juneau/examples/rest/PhotosResource.java       |   3 +-
 .../juneau/examples/rest/RequestEchoResource.java  |   3 +-
 .../juneau/examples/rest/UtilityBeansResource.java |   3 +-
 .../microservice/resources/ConfigResource.java     |   3 +-
 .../microservice/resources/DirectoryResource.java  |   3 +-
 .../microservice/resources/LogsResource.java       |   3 +-
 .../microservice/resources/SampleRootResource.java |   3 +-
 .../microservice/resources/ShutdownResource.java   |   3 +-
 .../apache/juneau/rest/test/ConfigResource.java    |   3 +-
 .../java/org/apache/juneau/rest/test/Root.java     |   3 +-
 .../springboot/template/HelloWorldResource.java    |   3 +-
 .../springboot/template/RootResources.java         |   3 +-
 .../org/apache/juneau/rest/mock/MockConsole.java   |   2 +-
 .../rest/springboot/BasicSpringRestServlet.java    |   7 +-
 .../springboot/BasicSpringRestServletGroup.java    |   5 +-
 .../java/org/apache/juneau/rest/RestContext.java   |   2 +-
 .../java/org/apache/juneau/rest/RestOpContext.java |   4 +-
 .../org/apache/juneau/rest/annotation/Rest.java    |   8 +-
 .../apache/juneau/rest/annotation/RestDelete.java  |   4 +-
 .../apache/juneau/rest/annotation/RestEndCall.java |   2 +-
 .../org/apache/juneau/rest/annotation/RestGet.java |   4 +-
 .../apache/juneau/rest/annotation/RestInject.java  |   2 +-
 .../org/apache/juneau/rest/annotation/RestOp.java  |   4 +-
 .../apache/juneau/rest/annotation/RestOptions.java |   4 +-
 .../apache/juneau/rest/annotation/RestPatch.java   |   4 +-
 .../apache/juneau/rest/annotation/RestPost.java    |   4 +-
 .../juneau/rest/annotation/RestPostCall.java       |   2 +-
 .../apache/juneau/rest/annotation/RestPreCall.java |   2 +-
 .../org/apache/juneau/rest/annotation/RestPut.java |   4 +-
 .../juneau/rest/annotation/RestStartCall.java      |   2 +-
 .../org/apache/juneau/rest/beans/Hyperlink.java    |   2 +-
 .../juneau/rest/converter/RestConverter.java       |   2 +-
 .../org/apache/juneau/rest/guard/RestGuard.java    |   2 +-
 .../apache/juneau/rest/matcher/RestMatcher.java    |   2 +-
 .../juneau/rest/processor/ResponseProcessor.java   |   2 +-
 .../juneau/rest/servlet/BasicRestObject.java       |   7 +-
 .../juneau/rest/servlet/BasicRestObjectGroup.java  |   5 +-
 .../juneau/rest/servlet/BasicRestServlet.java      |   7 +-
 .../juneau/rest/servlet/BasicRestServletGroup.java |   5 +-
 .../apache/juneau/rest/servlet/RestServlet.java    |   6 +-
 .../rest/annotation/RestOp_BeanConfig_Test.java    |  15 +-
 .../rest/client/RestClient_BasicCalls_Test.java    |   3 +-
 .../client/RestClient_Config_OpenApi_Test.java     |   3 +-
 .../rest/client/RestClient_Headers_Test.java       |   3 +-
 .../rest/client/RestClient_Marshalls_Test.java     |   3 +-
 .../apache/juneau/rest/helper/Hyperlink_Test.java  |   3 +-
 94 files changed, 339 insertions(+), 454 deletions(-)

diff --git 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/package.html
 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/package.html
index 5a86003d3..2e79af7ca 100644
--- 
a/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/package.html
+++ 
b/juneau-core/juneau-dto/src/main/java/org/apache/juneau/dto/jsonschema/package.html
@@ -404,7 +404,7 @@
                        <js>"options: ?method=OPTIONS"</js>
                }
        )
-       <jk>public class</jk> JsonSchemaResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+       <jk>public class</jk> JsonSchemaResource <jk>extends</jk> 
BasicRestServlet {
        
                <jk>private</jk> JsonSchema <jf>schema</jf>;     <jc>// The 
schema document</jc>
                
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
index 30d9fea11..cccf42e3c 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/HtmlDocSerializer.java
@@ -59,7 +59,7 @@ import org.apache.juneau.xml.*;
  *                     <js>"doc: doc"</js>
  *             }
  *     )
- *     <jk>public class</jk> AddressBookResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> AddressBookResource <jk>extends</jk> 
BasicRestServlet {
  * </p>
  *
  * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
index 6365c46e6..24e806a64 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/html/annotation/HtmlDocConfig.java
@@ -348,7 +348,7 @@ public @interface HtmlDocConfig {
         *                      <js>"doc: doc"</js>
         *              }
         *      )
-        *      <jk>public class</jk> AddressBookResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> AddressBookResource <jk>extends</jk> 
BasicRestServlet {
         * </p>
         *
         * <ul class='notes'>
diff --git a/juneau-doc/docs/ReleaseNotes/9.0.0.html 
b/juneau-doc/docs/ReleaseNotes/9.0.0.html
index 215bb60ee..e8d49baf8 100644
--- a/juneau-doc/docs/ReleaseNotes/9.0.0.html
+++ b/juneau-doc/docs/ReleaseNotes/9.0.0.html
@@ -79,14 +79,13 @@
                        processors, serializers/parsers, JSON schema 
generators, statistics gathering stores, and default request attributes/headers 
and response
                        headers.
                <li>
-                       Defining REST resources with predefined marshalling 
support is now much simpler.  You now extend from a basic REST servlet/object
-                       class and then include an interface with predefined 
common annotations.
+                       Defining REST resources with predefined marshalling 
support is now much simpler.  You now extend from a basic REST servlet/object.
                        <p class='bcode'>
                                |       <jc>// A root resource that supports 
JSON/HTML marshalling.</jc>
-                               |       <jk>public class</jk> MyRootResources 
<jk>extends</jk> BasicRestServletGroup <jk>implements</jk> BasicJsonHtmlConfig 
{ ... }
+                               |       <jk>public class</jk> MyRootResources 
<jk>extends</jk> BasicRestServletGroup  { ... }
                                |       
                                |       <jc>// A child resource that supports 
all available marshalling.</jc>
-                               |       <jk>public class</jk> MyChildResource 
<jk>extends</jk> BasicRestObject <jk>implements</jk> BasicUniversalConfig { ... 
}
+                               |       <jk>public class</jk> MyChildResource 
<jk>extends</jk> BasicRestObject { ... }
                        </p>
                        REST servlets/objects are in the {@link oajr.servlet} 
package and REST configs are in the {@link oajr.config} package.
                <li>
diff --git a/juneau-doc/docs/Topics/01.Overview.html 
b/juneau-doc/docs/Topics/01.Overview.html
index 756433ca3..889c00b52 100644
--- a/juneau-doc/docs/Topics/01.Overview.html
+++ b/juneau-doc/docs/Topics/01.Overview.html
@@ -19,9 +19,7 @@
 <div class='topic'>
        <p>
                Apache Juneau™ is a single cohesive Java ecosystem for 
marshalling Java objects to a wide variety of 
-               language types and creating annotation-based REST end-to-end 
server and client APIs.  The modules
-               have as few prereqs as possible making them ideal for usage in 
uber-jars.  All modules work with
-               Java 8 through 18.  
+               language types and creating annotation-based REST end-to-end 
server and client APIs.  
        </p>
        
        <p>
@@ -287,5 +285,7 @@
                <li>
                        Built on top of Servlet and Apache HttpClient APIs that 
allow you to use the newest HTTP/2 features
                        such as request/response multiplexing and server push.
+               <li>
+                       All modules work with Java 8 through at least 18.
        </ul>
 </div>
\ No newline at end of file
diff --git a/juneau-doc/docs/Topics/01.Overview/03.o.RestServer.html 
b/juneau-doc/docs/Topics/01.Overview/03.o.RestServer.html
index 6980b4189..6d001987c 100644
--- a/juneau-doc/docs/Topics/01.Overview/03.o.RestServer.html
+++ b/juneau-doc/docs/Topics/01.Overview/03.o.RestServer.html
@@ -42,7 +42,7 @@
                |               }
                |       )
                |       <ja>@BeanConfig</ja>(sortProperties=<js>"true"</js>)
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniveralConfig {
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet {
                |       
                |               <ja>@RestGet</ja>(path=<js>"/*"</js>, 
summary=<js>"Responds with \"Hello world!\""</js>)
                |               <jk>public</jk> String sayHello() {
@@ -84,7 +84,7 @@
                |                       MyChildResource.<jk>class</jk>
                |               }
                |       )
-               |       <jk>public</jk> MyParentResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public</jk> MyParentResource <jk>extends</jk> 
BasicRestServlet {...}
        </p>
        <p class='bjava'>
                |       <jd>/** Child Resource */</jd>
@@ -92,7 +92,7 @@
                |               path=<js>"/child"</js>  <jc>// Path relative to 
parent resource.</jc>
                |       )
                |       <jc>// Note that we don't need to extend from 
RestServlet.</jc>
-               |       <jk>public</jk> MyChildResource <jk>implements</jk> 
BasicUniversalConfig {
+               |       <jk>public</jk> MyChildResource <jk>implements</jk> 
BasicRestObject {
                |               ...
                |       } 
        </p>
@@ -341,7 +341,7 @@
                |                       ShutdownResource.<jk>class</jk>
                |               }
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup {
                |               <jc>// NO CODE!!!</jc>
                |       }
        </p>
@@ -502,7 +502,7 @@
                |                       HelloWorldResource.<jk>class</jk>
                |               }
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicSpringRestServletGroup <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicSpringRestServletGroup {
                |               <jc>// No code!</jc>
                |       }
        </p>
diff --git a/juneau-doc/docs/Topics/01.Overview/04.o.RestClient.html 
b/juneau-doc/docs/Topics/01.Overview/04.o.RestClient.html
index 0cab8e24c..303efb91b 100644
--- a/juneau-doc/docs/Topics/01.Overview/04.o.RestClient.html
+++ b/juneau-doc/docs/Topics/01.Overview/04.o.RestClient.html
@@ -54,7 +54,7 @@
                |               <jc>// Our REST resource to test.</jc>
                |               <jc>// Simply echos the response.</jc>
                |               <ja>@Rest</ja>
-               |               <jk>public static class</jk> EchoRest 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicJsonConfig {
+               |               <jk>public static class</jk> EchoRest 
<jk>extends</jk> BasicRestServlet {
                |
                |                       <ja>@RestPut</ja>
                |                       <jk>public</jk> MyBean 
echo(<ja>@Content</ja> MyBean <jv>bean</jv>) {
diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/07.jm.ContextAnnotations.html 
b/juneau-doc/docs/Topics/02.juneau-marshall/07.jm.ContextAnnotations.html
index a7d7341e4..3d8959a68 100644
--- a/juneau-doc/docs/Topics/02.juneau-marshall/07.jm.ContextAnnotations.html
+++ b/juneau-doc/docs/Topics/02.juneau-marshall/07.jm.ContextAnnotations.html
@@ -34,7 +34,7 @@
                |       <ja>@RdfConfig</ja>(rdfxml_tab=<js>"5"</js>, 
addRootProperty=<js>"true"</js>)
                |       <ja>@BeanConfig</ja>(sortProperties=<js>"true"</js>, 
examples=<js>"Feed: $F{AddressBook_example.json}"</js>)
                |       <ja>@Bean</ja>(onClass=Address.<jk>class</jk>, 
properties=<js>"street,city,state"</js>)
-               |       <jk>public class</jk> AddressBookResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> AddressBookResource 
<jk>extends</jk> BasicRestServlet {
                |               ...
                |       }
        </p>
diff --git 
a/juneau-doc/docs/Topics/02.juneau-marshall/27.jm.HtmlDetails/06.jm.HtmlDocSerializer.html
 
b/juneau-doc/docs/Topics/02.juneau-marshall/27.jm.HtmlDetails/06.jm.HtmlDocSerializer.html
index f52547aee..244f94949 100644
--- 
a/juneau-doc/docs/Topics/02.juneau-marshall/27.jm.HtmlDetails/06.jm.HtmlDocSerializer.html
+++ 
b/juneau-doc/docs/Topics/02.juneau-marshall/27.jm.HtmlDetails/06.jm.HtmlDocSerializer.html
@@ -82,7 +82,7 @@
                |                       <js>"&lt;/div&gt;"</js>
                |               }
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet {...}
        </p>
        <p>
                The {@link oaj.html.HtmlDocSerializer.Builder#template(Class)} 
setting defines
diff --git 
a/juneau-doc/docs/Topics/07.juneau-rest-common/01.jrc.org.apache.juneau.http.html
 
b/juneau-doc/docs/Topics/07.juneau-rest-common/01.jrc.org.apache.juneau.http.html
index bc45ea0f4..c0e35bed6 100644
--- 
a/juneau-doc/docs/Topics/07.juneau-rest-common/01.jrc.org.apache.juneau.http.html
+++ 
b/juneau-doc/docs/Topics/07.juneau-rest-common/01.jrc.org.apache.juneau.http.html
@@ -209,7 +209,7 @@
                |       
                |       <ja>@RestDelete</ja>(path=<js>"/{id}"</js>)
                |       <jk>public</jk> HttpResource helloWold(...) {
-               |               <jk>return</jk> 
<jsm>stringResource</jsm>(<js>"Hello!"</js>).contentType(<js>"text/plain"</js>).build();
+               |               <jk>return</jk> 
<jsm>stringResource</jsm>(<js>"Hello!"</js>).contentType(<js>"text/plain"</js>);
                |       }
        </p>
        
@@ -290,8 +290,8 @@
                |       <ja>@RestDelete</ja>(path=<js>"/{id}"</js>)
                |       <jk>public</jk> Ok doDelete(...) <jk>throws</jk> 
Unauthorized {
                |               <jk>if</jk> (<jc>/* user not authorized*/</jc>)
-               |                       <jk>throw</jk> 
<jsm>unauthorized</jsm>().build();
-               |               <jk>return</jk> 
<jsm>ok</jsm>().content(<js>"OK"</js>).header(<jsm>contentType</jsm>(<js>"text/plain"</js>)).build();
+               |                       <jk>throw</jk> 
<jsm>unauthorized</jsm>();
+               |               <jk>return</jk> 
<jsm>ok</jsm>().content(<js>"OK"</js>).header(<jsm>contentType</jsm>(<js>"text/plain"</js>));
                |       }
        </p>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/07.juneau-rest-common/03.jrc.org.apache.juneau.http.header.html
 
b/juneau-doc/docs/Topics/07.juneau-rest-common/03.jrc.org.apache.juneau.http.header.html
index a3b29dbdc..e4ea9662b 100644
--- 
a/juneau-doc/docs/Topics/07.juneau-rest-common/03.jrc.org.apache.juneau.http.header.html
+++ 
b/juneau-doc/docs/Topics/07.juneau-rest-common/03.jrc.org.apache.juneau.http.header.html
@@ -115,7 +115,7 @@
        
        <h5 class='topic'>HeaderList</h5>
        <p>
-               The {@link oaj.http.header.HeaderList} class is a thread-safe 
immutable list of HTTP headers.
+               The {@link oaj.http.header.HeaderList} class is a list of HTTP 
headers.
        </p>
 
        <h5 class='figure'>Example</h5>
@@ -124,21 +124,11 @@
                |       HeaderList <jv>headers</jv> = HeaderList
                |               .<jsm>create</jsm>()
                |               
.append(Accept.<jsm>of</jsm>(<js>"text/xml"</js>))
-               |               .append(<js>"Content-Type"</js>, 
()-&gt;<jsm>getDynamicContentTypeFromSomewhere</jsm>())
-               |               .build();
+               |               .append(<js>"Content-Type"</js>, 
()-&gt;<jsm>getDynamicContentTypeFromSomewhere</jsm>());
                |       
                |       <jc>// Construct using convenience creator.</jc>
                |       HeaderList <jv>headers</jv> = 
HeaderList.<jsm>of</jsm>(Accept.<jsf>TEXT_XML</jsf>, 
ContentType.<jsf>TEXT_XML</jsf>);
        </p>
-       <p>
-               Header lists are immutable but can be appended to using the 
{@link oaj.http.header.HeaderList#copy() copy()} method:    
-       </p>
-       <p class='bjava'>
-               |       <jv>headers</jv> = <jv>headers</jv>
-               |               .copy()
-               |               
.append(AcceptEncoding.<jsm>of</jsm>(<js>"identity"</js>))
-               |               .build();
-       </p>
        <p>
                Static methods are provided on {@link oaj.http.HttpHeaders} to 
further simplify creation of header lists.
        </p>
@@ -157,15 +147,13 @@
                |       <jv>headers</jv> = HeaderList
                |               .<jsm>create</jsm>()
                |               .set(Accept.<jsf>TEXT_PLAIN</jsf>)
-               |               .set(Accept.<jsf>TEXT_XML</jsf>)
-               |               .build();
+               |               .set(Accept.<jsf>TEXT_XML</jsf>);
                |       
<jsm>assertObject</jsm>(<jv>headers</jv>).isString(<js>"[Accept: 
text/xml]"</js>);
                |
                |       <jv>headers</jv> = HeaderList
                |               .create()
                |               .set(Accept.<jsf>TEXT_PLAIN</jsf>)
-               |               .setDefault(Accept.<jsf>TEXT_XML</jsf>)
-               |               .build();
+               |               .setDefault(Accept.<jsf>TEXT_XML</jsf>);
                |       
<jsm>assertObject</jsm>(<jv>headers</jv>).isString(<js>"[Accept: 
text/plain]"</js>);
        </p>
 
@@ -190,7 +178,10 @@
        </p>
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
-               |       ContentType <jv>contentType</jv> = 
<jv>headers</jv>.get(ContentType.<jk>class</jk>);
+               |       HeaderList headers = HeaderList.of(Accept.TEXT_JSON, 
Accept.TEXT_XML);
+               |
+               |       <jc>// Returns "text/json, text/xml"</jc>
+               |       Accept <jv>accept</jv> = 
<jv>headers</jv>.get(Accept.<jk>class</jk>);
        </p>
 
        <p>
@@ -213,8 +204,7 @@
                |               .<jsm>create</jsm>()
                |               .resolving()
                |               .append(<js>"X1"</js>, <js>"$S{foo}"</js>)
-               |               .append(<js>"X2"</js>, 
()-&gt;<js>"$S{foo}"</js>)
-               |               .build();
+               |               .append(<js>"X2"</js>, 
()-&gt;<js>"$S{foo}"</js>);
                |
                |       
<jsm>assertObject</jsm>(<jv>headers</jv>).isString(<js>"[X1: bar, X2: 
bar]"</js>);
        </p>
diff --git 
a/juneau-doc/docs/Topics/07.juneau-rest-common/04.jrc.org.apache.juneau.http.part.html
 
b/juneau-doc/docs/Topics/07.juneau-rest-common/04.jrc.org.apache.juneau.http.part.html
index bb9111d75..8a2f2714b 100644
--- 
a/juneau-doc/docs/Topics/07.juneau-rest-common/04.jrc.org.apache.juneau.http.part.html
+++ 
b/juneau-doc/docs/Topics/07.juneau-rest-common/04.jrc.org.apache.juneau.http.part.html
@@ -39,32 +39,21 @@
 
        <h5 class='topic'>PartList</h5>
        <p>
-               The {@link oaj.http.part.PartList} class is a thread-safe 
immutable list of HTTP parts (form-data, query-parameters, path-parameters).
+               The {@link oaj.http.part.PartList} class is a list of HTTP 
parts (form-data, query-parameters, path-parameters).
        </p>
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
                |       PartList <jv>parts</jv> = PartList
                |               .<jsm>create</jsm>()
                |               .append(MyPart.<jsm>of</jsm>(<js>"foo"</js>))
-               |               .append(<js>"Bar"</js>, 
()-&gt;<jsm>getDynamicValueFromSomewhere</jsm>())
-               |               .build();
+               |               .append(<js>"Bar"</js>, 
()-&gt;<jsm>getDynamicValueFromSomewhere</jsm>());
        </p>
 
        <p>
                Convenience creators are provided for creating lists with 
minimal code:
        </p>
        <p class='bjava'>
-               PartList <jv>parts</jv> = 
PartList.<jsm>of</jsm>(BasicIntegerPart.<jsm>of</jsm>(<js>"foo"</js>, 1));
-       </p>
-
-       <p>
-               Part lists are immutable but can be appended to using the 
{@link oaj.http.part.PartList#copy() copy()} method:
-       </p>
-       <p class='bjava'>
-               |       <jv>parts</jv> = <jv>parts</jv>
-               |               .copy()
-               |               
.append(BasicIntegerPart.<jsm>of</jsm>(<js>"foo"</js>, 1))
-               |               .build();
+               |       PartList <jv>parts</jv> = 
PartList.<jsm>of</jsm>(BasicIntegerPart.<jsm>of</jsm>(<js>"foo"</js>, 1));
        </p>
 
        <p>
@@ -87,15 +76,13 @@
                |       <jv>parts</jv> = PartList
                |               .<jsm>create</jsm>()
                |               .set(<js>"Foo"</js>, <js>"bar"</js>)
-               |               .set(<js>"Foo"</js>, <js>"baz"</js>)
-               |               .build();
+               |               .set(<js>"Foo"</js>, <js>"baz"</js>);
                |       
<jsm>assertObject</jsm>(<jv>parts</jv>).isString(<js>"foo=baz"</js>);
                |
                |       <jv>parts</jv> = PartList
                |               .create()
                |               .set(<js>"Foo"</js>, <js>"bar"</js>)
-               |               .setDefault(<js>"Foo"</js>, <js>"baz"</js>)
-               |               .build();
+               |               .setDefault(<js>"Foo"</js>, <js>"baz"</js>);
                |       
<jsm>assertObject</jsm>(<jv>parts</jv>).isString(<js>"foo=bar"</js>);
        </p>
 
@@ -141,8 +128,7 @@
                |               .<jsm>create</jsm>()
                |               .resolving()
                |               .append(<js>"X1"</js>, <js>"$S{foo}"</js>)
-               |               .append(<js>"X2"</js>, 
()-&gt;<js>"$S{foo}"</js>)
-               |               .build();
+               |               .append(<js>"X2"</js>, 
()-&gt;<js>"$S{foo}"</js>);
                |
                |       
<jsm>assertObject</jsm>(<jv>parts</jv>).isString(<js>"X1=bar&amp;X2=bar"</js>);
        </p>
diff --git 
a/juneau-doc/docs/Topics/07.juneau-rest-common/05.jrc.org.apache.juneau.http.entity.html
 
b/juneau-doc/docs/Topics/07.juneau-rest-common/05.jrc.org.apache.juneau.http.entity.html
index eb5068f10..f693a16c1 100644
--- 
a/juneau-doc/docs/Topics/07.juneau-rest-common/05.jrc.org.apache.juneau.http.entity.html
+++ 
b/juneau-doc/docs/Topics/07.juneau-rest-common/05.jrc.org.apache.juneau.http.entity.html
@@ -26,7 +26,7 @@
                        <ul class='javatreec'>
                                <li class='jc'>{@link 
oaj.http.entity.ByteArrayEntity}
                                <li class='jc'>{@link 
oaj.http.entity.FileEntity}
-                               <li class='jc'>{@link 
oaj.http.entity.InputStreamEntity}
+                               <li class='jc'>{@link 
oaj.http.entity.StreamEntity}
                                <li class='jc'>{@link 
oaj.http.entity.ReaderEntity}
                                <li class='jc'>{@link 
oaj.http.entity.SerializedEntity}
                                <li class='jc'>{@link 
oaj.http.entity.StringEntity}
@@ -34,27 +34,6 @@
                </ul>
        </ul>
        
-       <h5 class='topic'>HttpEntityBuilder</h5>
-       <p>
-               HTTP entities are created through builders created in the 
{@link oaj.http.HttpEnties} class or individual <c>create()</c> methods
-               defined in the subclasses above.  The builder contains the 
following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link oaj.http.entity.HttpEntityBuilder}
-               <ul>
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#cached() cached()}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#chunked() chunked()}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#chunked(boolean) chunked(boolean)}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#content(Object) content(Object)}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#content(Supplier) content(Supplier)}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#contentEncoding(ContentEncoding) 
contentEncoding(ContentEncoding)}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#contentEncoding(String) 
contentEncoding(String)}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#contentLength(long) contentLength(long)}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#contentType(ContentType) 
contentType(ContentType)}
-                       <li class='jm'>{@link 
oaj.http.entity.HttpEntityBuilder#contentType(String) contentType(String)}
-               </ul>
-       </ul>
-       
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
                |       <jk>import static</jk> 
org.apache.juneau.http.HttpEntities.*;
@@ -65,10 +44,37 @@
                |       HttpEntity <jv>entity</jv> = ByteArrayEntity
                |               .<jsm>create</jsm>()
                |               .content(<jv>payload</jv>)
-               |               
.contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>)
-               |               .build();
+               |               
.contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
                |
                |       <jc>// Create via HttpEntities.</jc>
-               |       HttpEntity <jv>entity</jv> = 
<jsm>byteArrayEntity</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>).build();
+               |       HttpEntity <jv>entity</jv> = 
<jsm>byteArrayEntity</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
+       </p>
+       
+       <p>
+               HttpEntities can be used by both the server and client side 
APIs described in later sections.
+       </p>
+       <h5 class='figure'>Server-side example:</h5>
+       <p class='bjava'>
+               |       <jc>// REST endpoint that simply echos an HTTP 
entity.</jc>
+               | 
+               |       <ja>@RestPost</ja>(path=<js>"/entity"</js>)
+               |       <jk>public</jk> HttpEntity echoMyEntity(HttpEntity 
<jv>entity</jv>) {
+               |               <jk>return</jk> <jv>entity</jv>;
+               |       }
+       </p>
+       
+       <h5 class='figure'>Client-side example:</h5>
+       <p class='bjava'>
+               |       <jc>// REST client that uses the echo REST endpoint 
above.</jc> 
+               |       
+               |       HttpEntity <jv>entity</jv> = 
<jsm>byteArrayEntity</jsm>(...);
+               |       
+               |       <jv>entity</jv> = RestClient.<jsm>create</jsm>()
+               |               .build()
+               |               .rootUrl(<jsf>URI</jsf>)
+               |               .post(<js>"/entity"</js>, <jv>entity</jv>)
+               |               .run()
+               |               .assertStatus().asCode().is(200)
+               |               
.getContent().as(ByteArrayEntity.<jk>class</jk>);
        </p>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/07.juneau-rest-common/06.jrc.org.apache.juneau.http.resource.html
 
b/juneau-doc/docs/Topics/07.juneau-rest-common/06.jrc.org.apache.juneau.http.resource.html
index 4bf0ccddc..6915462a8 100644
--- 
a/juneau-doc/docs/Topics/07.juneau-rest-common/06.jrc.org.apache.juneau.http.resource.html
+++ 
b/juneau-doc/docs/Topics/07.juneau-rest-common/06.jrc.org.apache.juneau.http.resource.html
@@ -29,44 +29,14 @@
                                <ul class='javatreec'>
                                        <li class='jc'>{@link 
oaj.http.resource.ByteArrayResource}
                                        <li class='jc'>{@link 
oaj.http.resource.FileResource}
-                                       <li class='jc'>{@link 
oaj.http.resource.InputStreamResource}
+                                       <li class='jc'>{@link 
oaj.http.resource.StreamResource}
                                        <li class='jc'>{@link 
oaj.http.resource.ReaderResource}
                                        <li class='jc'>{@link 
oaj.http.resource.StringResource}
                                </ul>
                        </ul>
                </ul>
        </ul>
-       
-       <h5 class='topic'>HttpResourceBuilder</h5>
-       <p>
-               HTTP entities are created through builders created in the 
{@link oaj.http.HttpResources} class or individual <c>create()</c> methods
-               defined in the subclasses above.  The builder contains the 
following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link oaj.http.resource.HttpResourceBuilder}
-               <ul>
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#cached() cached()}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#chunked() chunked()}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#chunked(boolean) chunked(boolean)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#content(Object) content(Object)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#content(Supplier) content(Supplier)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#contentEncoding(ContentEncoding) 
contentEncoding(ContentEncoding)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#contentEncoding(String) 
contentEncoding(String)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#contentLength(long) contentLength(long)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#contentType(ContentType) 
contentType(ContentType)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#contentType(String) contentType(String)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#copyFrom(HttpResponse) 
copyFrom(HttpResponse)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#getEntity() getEntity()}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#getHeaders() getHeaders()}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#header(Header) header(Header)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#header(String,String) 
header(String,String)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#headers(Header...) headers(Header...)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#headers(HeaderList) headers(HeaderList)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#headers(List) headers(List&lt;Header&gt;)}
-                       <li class='jm'>{@link 
oaj.http.resource.HttpResourceBuilder#getHeaders() getHeaders()}
-               </ul>
-       </ul>
-       
+               
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
                |       <jk>import static</jk> 
org.apache.juneau.http.HttpResources.*;
@@ -77,11 +47,38 @@
                |       HttpResource <jv>resource</jv> = ByteArrayResource
                |               .<jsm>create</jsm>()
                |               .content(<jv>payload</jv>)
-               |               
.contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>)
-               |               .build();
+               |               
.contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
                |
                |       <jc>// Create via HttpResources.</jc>
-               |       HttpResource <jv>resource</jv> = 
<jsm>byteArrayResource</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>).build();
+               |       HttpResource <jv>resource</jv> = 
<jsm>byteArrayResource</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
+       </p>
+
+       <p>
+               HttpResources can be used by both the server and client side 
APIs described in later sections.
+       </p>
+       <h5 class='figure'>Server-side example:</h5>
+       <p class='bjava'>
+               |       <jc>// REST endpoint that simply echos an HTTP 
resource.</jc>
+               | 
+               |       <ja>@RestPost</ja>(path=<js>"/resource"</js>)
+               |       <jk>public</jk> HttpResource echoMyEntity(HttpResource 
<jv>resource</jv>) {
+               |               <jk>return</jk> <jv>resource</jv>;
+               |       }
+       </p>
+       
+       <h5 class='figure'>Client-side example:</h5>
+       <p class='bjava'>
+               |       <jc>// REST client that uses the echo REST endpoint 
above.</jc> 
+               |       
+               |       HttpEntity <jv>resource</jv> = 
<jsm>byteArrayResource</jsm>(...);
+               |       
+               |       <jv>resource</jv> = RestClient.<jsm>create</jsm>()
+               |               .build()
+               |               .rootUrl(<jsf>URI</jsf>)
+               |               .post(<js>"/resource"</js>, <jv>resource</jv>)
+               |               .run()
+               |               .assertStatus().asCode().is(200)
+               |               
.getContent().as(ByteArrayResource.<jk>class</jk>);
        </p>
        
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/07.juneau-rest-common/07.jrc.org.apache.juneau.http.response.html
 
b/juneau-doc/docs/Topics/07.juneau-rest-common/07.jrc.org.apache.juneau.http.response.html
index b337a63fb..f597e23f8 100644
--- 
a/juneau-doc/docs/Topics/07.juneau-rest-common/07.jrc.org.apache.juneau.http.response.html
+++ 
b/juneau-doc/docs/Topics/07.juneau-rest-common/07.jrc.org.apache.juneau.http.response.html
@@ -94,6 +94,7 @@
        
        <p>
                The most common location where these responses are used are in 
REST operation methods described later.
+       </p>
        <h5 class='figure'>Example:</h5>
        <p class='bjava'>
                |       <ja>@RestDelete</ja>(path=<js>"/{id}"</js>)
@@ -109,38 +110,5 @@
        <ul class='javatreec'>
                <li class='jc'>{@link oaj.http.response.BasicHttpException}
                <li class='jc'>{@link oaj.http.response.BasicHttpResponse}
-               <li class='jc'>{@link oaj.http.response.HttpExceptionBuilder}
-               <li class='jc'>{@link oaj.http.response.HttpResponseBuilder}
-       </ul>
-       
-       <h5 class='topic'>HttpResponseBuilder / HttpExceptionBuilder</h5>
-       <p>
-               HTTP responses are created through builders created in the 
{@link oaj.http.HttpResponses} class or individual <c>create()</c> methods
-               defined in the basic classes above.  The builder contains the 
following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link oaj.http.response.HttpResponseBuilder}
-               <ul>
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#content(HttpEntity) content(HttpEntity)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#content(String) content(String)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#copyFrom(HttpResponse) 
copyFrom(HttpResponse)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#getHeaders() getHeaders()}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#getStatusLine() getStatusLine()}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#header(Header) header(Header)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#header(String,String) 
header(String,String)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#headers(Header...) headers(Header...)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#headers(HeaderList) headers(HeaderList)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#headers(List) headers(List&lt;Header&gt;)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#locale(Locale) locale(Locale)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#location(String) location(String)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#location(URI) location(URI)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#protocolVersion(ProtocolVersion) 
protocolVersion(ProtocolVersion)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#reasonPhrase(String) reasonPhrase(String)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#reasonPhraseCatalog(ReasonPhraseCatalog) 
reasonPhraseCatalog(ReasonPhraseCatalog)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#statusCode(int) statusCode(int)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#statusLine(BasicStatusLine) 
statusLine(BasicStatusLine)}
-                       <li class='jm'>{@link 
oaj.http.response.HttpResponseBuilder#unmodifiable() unmodifiable()}
-               </ul>
-       </ul>
-       
+       </ul>   
 </div>
\ No newline at end of file
diff --git a/juneau-doc/docs/Topics/08.juneau-rest-server/01.jrs.Overview.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/01.jrs.Overview.html
index ae84baae5..6938752ad 100644
--- a/juneau-doc/docs/Topics/08.juneau-rest-server/01.jrs.Overview.html
+++ b/juneau-doc/docs/Topics/08.juneau-rest-server/01.jrs.Overview.html
@@ -95,10 +95,7 @@
                |               // You can apply any of the 
Serializer/Parser/BeanContext settings this way.</jc>
                |               quoteChar=<js>"'"</js>
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup <jk>implements</jk> BasicUniversalJenaConfig {
-               |               <jc>// IMPORTANT!  If you don't need RDF 
support, change the parent interface to BasicUniversalConfig.
-               |               // It allows you to remove the Jena 
prerequisite.</jc>
-               |       
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup {
                |               <jk>private static final long</jk> 
<jsf>serialVersionUID</jsf> = 1L;
                |       }       
        </p>
@@ -130,7 +127,7 @@
                |                       <js>"&lt;/div&gt;"</js>
                |               }
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestObject <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestObject {
                |       
                |               <ja>@RestGet</ja>(path=<js>"/*"</js>, 
summary=<js>"Responds with \"Hello world!\""</js>)
                |               <jk>public</jk> String sayHello() {
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/01.jrs.PredefinedClasses.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/01.jrs.PredefinedClasses.html
index f58cc450e..fc4858d0c 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/01.jrs.PredefinedClasses.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/01.jrs.PredefinedClasses.html
@@ -49,14 +49,14 @@
                        <ul>
                                <li class='jac'>{@link oajr.servlet.RestServlet}
                                        <ul>
-                                               <li class='jac'>{@link 
oajr.servlet.BasicRestServlet} <jk>implements</jk> {@link 
oajr.servlet.BasicRestOperations}, {@link oajr.config.BasicJsonConfig}
+                                               <li class='jac'>{@link 
oajr.servlet.BasicRestServlet} <jk>implements</jk> {@link 
oajr.servlet.BasicRestOperations}, {@link oajr.config.BasicUniversalConfig}
                                                        <ul>
                                                                <li 
class='jac'>{@link oajr.servlet.BasicRestServletGroup} <jk>implements</jk> 
{@link oajr.servlet.BasicGroupOperations}
                                                        </ul>
                                                </li>
                                                <li class='jac'>{@link 
oajr.springboot.SpringRestServlet}
                                                        <ul>
-                                                               <li 
class='jac'>{@link oajr.springboot.BasicSpringRestServlet} <jk>implements</jk> 
{@link oajr.servlet.BasicRestOperations}, {@link oajr.config.BasicJsonConfig}
+                                                               <li 
class='jac'>{@link oajr.springboot.BasicSpringRestServlet} <jk>implements</jk> 
{@link oajr.servlet.BasicRestOperations}, {@link 
oajr.config.BasicUniversalConfig}
                                                                        <ul>
                                                                                
<li class='jac'>{@link oajr.springboot.BasicSpringRestServletGroup} 
<jk>implements</jk> {@link oajr.servlet.BasicGroupOperations}
                                                                        </ul>
@@ -160,7 +160,7 @@
        </p>
        <p class='bjava'>
                |       <ja>@Rest</ja>(...)
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
RestServlet <jk>implements</jk> BasicUniversalConfig {
                |               ...
                |       }
        </p>
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/02.jrs.ChildResources.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/02.jrs.ChildResources.html
index c09b8a445..2c0745ff6 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/02.jrs.ChildResources.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/02.jrs.ChildResources.html
@@ -27,7 +27,7 @@
                |               path=<js>"/parent"</js>,
                |               children={MyChildResource.<jk>class</jk>}
                |       )
-               |       <jk>public</jk> MyRootResources <jk>extends</jk> 
BasicRestServletGroup <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public</jk> MyRootResources <jk>extends</jk> 
BasicRestServletGroup {...}
        </p>
        <p class='bjava'>
                |       <jd>/** Child Resource */</jd>
@@ -35,7 +35,7 @@
                |               path=<js>"/child"</js>  <jc>// Path relative to 
parent resource.</jc>
                |       )
                |       <jc>// Note that we don't need to extend from 
RestServlet.</jc>
-               |       <jk>public</jk> MyChildResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> BasicUniversalConfig {...} 
+               |       <jk>public</jk> MyChildResource <jk>extends</jk> 
BasicRestObject {...} 
        </p>
        <p>
                The path of the child resource gets appended to the path of the 
parent resource. 
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/03.jrs.PathVariables.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/03.jrs.PathVariables.html
index 513ab38ff..ee6aa0dec 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/03.jrs.PathVariables.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/03.jrs.PathVariables.html
@@ -25,7 +25,7 @@
                |       <ja>@Rest</ja>(
                |               path=<js>"/myResource/{foo}/{bar}"</js>
                |       )
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
                |
                |               <ja>@RestPost</ja>(<js>"/{baz}"</js>)
                |               <jk>public void</jk> String doX(<ja>@Path</ja> 
String <jv>foo</jv>, <ja>@Path</ja> <jk>int</jk> <jv>bar</jv>) {
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/05.jrs.LifecycleHooks.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/05.jrs.LifecycleHooks.html
index beaf8c43f..a61f87fb2 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/05.jrs.LifecycleHooks.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/02.jrs.AnnotatedClasses/05.jrs.LifecycleHooks.html
@@ -24,7 +24,7 @@
        </p>
        <p class='bjava'>
                |       <ja>@Rest</ja>(...)
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject {
                |
                |               <jc>// Our database.</jc>
                |               <jk>private</jk> Map&lt;Integer,Object&gt; 
<jf>myDatabase</jf>;
@@ -40,7 +40,7 @@
        </p>
        <p class='bjava'>
                |       <ja>@Rest</ja>(...)
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject {
                |
                |               <jc>// Add a request attribute to all incoming 
requests.</jc>
                |               <ja>@RestPreCall</ja>
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/02.jrs.JavaMethodParameters.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/02.jrs.JavaMethodParameters.html
index ec2e3c0d3..4a7779a66 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/02.jrs.JavaMethodParameters.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/02.jrs.JavaMethodParameters.html
@@ -189,7 +189,7 @@
                |       <ja>@Rest</ja>(
                |               restOpArgs={ MyOpArg.<jk>class</jk> }  <jc>// 
Option #1 - Via annotation</jc>
                |       )
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject {
                |       
                |               // Option #2 - Programmatically
                |               <ja>@RestInit</ja>
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/03.jrs.JavaMethodReturnTypes.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/03.jrs.JavaMethodReturnTypes.html
index 491624ad4..bedab6410 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/03.jrs.JavaMethodReturnTypes.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/03.jrs.RestOpAnnotatedMethods/03.jrs.JavaMethodReturnTypes.html
@@ -156,7 +156,7 @@
                |       <ja>@Rest</ja>(
                |               responseProcessors={ 
MyResponseProcessor.<jk>class</jk> }  <jc>// Option #1 - Via annotation</jc>
                |       )
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject {
                |       
                |               // Option #2 - Programmatically
                |               <ja>@RestInit</ja>
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/04.jrs.HttpParts/03.jrs.DefaultParts.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/04.jrs.HttpParts/03.jrs.DefaultParts.html
index 6225b6f90..5aac016a7 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/04.jrs.HttpParts/03.jrs.DefaultParts.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/04.jrs.HttpParts/03.jrs.DefaultParts.html
@@ -101,7 +101,7 @@
                |               <jc>// Add a version header attribute to all 
responses</jc>
                |               defaultResponseHeaders={<js>"X-Version: 
1.0"</js>}
                |       )
-               |       <jk>public</jk> MyRestServlet <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public</jk> MyRestServlet <jk>extends</jk> 
BasicRestServlet {
                |               ...
                |       }                       
        </p>
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/05.jrs.Marshalling.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/05.jrs.Marshalling.html
index 9001c3427..b087c61f2 100644
--- a/juneau-doc/docs/Topics/08.juneau-rest-server/05.jrs.Marshalling.html
+++ b/juneau-doc/docs/Topics/08.juneau-rest-server/05.jrs.Marshalling.html
@@ -113,7 +113,7 @@
                |       <ja>@BeanConfig</ja>(sortProperties=<js>"true"</js>)
                |       <ja>@SerializerConfig</ja>(trimNulls=<js>"true"</js>)
                |       <ja>@JsonConfig</ja>(escapeSolidus=<js>"true"</js>)
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
                |               
                |               <ja>@RestPost</ja>
                |               
<ja>@BeanConfig</ja>(sortProperties=<js>"false"</js>)
@@ -146,7 +146,7 @@
                |                       MyInterface.<jk>class</jk>
                |               }
                |       )
-               |       <jk>public</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public</jk> MyResource <jk>extends</jk> 
BasicRestServlet {...}
        </p>
        <p>
                Config annotations are defined for all serializers and parsers:
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/06.jrs.HandlingFormPosts.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/06.jrs.HandlingFormPosts.html
index 89b21b66e..c4d2ab504 100644
--- a/juneau-doc/docs/Topics/08.juneau-rest-server/06.jrs.HandlingFormPosts.html
+++ b/juneau-doc/docs/Topics/08.juneau-rest-server/06.jrs.HandlingFormPosts.html
@@ -39,7 +39,7 @@
        </p>
        <p class='bjava'>                               
                |       <ja>@Rest</ja>(...)
-               |       <jk>public class</jk> MyRestResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyRestResource <jk>extends</jk> 
BasicRestServlet {
                |       
                |               <jc>// Our form input endpoint.</jc>
                |               <ja>@RestPost</ja>(<js>"/"</js>)
diff --git a/juneau-doc/docs/Topics/08.juneau-rest-server/07.jrs.Guards.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/07.jrs.Guards.html
index f74ac11ed..7ee56bf5f 100644
--- a/juneau-doc/docs/Topics/08.juneau-rest-server/07.jrs.Guards.html
+++ b/juneau-doc/docs/Topics/08.juneau-rest-server/07.jrs.Guards.html
@@ -51,7 +51,7 @@
                |
                |       <jc>// Servlet with class-level guard applied</jc>
                |       <ja>@Rest</ja>(guards=BillyGuard.<jk>class</jk>)
-               |       <jk>public</jk> MyRestServlet <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public</jk> MyRestServlet <jk>extends</jk> 
BasicRestServlet {
                |
                |               <jc>// Delete method that only Billy is allowed 
to call.</jc>
                |               <ja>@RestDelete</ja>
@@ -114,7 +114,7 @@
        |               path=<js>"/foo"</js>,
        |               roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
        |       )
-       |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+       |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
        |               ...
        |       }
        </p>
diff --git a/juneau-doc/docs/Topics/08.juneau-rest-server/10.jrs.Encoders.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/10.jrs.Encoders.html
index 817eeb4d0..323e9e94c 100644
--- a/juneau-doc/docs/Topics/08.juneau-rest-server/10.jrs.Encoders.html
+++ b/juneau-doc/docs/Topics/08.juneau-rest-server/10.jrs.Encoders.html
@@ -27,7 +27,7 @@
        <p class='bjava'>
                |       <jc>// Servlet with automated support for GZIP 
compression</jc>
                |       <ja>@Rest</ja>(encoders={GzipEncoder.<jk>class</jk>})
-               |       <jk>public</jk> MyRestServlet <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public</jk> MyRestServlet <jk>extends</jk> 
BasicRestServlet {
                |               ...
                |       }
        </p>
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/11.jrs.ConfigurationFiles.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/11.jrs.ConfigurationFiles.html
index ce900e871..efaf45246 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/11.jrs.ConfigurationFiles.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/11.jrs.ConfigurationFiles.html
@@ -146,7 +146,7 @@
                |               config=<js>"config_dir/myconfig.cfg"</js>,
                |               ...
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet {
                |               
                |               <jd>/** 
                |                * GET request handler.
@@ -183,7 +183,7 @@
                |               config=<js>"config_dir/myconfig.cfg"</js>,
                |               ...
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet {
                |               
                |               <jd>/** 
                |                * GET request handler.
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/12.jrs.SvlVariables.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/12.jrs.SvlVariables.html
index 70c8c4542..42a5b49ad 100644
--- a/juneau-doc/docs/Topics/08.juneau-rest-server/12.jrs.SvlVariables.html
+++ b/juneau-doc/docs/Topics/08.juneau-rest-server/12.jrs.SvlVariables.html
@@ -275,7 +275,7 @@
                |
                |       <jc>// Register it with our resource.</jc>
                |       <ja>@Rest</ja>(...)
-               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestObject {
                |       
                |               <ja>@RestInit</ja>
                |               <jk>public void</jk> init(RestContext.Builder 
<jv>builder</jv>) {
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/15.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/15.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
index 9427802aa..71050c647 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/15.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/15.jrs.Swagger/02.jrs.BasicSwaggerInfo.html
@@ -35,7 +35,7 @@
                |               
swagger=<ja>@Swagger</ja>(<js>"$F{PetStoreResource.json}"</js>),
                |               ...
                |       )
-               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet {...}
        </p>
        <p>
                In this particular case, the Swagger is pulled in from a 
localized Swagger JSON file located in the 
@@ -91,7 +91,7 @@
                |               ),
                |               ...
                |       )
-               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet {...}
        </p>
        <p>
                However, a more typical (and less error-prone) scenario is to 
define all of your Swagger as annotations:
@@ -121,7 +121,7 @@
                |               ),
                |               ...
                |       )
-               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet {...}
        </p>
        <p>
                All annotations support {@doc jrs.SvlVariables SVL variables}, 
so you could for example
@@ -153,7 +153,7 @@
                |               ),
                |               ...
                |       )
-               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet {...}
        </p>
        <p>
                A third option is to define your Swagger information in your 
{@link oajr.annotation.Rest#messages @Rest(messages)} resource
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation.html
index 5654edd89..8db77b64b 100644
--- a/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation.html
+++ b/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation.html
@@ -113,7 +113,7 @@
                |                       <js>"&lt;/div&gt;"</js>
                |               }
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet {...}
        </p>
        <p>
                SVL variables can be used in any of these annotations:
@@ -139,6 +139,6 @@
                |                       <js>"&lt;/div&gt;"</js>
                |               }
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet {...}
        </p>
 </div>
\ No newline at end of file
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
index edc80d267..a0cdf9306 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/04.jrs.HtmlUiCustomization.html
@@ -95,7 +95,7 @@
                |               },
                |               asideFloat=<js>"RIGHT"</js>
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup <jk>implements</jk> BasicUniversalJenaConfig {...}
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup {...}
        </p>
        
        <p>
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
 
b/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
index cbc27564d..b2ce8aa28 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/17.jrs.HtmlDocAnnotation/05.jrs.HtmlStylesheets.html
@@ -63,7 +63,7 @@
                |       <ja>@HtmlDocConfig</ja>(
                |               
stylesheet=<js>"servlet:/htdocs/themes/my-style.css"</js>
                |       )
-               |       <jk>public class</jk> MyResourceBaseClass 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> MyResourceBaseClass 
<jk>extends</jk> BasicRestServlet {...}
        </p>
        <p>
                You can try out different stylesheets by passing in a 
<c>stylesheet</c> attribute in the request
@@ -88,7 +88,7 @@
                |                       <js>"source: 
$C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"</js>
                |               }
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup <jk>implements</jk> BasicUniversalConfig {...}
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup {...}
        </p>
        <p>
                The <c>StyleMenuItem</c> is a widget that extends from {@link 
oajr.widget.MenuItemWidget}, a
diff --git 
a/juneau-doc/docs/Topics/08.juneau-rest-server/24.jrs.ResponseProcessors.html 
b/juneau-doc/docs/Topics/08.juneau-rest-server/24.jrs.ResponseProcessors.html
index 456d02c09..b89ff6f2e 100644
--- 
a/juneau-doc/docs/Topics/08.juneau-rest-server/24.jrs.ResponseProcessors.html
+++ 
b/juneau-doc/docs/Topics/08.juneau-rest-server/24.jrs.ResponseProcessors.html
@@ -55,7 +55,7 @@
                        path=<js>"/example"</js>,
                        responseProcessors=FooProcessor.<jk>class</jk>
                )
-               <jk>public class</jk> Example <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+               <jk>public class</jk> Example <jk>extends</jk> BasicRestServlet 
{
 
                        <ja>@RestGet</ja>(<js>"/"</js>)
                        <jk>public</jk> Foo test1() {
diff --git 
a/juneau-doc/docs/Topics/11.juneau-rest-server-springboot/01.jrss.Overview.html 
b/juneau-doc/docs/Topics/11.juneau-rest-server-springboot/01.jrss.Overview.html
index 1c1582732..7510800ae 100644
--- 
a/juneau-doc/docs/Topics/11.juneau-rest-server-springboot/01.jrss.Overview.html
+++ 
b/juneau-doc/docs/Topics/11.juneau-rest-server-springboot/01.jrss.Overview.html
@@ -115,7 +115,7 @@
                |       <ja>@SerializerConfig</ja>(
                |               quoteChar=<js>"'"</js>
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicSpringRestServletGroup <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicSpringRestServletGroup {
                |               <jk>private static final long</jk> 
<jsf>serialVersionUID</jsf> = 1L;
                |       }
        </p>    
@@ -144,7 +144,7 @@
                |                       <js>"&lt;/div&gt;"</js>
                |               }
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestObject <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestObject {
                |       
                |               <ja>@Autowired</ja>
                |               <jk>private</jk> HelloWorldMessageProvider 
<jf>messageProvider</jf>;
diff --git 
a/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/02.jrc.RemoteMethod.html
 
b/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/02.jrc.RemoteMethod.html
index 44b52cf53..ff612fbe1 100644
--- 
a/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/02.jrc.RemoteMethod.html
+++ 
b/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/02.jrc.RemoteMethod.html
@@ -29,6 +29,18 @@
                        </ul>
                </li>
        </ul>
+
+       <p>
+               Specialized sub-annotations are provided for common HTTP 
methods:
+       </p>
+       <ul class='javatreec'>
+               <li class='ja'>{@link oaj.http.remote.RemoteGet}
+               <li class='ja'>{@link oaj.http.remote.RemotePost}
+               <li class='ja'>{@link oaj.http.remote.RemotePut}
+               <li class='ja'>{@link oaj.http.remote.RemotePatch}
+               <li class='ja'>{@link oaj.http.remote.RemoteDelete}
+       </ul>
+
        <h5 class='topic'>@RemoteOp(method/path)</h5>
        <p>
                The HTTP method and path are mapped to a Java method using the 
<c>method</c> and <c>path</c> annotations.
diff --git 
a/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/08.jrc.Request.html
 
b/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/08.jrc.Request.html
index 23b2a324c..12b972f38 100644
--- 
a/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/08.jrc.Request.html
+++ 
b/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/08.jrc.Request.html
@@ -65,10 +65,10 @@
                |       }
        </p>
        <p class='bjava'>
-               PetStore <jv>store</jv> = 
<jv>client</jv>.getRemote(PetStore.<jk>class</jk>, 
<js>"http://localhost:10000";</js>);
-               
-               CreatePetRequest <jv>requestBean</jv> = <jk>new</jk> 
CreatePetRequest(<js>"Fluffy"</js>, 9.99);
-               String <jv>response</jv> = <jv>store</jv>.postPet(requestBean);
+               |       PetStore <jv>store</jv> = 
<jv>client</jv>.getRemote(PetStore.<jk>class</jk>, 
<js>"http://localhost:10000";</js>);
+               |       
+               |       CreatePetRequest <jv>requestBean</jv> = <jk>new</jk> 
CreatePetRequest(<js>"Fluffy"</js>, 9.99);
+               |       String <jv>response</jv> = 
<jv>store</jv>.postPet(requestBean);
        </p>
        <p>
                The <ja>@Request</ja> annotation can be applied to either the 
class or argument.
diff --git 
a/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/10.jrc.DualPurposeInterfaces.html
 
b/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/10.jrc.DualPurposeInterfaces.html
index 2b5bb7098..9193d1b21 100644
--- 
a/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/10.jrc.DualPurposeInterfaces.html
+++ 
b/juneau-doc/docs/Topics/12.juneau-rest-client/09.jrc.Proxies/10.jrc.DualPurposeInterfaces.html
@@ -66,7 +66,7 @@
                |               title=<js>"Petstore application"</js>,
                |               ...
                |       )
-               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalJenaConfig, PetStore {
+               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> PetStore {
                |       
                |               ...
                |       
diff --git 
a/juneau-doc/docs/Topics/15.juneau-microservice-jetty/03.jmj.ResourceClasses.html
 
b/juneau-doc/docs/Topics/15.juneau-microservice-jetty/03.jmj.ResourceClasses.html
index df5e09cac..64dab90f3 100644
--- 
a/juneau-doc/docs/Topics/15.juneau-microservice-jetty/03.jmj.ResourceClasses.html
+++ 
b/juneau-doc/docs/Topics/15.juneau-microservice-jetty/03.jmj.ResourceClasses.html
@@ -36,7 +36,7 @@
                |                       LogsResource.<jk>class</jk>
                |               }
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicRestServletGroup {
                |               <jc>// No code! </jc>
                |       }
        </p>
@@ -77,7 +77,7 @@
                |               title=<js>"Hello World example"</js>,
                |               description=<js>"Simplest possible REST 
resource"</js>
                |       )
-               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> HelloWorldResource 
<jk>extends</jk> BasicRestServlet {
                |       
                |               <ja>@RestGet</ja>(<js>"/*"</js>)
                |               <jk>public</jk> String sayHello() {
diff --git 
a/juneau-doc/docs/Topics/15.juneau-microservice-jetty/05.jmj.Config.html 
b/juneau-doc/docs/Topics/15.juneau-microservice-jetty/05.jmj.Config.html
index ab3643c95..4402f38a5 100644
--- a/juneau-doc/docs/Topics/15.juneau-microservice-jetty/05.jmj.Config.html
+++ b/juneau-doc/docs/Topics/15.juneau-microservice-jetty/05.jmj.Config.html
@@ -119,7 +119,7 @@
                                |       <cc># Contents of MyHelloResource.java 
</cc>
                                |       
<cc>#---------------------------------</cc>
                                |       <ja>@Rest</ja>(...)
-                               |       <jk>public class</jk> MyHelloResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+                               |       <jk>public class</jk> MyHelloResource 
<jk>extends</jk> BasicRestServlet {
                                |               <jk>private</jk> String 
<jf>greeting</jf>; 
                                |               
                                |               <jc>// Or access config file in 
servlet init method.</jc>
@@ -159,7 +159,7 @@
                                |               
messages=<js>"nls/Messages"</js>,
                                |               ...
                                |       )
-                               |       <jk>public class</jk> MyHelloResource 
<jk>extends</jk> BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+                               |       <jk>public class</jk> MyHelloResource 
<jk>extends</jk> BasicRestServlet {
                                |
                                |               <jd>/** Standard hello message. 
*/</jd>
                                |               
<ja>@RestGet</ja>(<js>"/{person}"</js>)
diff --git 
a/juneau-doc/docs/Topics/16.my-jetty-microservice/01.mjm.Installing.html 
b/juneau-doc/docs/Topics/16.my-jetty-microservice/01.mjm.Installing.html
index 5d6ecd2c7..9b5b5117a 100644
--- a/juneau-doc/docs/Topics/16.my-jetty-microservice/01.mjm.Installing.html
+++ b/juneau-doc/docs/Topics/16.my-jetty-microservice/01.mjm.Installing.html
@@ -81,7 +81,7 @@
                                |                       <js>"options: 
servlet:/?method=OPTIONS"</js>
                                |               }
                                |       )
-                               |       <jk>public class</jk> RootResources 
<jk>extends</jk> BasicRestServletGroup <jk>implements</jk> BasicUniversalConfig 
{
+                               |       <jk>public class</jk> RootResources 
<jk>extends</jk> BasicRestServletGroup {
                                |               <jc>// No code</jc>
                                |       }
                        </p>
diff --git 
a/juneau-doc/docs/Topics/17.my-springboot-microservice/01.msm.Installing.html 
b/juneau-doc/docs/Topics/17.my-springboot-microservice/01.msm.Installing.html
index 96c2d58ec..bd36c0d39 100644
--- 
a/juneau-doc/docs/Topics/17.my-springboot-microservice/01.msm.Installing.html
+++ 
b/juneau-doc/docs/Topics/17.my-springboot-microservice/01.msm.Installing.html
@@ -87,7 +87,7 @@
                                |                       
LogsResource.<jk>class</jk>
                                |               }
                                |       )
-                               |       <jk>public class</jk> RootResources 
<jk>extends</jk> BasicRestServletGroup <jk>implements</jk> BasicUniversalConfig 
{
+                               |       <jk>public class</jk> RootResources 
<jk>extends</jk> BasicRestServletGroup {
                                |               <jc>// No code</jc>
                                |       }
                        </p>
diff --git 
a/juneau-doc/docs/Topics/18.juneau-petstore/04.jp.juneau-petstore-server.html 
b/juneau-doc/docs/Topics/18.juneau-petstore/04.jp.juneau-petstore-server.html
index c57ed0e3c..4a777b96a 100644
--- 
a/juneau-doc/docs/Topics/18.juneau-petstore/04.jp.juneau-petstore-server.html
+++ 
b/juneau-doc/docs/Topics/18.juneau-petstore/04.jp.juneau-petstore-server.html
@@ -107,7 +107,7 @@
                |                       <js>"&lt;/div&gt;"</js>
                |               }
                |       )
-               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicSpringRestServletGroup <jk>implements</jk> BasicUniversalConfig {
+               |       <jk>public class</jk> RootResources <jk>extends</jk> 
BasicSpringRestServletGroup {
                |               <jk>private static final long</jk> 
<jsf>serialVersionUID</jsf> = 1L;
                |       }
        </p>
@@ -207,7 +207,7 @@
                |               },
                |               
stylesheet=<js>"servlet:/htdocs/themes/dark.css"</js>  <jc>// Use dark theme by 
default.</jc>
                |       )
-               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> BasicUniversalConfig, PetStore {
+               |       <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestObject <jk>implements</jk> PetStore {
                |       
                |               <ja>@Autowired</ja>
                |               <jk>private</jk> PetStoreService <jf>store</jf>;
diff --git a/juneau-doc/src/main/javadoc/overview.html 
b/juneau-doc/src/main/javadoc/overview.html
index e37539635..d7c5ccb36 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -444,9 +444,7 @@
 <div class='topic'>
        <p>
                Apache Juneau™ is a single cohesive Java ecosystem for 
marshalling Java objects to a wide variety of 
-               language types and creating annotation-based REST end-to-end 
server and client APIs.  The modules
-               have as few prereqs as possible making them ideal for usage in 
uber-jars.  All modules work with
-               Java 8 through 18.  
+               language types and creating annotation-based REST end-to-end 
server and client APIs.  
        </p>
        
        <p>
@@ -712,6 +710,8 @@
                <li>
                        Built on top of Servlet and Apache HttpClient APIs that 
allow you to use the newest HTTP/2 features
                        such as request/response multiplexing and server push.
+               <li>
+                       All modules work with Java 8 through at least 18.
        </ul>
 </div>
 
@@ -15294,7 +15294,7 @@
        
        <ja>@RestDelete</ja>(path=<js>"/{id}"</js>)
        <jk>public</jk> HttpResource helloWold(...) {
-               <jk>return</jk> 
<jsm>stringResource</jsm>(<js>"Hello!"</js>).contentType(<js>"text/plain"</js>).build();
+               <jk>return</jk> 
<jsm>stringResource</jsm>(<js>"Hello!"</js>).contentType(<js>"text/plain"</js>);
        }
        </p>
        
@@ -15375,8 +15375,8 @@
        <ja>@RestDelete</ja>(path=<js>"/{id}"</js>)
        <jk>public</jk> Ok doDelete(...) <jk>throws</jk> Unauthorized {
                <jk>if</jk> (<jc>/* user not authorized*/</jc>)
-                       <jk>throw</jk> <jsm>unauthorized</jsm>().build();
-               <jk>return</jk> 
<jsm>ok</jsm>().content(<js>"OK"</js>).header(<jsm>contentType</jsm>(<js>"text/plain"</js>)).build();
+                       <jk>throw</jk> <jsm>unauthorized</jsm>();
+               <jk>return</jk> 
<jsm>ok</jsm>().content(<js>"OK"</js>).header(<jsm>contentType</jsm>(<js>"text/plain"</js>));
        }
        </p>
 </div>
@@ -15518,7 +15518,7 @@
        
        <h5 class='topic'>HeaderList</h5>
        <p>
-               The {@link org.apache.juneau.http.header.HeaderList} class is a 
thread-safe immutable list of HTTP headers.
+               The {@link org.apache.juneau.http.header.HeaderList} class is a 
list of HTTP headers.
        </p>
 
        <h5 class='figure'>Example</h5>
@@ -15527,21 +15527,11 @@
        HeaderList <jv>headers</jv> = HeaderList
                .<jsm>create</jsm>()
                .append(Accept.<jsm>of</jsm>(<js>"text/xml"</js>))
-               .append(<js>"Content-Type"</js>, 
()-&gt;<jsm>getDynamicContentTypeFromSomewhere</jsm>())
-               .build();
+               .append(<js>"Content-Type"</js>, 
()-&gt;<jsm>getDynamicContentTypeFromSomewhere</jsm>());
        
        <jc>// Construct using convenience creator.</jc>
        HeaderList <jv>headers</jv> = 
HeaderList.<jsm>of</jsm>(Accept.<jsf>TEXT_XML</jsf>, 
ContentType.<jsf>TEXT_XML</jsf>);
        </p>
-       <p>
-               Header lists are immutable but can be appended to using the 
{@link org.apache.juneau.http.header.HeaderList#copy() copy()} method:      
-       </p>
-       <p class='bjava'>
-       <jv>headers</jv> = <jv>headers</jv>
-               .copy()
-               .append(AcceptEncoding.<jsm>of</jsm>(<js>"identity"</js>))
-               .build();
-       </p>
        <p>
                Static methods are provided on {@link 
org.apache.juneau.http.HttpHeaders} to further simplify creation of header 
lists.
        </p>
@@ -15560,15 +15550,13 @@
        <jv>headers</jv> = HeaderList
                .<jsm>create</jsm>()
                .set(Accept.<jsf>TEXT_PLAIN</jsf>)
-               .set(Accept.<jsf>TEXT_XML</jsf>)
-               .build();
+               .set(Accept.<jsf>TEXT_XML</jsf>);
        <jsm>assertObject</jsm>(<jv>headers</jv>).isString(<js>"[Accept: 
text/xml]"</js>);
 
        <jv>headers</jv> = HeaderList
                .create()
                .set(Accept.<jsf>TEXT_PLAIN</jsf>)
-               .setDefault(Accept.<jsf>TEXT_XML</jsf>)
-               .build();
+               .setDefault(Accept.<jsf>TEXT_XML</jsf>);
        <jsm>assertObject</jsm>(<jv>headers</jv>).isString(<js>"[Accept: 
text/plain]"</js>);
        </p>
 
@@ -15593,7 +15581,10 @@
        </p>
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
-       ContentType <jv>contentType</jv> = 
<jv>headers</jv>.get(ContentType.<jk>class</jk>);
+       HeaderList headers = HeaderList.of(Accept.TEXT_JSON, Accept.TEXT_XML);
+
+       <jc>// Returns "text/json, text/xml"</jc>
+       Accept <jv>accept</jv> = <jv>headers</jv>.get(Accept.<jk>class</jk>);
        </p>
 
        <p>
@@ -15616,8 +15607,7 @@
                .<jsm>create</jsm>()
                .resolving()
                .append(<js>"X1"</js>, <js>"$S{foo}"</js>)
-               .append(<js>"X2"</js>, ()-&gt;<js>"$S{foo}"</js>)
-               .build();
+               .append(<js>"X2"</js>, ()-&gt;<js>"$S{foo}"</js>);
 
        <jsm>assertObject</jsm>(<jv>headers</jv>).isString(<js>"[X1: bar, X2: 
bar]"</js>);
        </p>
@@ -15678,32 +15668,21 @@
 
        <h5 class='topic'>PartList</h5>
        <p>
-               The {@link org.apache.juneau.http.part.PartList} class is a 
thread-safe immutable list of HTTP parts (form-data, query-parameters, 
path-parameters).
+               The {@link org.apache.juneau.http.part.PartList} class is a 
list of HTTP parts (form-data, query-parameters, path-parameters).
        </p>
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
        PartList <jv>parts</jv> = PartList
                .<jsm>create</jsm>()
                .append(MyPart.<jsm>of</jsm>(<js>"foo"</js>))
-               .append(<js>"Bar"</js>, 
()-&gt;<jsm>getDynamicValueFromSomewhere</jsm>())
-               .build();
+               .append(<js>"Bar"</js>, 
()-&gt;<jsm>getDynamicValueFromSomewhere</jsm>());
        </p>
 
        <p>
                Convenience creators are provided for creating lists with 
minimal code:
        </p>
        <p class='bjava'>
-               PartList <jv>parts</jv> = 
PartList.<jsm>of</jsm>(BasicIntegerPart.<jsm>of</jsm>(<js>"foo"</js>, 1));
-       </p>
-
-       <p>
-               Part lists are immutable but can be appended to using the 
{@link org.apache.juneau.http.part.PartList#copy() copy()} method:
-       </p>
-       <p class='bjava'>
-       <jv>parts</jv> = <jv>parts</jv>
-               .copy()
-               .append(BasicIntegerPart.<jsm>of</jsm>(<js>"foo"</js>, 1))
-               .build();
+       PartList <jv>parts</jv> = 
PartList.<jsm>of</jsm>(BasicIntegerPart.<jsm>of</jsm>(<js>"foo"</js>, 1));
        </p>
 
        <p>
@@ -15726,15 +15705,13 @@
        <jv>parts</jv> = PartList
                .<jsm>create</jsm>()
                .set(<js>"Foo"</js>, <js>"bar"</js>)
-               .set(<js>"Foo"</js>, <js>"baz"</js>)
-               .build();
+               .set(<js>"Foo"</js>, <js>"baz"</js>);
        <jsm>assertObject</jsm>(<jv>parts</jv>).isString(<js>"foo=baz"</js>);
 
        <jv>parts</jv> = PartList
                .create()
                .set(<js>"Foo"</js>, <js>"bar"</js>)
-               .setDefault(<js>"Foo"</js>, <js>"baz"</js>)
-               .build();
+               .setDefault(<js>"Foo"</js>, <js>"baz"</js>);
        <jsm>assertObject</jsm>(<jv>parts</jv>).isString(<js>"foo=bar"</js>);
        </p>
 
@@ -15780,8 +15757,7 @@
                .<jsm>create</jsm>()
                .resolving()
                .append(<js>"X1"</js>, <js>"$S{foo}"</js>)
-               .append(<js>"X2"</js>, ()-&gt;<js>"$S{foo}"</js>)
-               .build();
+               .append(<js>"X2"</js>, ()-&gt;<js>"$S{foo}"</js>);
 
        
<jsm>assertObject</jsm>(<jv>parts</jv>).isString(<js>"X1=bar&amp;X2=bar"</js>);
        </p>
@@ -15818,7 +15794,7 @@
                        <ul class='javatreec'>
                                <li class='jc'>{@link 
org.apache.juneau.http.entity.ByteArrayEntity}
                                <li class='jc'>{@link 
org.apache.juneau.http.entity.FileEntity}
-                               <li class='jc'>{@link 
org.apache.juneau.http.entity.InputStreamEntity}
+                               <li class='jc'>{@link 
org.apache.juneau.http.entity.StreamEntity}
                                <li class='jc'>{@link 
org.apache.juneau.http.entity.ReaderEntity}
                                <li class='jc'>{@link 
org.apache.juneau.http.entity.SerializedEntity}
                                <li class='jc'>{@link 
org.apache.juneau.http.entity.StringEntity}
@@ -15826,27 +15802,6 @@
                </ul>
        </ul>
        
-       <h5 class='topic'>HttpEntityBuilder</h5>
-       <p>
-               HTTP entities are created through builders created in the 
{@link org.apache.juneau.http.HttpEnties} class or individual <c>create()</c> 
methods
-               defined in the subclasses above.  The builder contains the 
following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder}
-               <ul>
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#cached() cached()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#chunked() chunked()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#chunked(boolean) 
chunked(boolean)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#content(Object) content(Object)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#content(Supplier) 
content(Supplier)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#contentEncoding(ContentEncoding)
 contentEncoding(ContentEncoding)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#contentEncoding(String) 
contentEncoding(String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#contentLength(long) 
contentLength(long)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#contentType(ContentType) 
contentType(ContentType)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.entity.HttpEntityBuilder#contentType(String) 
contentType(String)}
-               </ul>
-       </ul>
-       
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
        <jk>import static</jk> org.apache.juneau.http.HttpEntities.*;
@@ -15857,11 +15812,38 @@
        HttpEntity <jv>entity</jv> = ByteArrayEntity
                .<jsm>create</jsm>()
                .content(<jv>payload</jv>)
-               .contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>)
-               .build();
+               .contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
 
        <jc>// Create via HttpEntities.</jc>
-       HttpEntity <jv>entity</jv> = 
<jsm>byteArrayEntity</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>).build();
+       HttpEntity <jv>entity</jv> = 
<jsm>byteArrayEntity</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
+       </p>
+       
+       <p>
+               HttpEntities can be used by both the server and client side 
APIs described in later sections.
+       </p>
+       <h5 class='figure'>Server-side example:</h5>
+       <p class='bjava'>
+       <jc>// REST endpoint that simply echos an HTTP entity.</jc>
+ 
+       <ja>@RestPost</ja>(path=<js>"/entity"</js>)
+       <jk>public</jk> HttpEntity echoMyEntity(HttpEntity <jv>entity</jv>) {
+               <jk>return</jk> <jv>entity</jv>;
+       }
+       </p>
+       
+       <h5 class='figure'>Client-side example:</h5>
+       <p class='bjava'>
+       <jc>// REST client that uses the echo REST endpoint above.</jc> 
+       
+       HttpEntity <jv>entity</jv> = <jsm>byteArrayEntity</jsm>(...);
+       
+       <jv>entity</jv> = RestClient.<jsm>create</jsm>()
+               .build()
+               .rootUrl(<jsf>URI</jsf>)
+               .post(<js>"/entity"</js>, <jv>entity</jv>)
+               .run()
+               .assertStatus().asCode().is(200)
+               .getContent().as(ByteArrayEntity.<jk>class</jk>);
        </p>
 </div>
 </div><!-- END: 7.5 - juneau-rest-common.jrc.org.apache.juneau.http.entity -->
@@ -15884,44 +15866,14 @@
                                <ul class='javatreec'>
                                        <li class='jc'>{@link 
org.apache.juneau.http.resource.ByteArrayResource}
                                        <li class='jc'>{@link 
org.apache.juneau.http.resource.FileResource}
-                                       <li class='jc'>{@link 
org.apache.juneau.http.resource.InputStreamResource}
+                                       <li class='jc'>{@link 
org.apache.juneau.http.resource.StreamResource}
                                        <li class='jc'>{@link 
org.apache.juneau.http.resource.ReaderResource}
                                        <li class='jc'>{@link 
org.apache.juneau.http.resource.StringResource}
                                </ul>
                        </ul>
                </ul>
        </ul>
-       
-       <h5 class='topic'>HttpResourceBuilder</h5>
-       <p>
-               HTTP entities are created through builders created in the 
{@link org.apache.juneau.http.HttpResources} class or individual 
<c>create()</c> methods
-               defined in the subclasses above.  The builder contains the 
following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder}
-               <ul>
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#cached() cached()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#chunked() chunked()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#chunked(boolean) 
chunked(boolean)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#content(Object) 
content(Object)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#content(Supplier) 
content(Supplier)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#contentEncoding(ContentEncoding)
 contentEncoding(ContentEncoding)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#contentEncoding(String) 
contentEncoding(String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#contentLength(long) 
contentLength(long)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#contentType(ContentType) 
contentType(ContentType)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#contentType(String) 
contentType(String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#copyFrom(HttpResponse) 
copyFrom(HttpResponse)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#getEntity() getEntity()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#getHeaders() getHeaders()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#header(Header) 
header(Header)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#header(String,String) 
header(String,String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#headers(Header...) 
headers(Header...)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#headers(HeaderList) 
headers(HeaderList)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#headers(List) 
headers(List&lt;Header&gt;)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.resource.HttpResourceBuilder#getHeaders() getHeaders()}
-               </ul>
-       </ul>
-       
+               
        <h5 class='figure'>Example</h5>
        <p class='bjava'>
        <jk>import static</jk> org.apache.juneau.http.HttpResources.*;
@@ -15932,11 +15884,38 @@
        HttpResource <jv>resource</jv> = ByteArrayResource
                .<jsm>create</jsm>()
                .content(<jv>payload</jv>)
-               .contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>)
-               .build();
+               .contentType(ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
 
        <jc>// Create via HttpResources.</jc>
-       HttpResource <jv>resource</jv> = 
<jsm>byteArrayResource</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>).build();
+       HttpResource <jv>resource</jv> = 
<jsm>byteArrayResource</jsm>(<jv>payload</jv>, 
ContentType.<jsf>APPLICATION_OCTET_STREAM</jsf>);
+       </p>
+
+       <p>
+               HttpResources can be used by both the server and client side 
APIs described in later sections.
+       </p>
+       <h5 class='figure'>Server-side example:</h5>
+       <p class='bjava'>
+       <jc>// REST endpoint that simply echos an HTTP resource.</jc>
+ 
+       <ja>@RestPost</ja>(path=<js>"/resource"</js>)
+       <jk>public</jk> HttpResource echoMyEntity(HttpResource 
<jv>resource</jv>) {
+               <jk>return</jk> <jv>resource</jv>;
+       }
+       </p>
+       
+       <h5 class='figure'>Client-side example:</h5>
+       <p class='bjava'>
+       <jc>// REST client that uses the echo REST endpoint above.</jc> 
+       
+       HttpEntity <jv>resource</jv> = <jsm>byteArrayResource</jsm>(...);
+       
+       <jv>resource</jv> = RestClient.<jsm>create</jsm>()
+               .build()
+               .rootUrl(<jsf>URI</jsf>)
+               .post(<js>"/resource"</js>, <jv>resource</jv>)
+               .run()
+               .assertStatus().asCode().is(200)
+               .getContent().as(ByteArrayResource.<jk>class</jk>);
        </p>
        
 </div>
@@ -16025,6 +16004,7 @@
        
        <p>
                The most common location where these responses are used are in 
REST operation methods described later.
+       </p>
        <h5 class='figure'>Example:</h5>
        <p class='bjava'>
        <ja>@RestDelete</ja>(path=<js>"/{id}"</js>)
@@ -16040,40 +16020,7 @@
        <ul class='javatreec'>
                <li class='jc'>{@link 
org.apache.juneau.http.response.BasicHttpException}
                <li class='jc'>{@link 
org.apache.juneau.http.response.BasicHttpResponse}
-               <li class='jc'>{@link 
org.apache.juneau.http.response.HttpExceptionBuilder}
-               <li class='jc'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder}
-       </ul>
-       
-       <h5 class='topic'>HttpResponseBuilder / HttpExceptionBuilder</h5>
-       <p>
-               HTTP responses are created through builders created in the 
{@link org.apache.juneau.http.HttpResponses} class or individual 
<c>create()</c> methods
-               defined in the basic classes above.  The builder contains the 
following methods:
-       </p>
-       <ul class='javatree'>
-               <li class='jc'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder}
-               <ul>
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#content(HttpEntity) 
content(HttpEntity)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#content(String) 
content(String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#copyFrom(HttpResponse) 
copyFrom(HttpResponse)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#getHeaders() getHeaders()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#getStatusLine() 
getStatusLine()}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#header(Header) 
header(Header)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#header(String,String) 
header(String,String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#headers(Header...) 
headers(Header...)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#headers(HeaderList) 
headers(HeaderList)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#headers(List) 
headers(List&lt;Header&gt;)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#locale(Locale) 
locale(Locale)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#location(String) 
location(String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#location(URI) location(URI)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#protocolVersion(ProtocolVersion)
 protocolVersion(ProtocolVersion)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#reasonPhrase(String) 
reasonPhrase(String)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#reasonPhraseCatalog(ReasonPhraseCatalog)
 reasonPhraseCatalog(ReasonPhraseCatalog)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#statusCode(int) 
statusCode(int)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#statusLine(BasicStatusLine) 
statusLine(BasicStatusLine)}
-                       <li class='jm'>{@link 
org.apache.juneau.http.response.HttpResponseBuilder#unmodifiable() 
unmodifiable()}
-               </ul>
-       </ul>
-       
+       </ul>   
 </div>
 </div><!-- END: 7.7 - juneau-rest-common.jrc.org.apache.juneau.http.response 
-->
 
@@ -21804,7 +21751,6 @@
                        <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#defaultResponseHeaders() 
defaultResponseHeaders}
                        <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#defaultSettings() defaultSettings}
                        <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#encoders() encoders}
-                       <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#fileFinder() fileFinder}
                        <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#jsonSchemaGenerator() 
jsonSchemaGenerator}
                        <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#logger() logger}
                        <li class='jm'>{@link 
org.apache.juneau.rest.RestContext.Builder#messages() messages}
@@ -24151,6 +24097,18 @@
                        </ul>
                </li>
        </ul>
+
+       <p>
+               Specialized sub-annotations are provided for common HTTP 
methods:
+       </p>
+       <ul class='javatreec'>
+               <li class='ja'>{@link org.apache.juneau.http.remote.RemoteGet}
+               <li class='ja'>{@link org.apache.juneau.http.remote.RemotePost}
+               <li class='ja'>{@link org.apache.juneau.http.remote.RemotePut}
+               <li class='ja'>{@link org.apache.juneau.http.remote.RemotePatch}
+               <li class='ja'>{@link 
org.apache.juneau.http.remote.RemoteDelete}
+       </ul>
+
        <h5 class='topic'>@RemoteOp(method/path)</h5>
        <p>
                The HTTP method and path are mapped to a Java method using the 
<c>method</c> and <c>path</c> annotations.
@@ -24794,10 +24752,10 @@
        }
        </p>
        <p class='bjava'>
-               PetStore <jv>store</jv> = 
<jv>client</jv>.getRemote(PetStore.<jk>class</jk>, 
<js>"http://localhost:10000";</js>);
-               
-               CreatePetRequest <jv>requestBean</jv> = <jk>new</jk> 
CreatePetRequest(<js>"Fluffy"</js>, 9.99);
-               String <jv>response</jv> = <jv>store</jv>.postPet(requestBean);
+       PetStore <jv>store</jv> = 
<jv>client</jv>.getRemote(PetStore.<jk>class</jk>, 
<js>"http://localhost:10000";</js>);
+       
+       CreatePetRequest <jv>requestBean</jv> = <jk>new</jk> 
CreatePetRequest(<js>"Fluffy"</js>, 9.99);
+       String <jv>response</jv> = <jv>store</jv>.postPet(requestBean);
        </p>
        <p>
                The <ja>@Request</ja> annotation can be applied to either the 
class or argument.
diff --git 
a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/HelloWorldResource.java
 
b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/HelloWorldResource.java
index 4ebdaf1ff..c02c84930 100644
--- 
a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/HelloWorldResource.java
+++ 
b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/HelloWorldResource.java
@@ -14,7 +14,6 @@ package org.apache.juneau.examples.rest.springboot;
 
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 import org.springframework.beans.factory.annotation.*;
 
@@ -39,7 +38,7 @@ import org.springframework.beans.factory.annotation.*;
                "</div>"
        }
 )
-public class HelloWorldResource extends BasicRestObject implements 
BasicUniversalConfig {
+public class HelloWorldResource extends BasicRestObject {
 
        @Autowired
        private HelloWorldMessageProvider messageProvider;
diff --git 
a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/RootResources.java
 
b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/RootResources.java
index 1df56b6b8..730564456 100644
--- 
a/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/RootResources.java
+++ 
b/juneau-examples/juneau-examples-rest-springboot/src/main/java/org/apache/juneau/examples/rest/springboot/RootResources.java
@@ -17,7 +17,6 @@ import org.apache.juneau.examples.rest.dto.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.microservice.resources.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.springboot.*;
 import org.apache.juneau.rest.widget.*;
 import org.apache.juneau.serializer.annotation.*;
@@ -73,6 +72,6 @@ import org.apache.juneau.serializer.annotation.*;
        // You can apply any of the Serializer/Parser/BeanContext settings this 
way.
        quoteChar="'"
 )
-public class RootResources extends BasicSpringRestServletGroup implements 
BasicUniversalConfig {
+public class RootResources extends BasicSpringRestServletGroup {
        private static final long serialVersionUID = 1L;
 }
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
index ba785909c..a19e8cfca 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HelloWorldResource.java
@@ -14,7 +14,6 @@ package org.apache.juneau.examples.rest;
 
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 
 /**
@@ -37,7 +36,7 @@ import org.apache.juneau.rest.servlet.*;
                "</div>"
        }
 )
-public class HelloWorldResource extends BasicRestObject implements 
BasicUniversalConfig {
+public class HelloWorldResource extends BasicRestObject {
 
        /**
         * [HTTP GET /helloworld]
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HtmlBeansResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HtmlBeansResource.java
index 1d3800fc4..208751afd 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HtmlBeansResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/HtmlBeansResource.java
@@ -18,7 +18,6 @@ import org.apache.juneau.dto.html5.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.beans.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.widget.*;
 
@@ -54,7 +53,7 @@ import org.apache.juneau.rest.widget.*;
        },
        asideFloat="RIGHT"
 )
-public class HtmlBeansResource extends BasicRestObject implements 
BasicUniversalConfig {
+public class HtmlBeansResource extends BasicRestObject {
 
        @SuppressWarnings("unused")
        private static final long serialVersionUID = 1L;
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
index 1f5241cfa..89dfe5362 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/PhotosResource.java
@@ -20,7 +20,6 @@ import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.widget.*;
 
@@ -60,7 +59,7 @@ import java.net.*;
        },
        asideFloat="RIGHT"
 )
-public class PhotosResource extends BasicRestServlet implements 
BasicUniversalConfig {
+public class PhotosResource extends BasicRestServlet {
 
        private static final long serialVersionUID = 1L;
 
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
index 7cb1b4c00..f074f24dc 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/RequestEchoResource.java
@@ -20,7 +20,6 @@ import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.converter.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.widget.*;
@@ -78,7 +77,7 @@ import org.apache.juneau.swaps.*;
 @Bean(on="HttpServletRequest",interfaceClass=HttpServletRequest.class)
 @Bean(on="HttpSession",interfaceClass=HttpSession.class)
 @Bean(on="ServletContext",interfaceClass=ServletContext.class)
-public class RequestEchoResource extends BasicRestObject implements 
BasicUniversalConfig {
+public class RequestEchoResource extends BasicRestObject {
 
        /**
         * [HTTP GET /echo/*]
diff --git 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UtilityBeansResource.java
 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UtilityBeansResource.java
index 4ba21d834..fa9e2fad0 100644
--- 
a/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UtilityBeansResource.java
+++ 
b/juneau-examples/juneau-examples-rest/src/main/java/org/apache/juneau/examples/rest/UtilityBeansResource.java
@@ -16,7 +16,6 @@ import org.apache.juneau.annotation.*;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.beans.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.widget.*;
 
@@ -53,7 +52,7 @@ import org.apache.juneau.rest.widget.*;
        asideFloat="RIGHT"
 )
 @SuppressWarnings("javadoc")
-public class UtilityBeansResource extends BasicRestObject implements 
BasicUniversalConfig {
+public class UtilityBeansResource extends BasicRestObject {
 
        @SuppressWarnings("unused")
        private static final long serialVersionUID = 1L;
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
index 59fb3ff70..94a14a884 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ConfigResource.java
@@ -25,7 +25,6 @@ import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.annotation.Content;
 import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 
 /**
@@ -52,7 +51,7 @@ import org.apache.juneau.rest.servlet.*;
        }
 )
 @SuppressWarnings("javadoc")
-public class ConfigResource extends BasicRestServlet implements 
BasicUniversalConfig {
+public class ConfigResource extends BasicRestServlet {
        private static final long serialVersionUID = 1L;
 
        @RestGet(
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
index 229bfb17c..6428cca87 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
@@ -28,7 +28,6 @@ import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.beans.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 
 /**
@@ -74,7 +73,7 @@ import org.apache.juneau.rest.servlet.*;
 )
 @HtmlConfig(uriAnchorText="PROPERTY_NAME")
 @SuppressWarnings("javadoc")
-public class DirectoryResource extends BasicRestServlet implements 
BasicUniversalConfig {
+public class DirectoryResource extends BasicRestServlet {
        private static final long serialVersionUID = 1L;
 
        
//-------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
index 720e32ecc..a5ae21819 100644
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
@@ -29,7 +29,6 @@ import org.apache.juneau.http.response.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.beans.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.converter.*;
 import org.apache.juneau.rest.servlet.*;
 
@@ -44,7 +43,7 @@ import org.apache.juneau.rest.servlet.*;
 )
 @HtmlConfig(uriAnchorText="PROPERTY_NAME")
 @SuppressWarnings("javadoc")
-public class LogsResource extends BasicRestServlet implements 
BasicUniversalConfig {
+public class LogsResource extends BasicRestServlet {
        private static final long serialVersionUID = 1L;
 
        
//-------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/SampleRootResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/SampleRootResource.java
index 4f3a68257..ac3f282db 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/SampleRootResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/SampleRootResource.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.microservice.resources;
 
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 
 /**
@@ -32,6 +31,6 @@ import org.apache.juneau.rest.servlet.*;
        description="This is a sample router page",
        children={ConfigResource.class}
 )
-public class SampleRootResource extends BasicRestServletGroup implements 
BasicUniversalConfig {
+public class SampleRootResource extends BasicRestServletGroup {
        private static final long serialVersionUID = 1L;
 }
diff --git 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ShutdownResource.java
 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ShutdownResource.java
index d8aff7f51..b3da40528 100755
--- 
a/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ShutdownResource.java
+++ 
b/juneau-microservice/juneau-microservice-core/src/main/java/org/apache/juneau/microservice/resources/ShutdownResource.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.microservice.resources;
 
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 
 /**
@@ -30,7 +29,7 @@ import org.apache.juneau.rest.servlet.*;
        path="/shutdown",
        title="Shut down this resource"
 )
-public class ShutdownResource extends BasicRestServlet implements 
BasicUniversalConfig {
+public class ShutdownResource extends BasicRestServlet {
 
        private static final long serialVersionUID = 1L;
 
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigResource.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigResource.java
index 22da2fee6..57de47845 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigResource.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/ConfigResource.java
@@ -17,7 +17,6 @@ import static org.apache.juneau.http.HttpMethod.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 
 /**
@@ -27,7 +26,7 @@ import org.apache.juneau.rest.servlet.*;
        path="/testConfig"
 )
 @SuppressWarnings({"serial"})
-public class ConfigResource extends BasicRestServlet implements 
BasicUniversalConfig {
+public class ConfigResource extends BasicRestServlet {
 
        @RestOp(method=GET, path="/")
        public Object test1(RestRequest req) {
diff --git 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
index 80f3efc74..17fe69c96 100644
--- 
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
+++ 
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/Root.java
@@ -19,7 +19,6 @@ import org.apache.juneau.microservice.resources.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.beans.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.rest.test.client.*;
 
@@ -33,7 +32,7 @@ import org.apache.juneau.rest.test.client.*;
                ShutdownResource.class,
        }
 )
-public class Root extends BasicRestServlet implements BasicUniversalConfig {
+public class Root extends BasicRestServlet {
        private static final long serialVersionUID = 1L;
 
        @RestOp(method=GET, path="/")
diff --git 
a/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/HelloWorldResource.java
 
b/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/HelloWorldResource.java
index 0e02bc730..ebb88a5ed 100644
--- 
a/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/HelloWorldResource.java
+++ 
b/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/HelloWorldResource.java
@@ -16,7 +16,6 @@ import java.util.*;
 
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.BasicUniversalConfig;
 import org.apache.juneau.rest.servlet.BasicRestObject;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -41,7 +40,7 @@ import org.springframework.beans.factory.annotation.Autowired;
                "</div>"
        }
 )
-public class HelloWorldResource extends BasicRestObject implements 
BasicUniversalConfig {
+public class HelloWorldResource extends BasicRestObject {
 
        private final String message;
 
diff --git 
a/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/RootResources.java
 
b/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/RootResources.java
index 6122e8ba2..407bb79ee 100644
--- 
a/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/RootResources.java
+++ 
b/juneau-microservice/juneau-my-springboot-microservice/src/main/java/org/apache/juneau/microservice/springboot/template/RootResources.java
@@ -15,7 +15,6 @@ package org.apache.juneau.microservice.springboot.template;
 import org.apache.juneau.html.annotation.*;
 import org.apache.juneau.microservice.resources.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.BasicUniversalConfig;
 import org.apache.juneau.rest.springboot.*;
 import org.apache.juneau.rest.widget.*;
 import org.apache.juneau.serializer.annotation.*;
@@ -69,6 +68,6 @@ import org.apache.juneau.serializer.annotation.*;
        // You can apply any of the Serializer/Parser/BeanContext settings this 
way.
        quoteChar="'"
 )
-public class RootResources extends BasicSpringRestServletGroup implements 
BasicUniversalConfig {
+public class RootResources extends BasicSpringRestServletGroup {
        private static final long serialVersionUID = 1L;
 }
diff --git 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockConsole.java
 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockConsole.java
index b670a92de..2f76874bd 100644
--- 
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockConsole.java
+++ 
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock/MockConsole.java
@@ -30,7 +30,7 @@ import org.apache.juneau.assertions.*;
  * <p class='bjava'>
  *     <jc>// A simple REST API that echos a posted bean.</jc>
  *     <ja>@Rest</ja>
- *     <jk>public class</jk> MyRest <jk>extends</jk> BasicRestObject 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyRest <jk>extends</jk> BasicRestObject {
  *             <ja>@RestPost</ja>(<js>"/bean"</js>)
  *             <jk>public</jk> Bean postBean(<ja>@Content</ja> Bean 
<jv>bean</jv>) {
  *                     <jk>return</jk> <jv>bean</jv>;
diff --git 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
index 6f7af1256..4cc4824d7 100644
--- 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
+++ 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServlet.java
@@ -31,9 +31,8 @@ import org.apache.juneau.rest.stats.*;
  * Meant as base class for top-level REST resources in Spring Boot 
environments.
  *
  * <p>
- * Provides basic JSON support by implementing the {@link BasicJsonConfig} 
interface.
- * Other language types can be added via the {@link Rest#serializers() 
@Rest(serializers)}/{@link Rest#parsers() @Rest(parsers)} annotations
- * or by adding one of the predefined interfaces in {@link 
org.apache.juneau.rest.config}.
+ * Provides support for JSON, XML, HTML, URL-Encoding, UON, XML, and 
MessagePack.  See {@link BasicUniversalConfig}
+ * for details.
  *
  * <p>
  * Implements the basic REST endpoints defined in {@link BasicRestOperations}.
@@ -47,7 +46,7 @@ import org.apache.juneau.rest.stats.*;
  * @serial exclude
  */
 @Rest
-public abstract class BasicSpringRestServlet extends SpringRestServlet 
implements BasicRestOperations, BasicJsonConfig {
+public abstract class BasicSpringRestServlet extends SpringRestServlet 
implements BasicRestOperations, BasicUniversalConfig {
        private static final long serialVersionUID = 1L;
 
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
index b342bfe70..d2736229e 100644
--- 
a/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
+++ 
b/juneau-rest/juneau-rest-server-springboot/src/main/java/org/apache/juneau/rest/springboot/BasicSpringRestServletGroup.java
@@ -25,9 +25,8 @@ import org.apache.juneau.rest.servlet.*;
  * Meant as a base class for top-level REST resources in Spring Boot 
environments.
  *
  * <p>
- * Provides basic JSON support by implementing the {@link BasicJsonConfig} 
interface.
- * Other language types can be added via the {@link Rest#serializers() 
@Rest(serializers)}/{@link Rest#parsers() @Rest(parsers)} annotations
- * or by adding one of the predefined interfaces in {@link 
org.apache.juneau.rest.config}.
+ * Provides support for JSON, XML, HTML, URL-Encoding, UON, XML, and 
MessagePack.  See {@link BasicUniversalConfig}
+ * for details.
  *
  * <p>
  * Implements the basic REST endpoints defined in {@link BasicRestOperations}.
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 d6d2ee7e9..d741d196c 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
@@ -5657,7 +5657,7 @@ public class RestContext extends Context {
         *                      
<ja>@Property</ja>(name=<js>"v1"</js>,value=<js>"$R{foo,bar}"</js>),  <jc>// 
Request variable.  value="bar"</jc>
         *              }
         *      )
-        *      <jk>public class</jk> MyRestResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyRestResource <jk>extends</jk> 
BasicRestServlet {
         * </p>
         *
         * <p>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index 3b4b9a8c6..7cc37d180 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -2013,7 +2013,7 @@ public class RestOpContext extends Context implements 
Comparable<RestOpContext>
                 *              
rolesDeclared=<js>"ROLE_ADMIN,ROLE_READ_WRITE,ROLE_READ_ONLY,ROLE_SPECIAL"</js>,
                 *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
                 *      )
-                *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+                *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
                 *              ...
                 *      }
                 * </p>
@@ -2043,7 +2043,7 @@ public class RestOpContext extends Context implements 
Comparable<RestOpContext>
                 *              path=<js>"/foo"</js>,
                 *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
                 *      )
-                *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+                *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
                 *              ...
                 *      }
                 * </p>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
index f3af36fa7..54802d0ba 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
@@ -915,7 +915,7 @@ public @interface Rest {
         *      <ja>@Rest</ja>(
         *              children={ChildResource.<jk>class</jk>}
         *      )
-        *      <jk>public class</jk> TopLevelResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {...}
+        *      <jk>public class</jk> TopLevelResource <jk>extends</jk> 
BasicRestServlet {...}
         *
         *      <ja>@Rest</ja>(
         *              path=<js>"/child"</js>,
@@ -951,7 +951,7 @@ public @interface Rest {
         *      <ja>@Rest</ja>(
         *              path=<js>"/myResource/{foo}/{bar}"</js>
         *      )
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestGet</ja>(<js>"/{baz}"</js>)
         *              <jk>public void</jk> String doX(<ja>@Path</ja> String 
<jv>foo</jv>, <ja>@Path</ja> <jk>int</jk> <jv>bar</jv>, <ja>@Path</ja> MyPojo 
<jv>baz</jv>) {
@@ -1102,7 +1102,7 @@ public @interface Rest {
         *              path=<js>"/foo"</js>,
         *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
         *      )
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *              ...
         *      }
         * </p>
@@ -1159,7 +1159,7 @@ public @interface Rest {
         *              
rolesDeclared=<js>"ROLE_ADMIN,ROLE_READ_WRITE,ROLE_READ_ONLY,ROLE_SPECIAL"</js>,
         *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
         *      )
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *              ...
         *      }
         * </p>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
index 5f797e052..b4b56c0f6 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
@@ -455,7 +455,7 @@ public @interface RestDelete {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestDelete</ja>(
         *                      path=<js>"/foo"</js>,
@@ -513,7 +513,7 @@ public @interface RestDelete {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestDelete</ja>(
         *                      path=<js>"/foo"</js>,
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
index 2c58ba2f7..bcb9f8ff5 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestEndCall.java
@@ -47,7 +47,7 @@ import org.apache.juneau.rest.servlet.*;
  * <h5 class='figure'>Example:</h5>
  * <p class='bjava'>
  *     <ja>@Rest</ja>(...)
- *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet {
  *
  *             <jc>// Log the time it took to execute the request.</jc>
  *             <ja>@RestEndCall
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
index e7a7b0fb1..2b8598132 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
@@ -496,7 +496,7 @@ public @interface RestGet {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestGet</ja>(
         *                      path=<js>"/foo"</js>,
@@ -554,7 +554,7 @@ public @interface RestGet {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestGet</ja>(
         *                      path=<js>"/foo"</js>,
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java
index 4206d274a..17f5eb7f8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestInject.java
@@ -54,7 +54,7 @@ import org.apache.juneau.svl.*;
  * <p class='bcode'>
  *     <jc>// Rest resource that uses a customized call logger.</jc>
  *     <ja>@Rest</ja>
- *     <jk>public class</jk> MyRest <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyRest <jk>extends</jk> BasicRestServlet {
  *
  *             <jc>// Option #1:  As a field.</jc>
  *             <ja>@RestInject</ja>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
index 94d6a6230..3a11b7a62 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
@@ -729,7 +729,7 @@ public @interface RestOp {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestOp</ja>(
         *                      method=<jsf>GET</jsf>,
@@ -788,7 +788,7 @@ public @interface RestOp {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestOp</ja>(
         *                      method=<jsf>GET</jsf>,
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptions.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptions.java
index d235a33fe..da844eb89 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptions.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOptions.java
@@ -496,7 +496,7 @@ public @interface RestOptions {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestOptions</ja>(
         *                      path=<js>"/foo"</js>,
@@ -554,7 +554,7 @@ public @interface RestOptions {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestOptions</ja>(
         *                      path=<js>"/foo"</js>,
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatch.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatch.java
index 5d8bd60bd..fbca34f46 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatch.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPatch.java
@@ -652,7 +652,7 @@ public @interface RestPatch {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestPatch</ja>(
         *                      path=<js>"/foo"</js>,
@@ -710,7 +710,7 @@ public @interface RestPatch {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestPatch</ja>(
         *                      path=<js>"/foo"</js>,
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
index 92002658b..c6f628a40 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
@@ -652,7 +652,7 @@ public @interface RestPost {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestPost</ja>(
         *                      path=<js>"/foo"</js>,
@@ -710,7 +710,7 @@ public @interface RestPost {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestPost</ja>(
         *                      path=<js>"/foo"</js>,
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
index 0bc8b6b66..5621a7e90 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostCall.java
@@ -113,7 +113,7 @@ import org.apache.juneau.rest.servlet.*;
  * <h5 class='figure'>Example:</h5>
  * <p class='bjava'>
  *     <ja>@Rest</ja>(...)
- *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet {
  *
  *             <jc>// Log the result of the request.</jc>
  *             <ja>@RestPostCall</ja>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
index 68b7bbd46..52c4a9b60 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPreCall.java
@@ -115,7 +115,7 @@ import org.apache.juneau.rest.servlet.*;
  * <h5 class='figure'>Example:</h5>
  * <p class='bjava'>
  *     <ja>@Rest</ja>(...)
- *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet {
  *
  *             <jc>// Log the incoming request.</jc>
  *             <ja>@RestPreCall</ja>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
index 00b407d18..7941271da 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
@@ -652,7 +652,7 @@ public @interface RestPut {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestPut</ja>(
         *                      path=<js>"/foo"</js>,
@@ -710,7 +710,7 @@ public @interface RestPut {
         *
         * <h5 class='section'>Example:</h5>
         * <p class='bjava'>
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <ja>@RestPut</ja>(
         *                      path=<js>"/foo"</js>,
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
index 632237d21..d9b08984c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestStartCall.java
@@ -42,7 +42,7 @@ import org.apache.juneau.rest.servlet.*;
  * <h5 class='figure'>Example:</h5>
  * <p class='bjava'>
  *     <ja>@Rest</ja>(...)
- *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet {
  *
  *             <jc>// Add a request attribute to all incoming requests.</jc>
  *             <ja>@RestStartCall</ja>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/beans/Hyperlink.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/beans/Hyperlink.java
index 36dbd151c..d8589ba45 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/beans/Hyperlink.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/beans/Hyperlink.java
@@ -20,7 +20,7 @@ import org.apache.juneau.dto.html5.*;
  * <h5 class='figure'>Examples:</h5>
  * <p class='bjava'>
  *     <ja>@Rest</ja>
- *     <jk>public class</jk> MyRest <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyRest <jk>extends</jk> BasicRestServlet {
  *
  *             <jc>// Produces &lt;a 
href=&quot;/foo&quot;&gt;bar&lt;/a&gt;</jc>
  *             <ja>@RestGet</ja>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/converter/RestConverter.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/converter/RestConverter.java
index e68cd50d0..7ea98ea50 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/converter/RestConverter.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/converter/RestConverter.java
@@ -34,7 +34,7 @@ import org.apache.juneau.serializer.*;
  *
  * <h5 class='section'>Example:</h5>
  * <p class='bjava'>
- *     <jk>public class</jk> RequestEchoResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> RequestEchoResource <jk>extends</jk> 
BasicRestServlet {
  *
  *             <jc>// GET request handler</jc>
  *             <ja>@RestGet</ja>(path=<js>"/*"</js>, 
converters={Queryable.<jk>class</jk>,Traversable.<jk>class</jk>})
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RestGuard.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RestGuard.java
index 5826a0399..eb7aea665 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RestGuard.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/guard/RestGuard.java
@@ -46,7 +46,7 @@ import org.apache.juneau.http.response.*;
  *
  * <h5 class='topic'>Example usage:</h5>
  * <p class='bjava'>
- *     <jk>public</jk> MyResource <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public</jk> MyResource <jk>extends</jk> BasicRestServlet {
  *
  *             <jc>// Delete method with guard that only allows Billy to call 
it.</jc>
  *             <ja>@RestDelete</ja>(guards=BillyGuard.<jk>class</jk>)
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
index 2c81cb7a1..b08357a9e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/matcher/RestMatcher.java
@@ -36,7 +36,7 @@ import org.apache.juneau.rest.annotation.*;
  *
  * <h5 class='section'>Example:</h5>
  * <p class='bjava'>
- *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> MyResource <jk>extends</jk> BasicRestServlet {
  *
  *             <ja>@RestGet</ja>(path=<js>"/foo"</js>, 
matchers=IsDNT.<jk>class</jk>)
  *             <jk>public</jk> Object doGetWithDNT() {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
index 857cccf15..7527738be 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/processor/ResponseProcessor.java
@@ -46,7 +46,7 @@ import org.apache.juneau.rest.annotation.*;
  *             path=<js>"/example"</js>,
  *             responseProcessors=FooProcessor.<jk>class</jk>
  *     )
- *     <jk>public class</jk> Example <jk>extends</jk> BasicRestServlet 
<jk>implements</jk> BasicUniversalConfig {
+ *     <jk>public class</jk> Example <jk>extends</jk> BasicRestServlet {
  *
  *             <ja>@RestGet</ja>(<js>"/"</js>)
  *             <jk>public</jk> Foo test1() {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
index 0636ac1ed..3f88502b9 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObject.java
@@ -32,9 +32,8 @@ import org.apache.juneau.http.response.*;
  * Meant as a base class for child REST resources in servlet containers and 
Spring Boot environments.
  *
  * <p>
- * Provides basic JSON support by implementing the {@link BasicJsonConfig} 
interface.
- * Other language types can be added via the {@link Rest#serializers() 
@Rest(serializers)}/{@link Rest#parsers() @Rest(parsers)} annotations
- * or by adding one of the predefined interfaces in {@link 
org.apache.juneau.rest.config}.
+ * Provides support for JSON, XML, HTML, URL-Encoding, UON, XML, and 
MessagePack.  See {@link BasicUniversalConfig}
+ * for details.
  *
  * <p>
  * Implements the basic REST endpoints defined in {@link BasicRestOperations}.
@@ -45,7 +44,7 @@ import org.apache.juneau.http.response.*;
  * </ul>
  */
 @Rest
-public abstract class BasicRestObject extends RestObject implements 
BasicRestOperations, BasicJsonConfig {
+public abstract class BasicRestObject extends RestObject implements 
BasicRestOperations, BasicUniversalConfig {
 
        
//-----------------------------------------------------------------------------------------------------------------
        // BasicRestConfig methods
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
index 9d6ffddde..03b6e0b0b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestObjectGroup.java
@@ -26,9 +26,8 @@ import org.apache.juneau.rest.config.*;
  * Meant as a base class for child REST resources in servlet containers or 
Spring Boot environments.
  *
  * <p>
- * Provides basic JSON support by implementing the {@link BasicJsonConfig} 
interface.
- * Other language types can be added via the {@link Rest#serializers() 
@Rest(serializers)}/{@link Rest#parsers() @Rest(parsers)} annotations
- * or by adding one of the predefined interfaces in {@link 
org.apache.juneau.rest.config}.
+ * Provides support for JSON, XML, HTML, URL-Encoding, UON, XML, and 
MessagePack.  See {@link BasicUniversalConfig}
+ * for details.
  *
  * <p>
  * Implements the basic REST endpoints defined in {@link BasicRestOperations} 
and {@link BasicGroupOperations}.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServlet.java
index a9360ba5b..74b39cd2f 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServlet.java
@@ -30,9 +30,8 @@ import org.apache.juneau.rest.stats.*;
  * Meant as a base class for top-level REST resources in servlet containers.
  *
  * <p>
- * Provides basic JSON support by implementing the {@link BasicJsonConfig} 
interface.
- * Other language types can be added via the {@link Rest#serializers() 
@Rest(serializers)}/{@link Rest#parsers() @Rest(parsers)} annotations
- * or by adding one of the predefined interfaces in {@link 
org.apache.juneau.rest.config}.
+ * Provides support for JSON, XML, HTML, URL-Encoding, UON, XML, and 
MessagePack.  See {@link BasicUniversalConfig}
+ * for details.
  *
  * <p>
  * Implements the basic REST endpoints defined in {@link BasicRestOperations}.
@@ -45,7 +44,7 @@ import org.apache.juneau.rest.stats.*;
  * @serial exclude
  */
 @Rest
-public abstract class BasicRestServlet extends RestServlet implements 
BasicRestOperations, BasicJsonConfig {
+public abstract class BasicRestServlet extends RestServlet implements 
BasicRestOperations, BasicUniversalConfig {
        private static final long serialVersionUID = 1L;
 
        
//-----------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServletGroup.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServletGroup.java
index 6b51c87cf..046471922 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServletGroup.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/BasicRestServletGroup.java
@@ -24,9 +24,8 @@ import org.apache.juneau.rest.config.*;
  * Meant as a base class for top-level REST resources in servlet containers.
  *
  * <p>
- * Provides basic JSON support by implementing the {@link BasicJsonConfig} 
interface.
- * Other language types can be added via the {@link Rest#serializers() 
@Rest(serializers)}/{@link Rest#parsers() @Rest(parsers)} annotations
- * or by adding one of the predefined interfaces in {@link 
org.apache.juneau.rest.config}.
+ * Provides support for JSON, XML, HTML, URL-Encoding, UON, XML, and 
MessagePack.  See {@link BasicUniversalConfig}
+ * for details.
  *
  * <p>
  * Implements the basic REST endpoints defined in {@link BasicRestOperations} 
and {@link BasicGroupOperations}.
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
index 1c8312bf5..c69079834 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/servlet/RestServlet.java
@@ -280,7 +280,7 @@ public abstract class RestServlet extends HttpServlet {
         * <h5 class='figure'>Example:</h5>
         * <p class='bjava'>
         *      <ja>@Rest</ja>(...)
-        *      <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <jc>// Our database.</jc>
         *              <jk>private</jk> Map&lt;Integer,Pet&gt; <jf>petDB</jf>;
@@ -380,7 +380,7 @@ public abstract class RestServlet extends HttpServlet {
         * <h5 class='figure'>Example:</h5>
         * <p class='bjava'>
         *      <ja>@Rest</ja>(...)
-        *      <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> PetStoreResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <jc>// Our database.</jc>
         *              <jk>private</jk> Map&lt;Integer,Pet&gt; <jf>petDB</jf>;
@@ -420,7 +420,7 @@ public abstract class RestServlet extends HttpServlet {
         * <h5 class='figure'>Example:</h5>
         * <p class='bjava'>
         *      <ja>@Rest</ja>(...)
-        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet <jk>implements</jk> BasicUniversalConfig {
+        *      <jk>public class</jk> MyResource <jk>extends</jk> 
BasicRestServlet {
         *
         *              <jc>// Add a request attribute to all incoming 
requests.</jc>
         *              <ja>@Override</ja>
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_BeanConfig_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_BeanConfig_Test.java
index 67c28c777..947b90ee8 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_BeanConfig_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/RestOp_BeanConfig_Test.java
@@ -16,7 +16,6 @@ import static org.junit.runners.MethodSorters.*;
 
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.rest.client.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.servlet.*;
 import org.junit.*;
@@ -29,7 +28,7 @@ public class RestOp_BeanConfig_Test {
        // @BeanConfig(bpi)
        
//------------------------------------------------------------------------------------------------------------------
 
-       public static class A1 extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A1 extends BasicRestServlet {
                @RestGet
                @Bean(onClass=X1.class, properties="a,_b")
                public Object a() throws Exception {
@@ -71,7 +70,7 @@ public class RestOp_BeanConfig_Test {
        // @BeanConfig(bpx)
        
//------------------------------------------------------------------------------------------------------------------
 
-       public static class A2 extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A2 extends BasicRestServlet {
                @RestGet
                @Bean(on="X1", excludeProperties="a,_b")
                public Object a() throws Exception {
@@ -113,7 +112,7 @@ public class RestOp_BeanConfig_Test {
        // @BeanConfig(bpi) and @Bean(bpi)
        
//------------------------------------------------------------------------------------------------------------------
 
-       public static class A3 extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A3 extends BasicRestServlet {
                @RestGet
                @Bean(onClass=X2.class, p="a,_b")
                public Object a() throws Exception {
@@ -155,7 +154,7 @@ public class RestOp_BeanConfig_Test {
        // @BeanConfig(bpx) and @Bean(bpi)
        
//------------------------------------------------------------------------------------------------------------------
 
-       public static class A4 extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A4 extends BasicRestServlet {
                @RestGet
                @Bean(onClass=X2.class, xp="a,_b")
                public Object a() throws Exception {
@@ -197,7 +196,7 @@ public class RestOp_BeanConfig_Test {
        // @BeanConfig(bpi), meta-matching
        
//------------------------------------------------------------------------------------------------------------------
 
-       public static class A5 extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A5 extends BasicRestServlet {
                @RestGet
                @Bean(on="*", p="a")
                public Object a() throws Exception {
@@ -219,7 +218,7 @@ public class RestOp_BeanConfig_Test {
        // @BeanConfig(bpi), fully-qualified class name
        
//------------------------------------------------------------------------------------------------------------------
 
-       public static class A6 extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A6 extends BasicRestServlet {
                @RestGet
                
@Bean(on="org.apache.juneau.rest.annotation.RestOp_BeanConfig_Test$X1", p="a")
                public Object a() throws Exception {
@@ -241,7 +240,7 @@ public class RestOp_BeanConfig_Test {
        // @BeanConfig(bpi), negative matching
        
//------------------------------------------------------------------------------------------------------------------
 
-       public static class A7 extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A7 extends BasicRestServlet {
                @RestGet
                @Bean(on="MyBean", p="a")
                public Object a() throws Exception {
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
index 775bf8e6d..01298da9b 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
@@ -32,7 +32,6 @@ import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.http.part.*;
 import org.apache.juneau.marshaller.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.servlet.*;
 import org.apache.juneau.testutils.*;
@@ -58,7 +57,7 @@ public class RestClient_BasicCalls_Test {
        private static ABean bean = ABean.get();
 
        @Rest
-       public static class A extends BasicRestObject implements 
BasicUniversalConfig {
+       public static class A extends BasicRestObject {
                @RestOp(path="/bean")
                public ABean getBean() {
                        return bean;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
index eb1962d38..4041a355b 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
@@ -22,7 +22,6 @@ import java.io.*;
 import org.apache.juneau.collections.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.servlet.*;
 import org.junit.*;
@@ -31,7 +30,7 @@ import org.junit.*;
 public class RestClient_Config_OpenApi_Test {
 
        @Rest
-       public static class A extends BasicRestObject implements 
BasicUniversalConfig {
+       public static class A extends BasicRestObject {
                @RestPost
                public Reader echoBody(org.apache.juneau.rest.RestRequest req) 
throws IOException {
                        return req.getContent().getReader();
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Headers_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Headers_Test.java
index f0e808773..32b323f34 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Headers_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Headers_Test.java
@@ -26,7 +26,6 @@ import org.apache.juneau.http.header.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.marshaller.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.logger.*;
 import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.servlet.*;
@@ -62,7 +61,7 @@ public class RestClient_Headers_Test {
        private static ABean bean = ABean.get();
 
        @Rest(callLogger=CaptureLogger.class)
-       public static class A extends BasicRestObject implements 
BasicUniversalConfig {
+       public static class A extends BasicRestObject {
                @RestGet
                public String[] headers(org.apache.juneau.rest.RestRequest req) 
{
                        return 
req.getHeaders().getAll(req.getHeaderParam("Check").orElse(null)).stream().map(x
 -> x.getValue()).toArray(String[]::new);
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Marshalls_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Marshalls_Test.java
index 3dabf0d36..cc1e1f147 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Marshalls_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Marshalls_Test.java
@@ -21,7 +21,6 @@ import org.apache.juneau.http.annotation.Header;
 import org.apache.juneau.http.header.*;
 import org.apache.juneau.marshaller.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.servlet.*;
 import org.junit.*;
@@ -51,7 +50,7 @@ public class RestClient_Marshalls_Test {
        public static Bean bean = Bean.create();
 
        @Rest
-       public static class A extends BasicRestObject implements 
BasicUniversalConfig {
+       public static class A extends BasicRestObject {
                @RestPost
                public Bean a01(@Content Bean b, @Header("Accept") String 
accept, @Header("Content-Type") String ct, @Header("X-Accept") String xaccept, 
@Header("X-Content-Type") String xct) {
                        assertEquals("Accept doesn't 
match",nn(xaccept),nn(accept));
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/helper/Hyperlink_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/rest/helper/Hyperlink_Test.java
index b52952d64..971c38f5b 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/helper/Hyperlink_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/helper/Hyperlink_Test.java
@@ -19,7 +19,6 @@ import java.util.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.beans.*;
 import org.apache.juneau.rest.client.*;
-import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.servlet.*;
 import org.junit.*;
@@ -29,7 +28,7 @@ import org.junit.*;
 public class Hyperlink_Test {
 
        @Rest
-       public static class A extends BasicRestServlet implements 
BasicUniversalConfig {
+       public static class A extends BasicRestServlet {
                @RestGet
                public Hyperlink a() {
                        return new Hyperlink("foo", "bar");

Reply via email to