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 5df6b06  Javadocs and RestResponse refactoring.
5df6b06 is described below

commit 5df6b0610bbdec8b196ba2c55068e8d7ce85b87a
Author: JamesBognar <[email protected]>
AuthorDate: Sun Nov 7 16:54:31 2021 -0500

    Javadocs and RestResponse refactoring.
---
 .../03.RestOpAnnotatedMethods.html                 |   5 +-
 ...tmRequestBody.html => 01.RestmRequestBody.html} |   0
 .../01.RestmRestRequest.html                       |  43 -------
 ...estHeaders.html => 02.RestmRequestHeaders.html} |   0
 .../02.RestmRestResponse.html                      |  37 ------
 ...ributes.html => 03.RestmRequestAttributes.html} |   0
 ...RequestQuery.html => 04.RestmRequestQuery.html} |   0
 ...tFormData.html => 05.RestmRequestFormData.html} |   0
 ...athMatch.html => 06.RestmRequestPathMatch.html} |   0
 ...erResource.html => 07.RestmReaderResource.html} |   0
 ...amResource.html => 08.RestmStreamResource.html} |   0
 ...11.RestmMatchers.html => 09.RestmMatchers.html} |   0
 ...onses.html => 10.RestmPredefinedResponses.html} |   0
 ...ans.html => 11.RestmPredefinedHelperBeans.html} |   0
 juneau-doc/src/main/javadoc/overview.html          | 127 ++++++-------------
 juneau-doc/src/main/javadoc/resources/docs.txt     |   2 -
 .../java/org/apache/juneau/rest/RestRequest.java   | 115 +++++++++++++++---
 .../java/org/apache/juneau/rest/RestResponse.java  | 134 ++++++++++-----------
 .../apache/juneau/rest/args/ResponseHeaderArg.java |  21 ++--
 .../juneau/rest/annotation/Rest_RVars_Test.java    |   6 +-
 .../client/RestClient_Config_RestClient_Test.java  |   2 +-
 21 files changed, 216 insertions(+), 276 deletions(-)

diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html
index a4d003c..f91af3c 100644
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html
+++ 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods.html
@@ -607,4 +607,7 @@
        }
 </p>
 
-
+<ul class='seealso'>
+       <li class='jc'>{@link oajr.RestRequest}
+       <li class='jc'>{@link oajr.RestResponse}
+</ul>
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestBody.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRequestBody.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestBody.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRequestBody.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRestRequest.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRestRequest.html
deleted file mode 100644
index 00d0200..0000000
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/01.RestmRestRequest.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!--
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *  
- *  http://www.apache.org/licenses/LICENSE-2.0
- *  
- * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 
or implied.  See the License for the
- * specific language governing permissions and limitations under the License.
- 
***************************************************************************************************************************/
- -->
-
-{title:'RestRequest', flags:'todo'}
-
-<p>
-       The {@link oajr.RestRequest} object is an extension of the 
<l>HttpServletRequest</l> class
-       with various built-in convenience methods for use in building REST 
interfaces.
-       It can be accessed by passing it as a parameter on your REST Java 
method:
-</p>
-<p class='bpcode w800'>
-       <ja>@RestPost</ja>(...)
-       <jk>public</jk> Object myMethod(RestRequest <jv>req</jv>) {...}         
        
-</p>
-<p>
-       There are many useful methods on this object, but the main ones are 
shown below:
-</p>
-<ul class='javatree'>
-       <li class='jc'><c>{@link oajr.RestRequest} <jk>extends</jk> 
HttpServletRequest</c>
-       <ul>
-               <li class='jm'>{@link oajr.RestRequest#getHeaders() 
getHeaders()} - HTTP request headers.
-               <li class='jm'>{@link oajr.RestRequest#getQueryParams() 
getQueryParams()} - Query parameters.
-               <li class='jm'>{@link oajr.RestRequest#getFormParams() 
getFormParams()} - Form-data parameters.
-               <li class='jm'>{@link oajr.RestRequest#getPathParams() 
getPathParams()} - Path match variables.
-               <li class='jm'>{@link oajr.RestRequest#getBody() getBody()} - 
HTTP request body.
-               <li class='jm'>{@link oajr.RestRequest#getSwagger() 
getSwagger()} - Generated Swagger information.
-               <li class='jm'>{@link oajr.RestRequest#getConfig() getConfig()} 
- External configuration API.
-               <li class='jm'>{@link oajr.RestRequest#getVarResolverSession() 
getVarResolverSession()} - String variable resolver.
-               <li class='jm'>{@link oajr.RestRequest#getMessages() 
getMessages()} - Localized messages.
-       </ul>
-</ul>
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestHeaders.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRequestHeaders.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestHeaders.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRequestHeaders.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRestResponse.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRestResponse.html
deleted file mode 100644
index ca32503..0000000
--- 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/02.RestmRestResponse.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!--
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *  
- *  http://www.apache.org/licenses/LICENSE-2.0
- *  
- * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 
or implied.  See the License for the
- * specific language governing permissions and limitations under the License.
- 
***************************************************************************************************************************/
- -->
-
-{title:'RestResponse', flags:'todo'}
-
-<p>
-       The {@link oajr.RestResponse} object is an extension of the 
<l>HttpServletResponse</l> class
-       with various built-in convenience methods for use in building REST 
interfaces.
-       It can be accessed by passing it as a parameter on your REST Java 
method:
-</p>
-<p class='bpcode w800'>
-       <ja>@RestPost</ja>(...)
-       <jk>public</jk> Object myMethod(RestResponse <jv>req</jv>) {...}        
                
-</p>
-<p>
-       Some important methods on this class are:
-</p>
-<ul class='javatree'>
-       <li class='jc'><c>{@link oajr.RestResponse} <jk>extends</jk> 
HttpServletResponse</c>
-       <ul>
-               <li class='jm'>{@link oajr.RestResponse#setOutput(Object) 
setOutput(Object)} - Set response output programmatically.
-               <li class='jm'>{@del RestResponse#getHtmlDocBuilder()} - Set 
HTTP page contents programmatically.
-               <li class='jm'>{@link oajr.RestResponse#getDirectWriter(String) 
getDirectWriter(String)} - Direct access to underlying response writer.
-       </ul>
-</ul>
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestAttributes.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestAttributes.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestAttributes.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/03.RestmRequestAttributes.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestQuery.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestQuery.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestQuery.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/04.RestmRequestQuery.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmRequestFormData.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestFormData.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmRequestFormData.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/05.RestmRequestFormData.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmRequestPathMatch.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestPathMatch.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmRequestPathMatch.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/06.RestmRequestPathMatch.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmReaderResource.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmReaderResource.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmReaderResource.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/07.RestmReaderResource.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmStreamResource.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmStreamResource.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmStreamResource.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/08.RestmStreamResource.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmMatchers.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmMatchers.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmMatchers.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/09.RestmMatchers.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/12.RestmPredefinedResponses.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmPredefinedResponses.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/12.RestmPredefinedResponses.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/10.RestmPredefinedResponses.html
diff --git 
a/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/13.RestmPredefinedHelperBeans.html
 
b/juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmPredefinedHelperBeans.html
similarity index 100%
rename from 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/13.RestmPredefinedHelperBeans.html
rename to 
juneau-doc/docs/Topics/06.juneau-rest-server/03.RestOpAnnotatedMethods/11.RestmPredefinedHelperBeans.html
diff --git a/juneau-doc/src/main/javadoc/overview.html 
b/juneau-doc/src/main/javadoc/overview.html
index 2331fc7..1237842 100644
--- a/juneau-doc/src/main/javadoc/overview.html
+++ b/juneau-doc/src/main/javadoc/overview.html
@@ -349,8 +349,6 @@
                </ol>
                <li><p><a class='doclink' 
href='#juneau-rest-server.RestOpAnnotatedMethods'>@RestOp-Annotated 
Methods</a><span class='update'>updated: <b>9.0.0</b></span></p>
                <ol>
-                       <li><p><a class='doclink' 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest'>RestRequest</a><span
 class='update'><b><red>todo</red></b></span></p>
-                       <li><p><a class='doclink' 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse'>RestResponse</a><span
 class='update'><b><red>todo</red></b></span></p>
                        <li><p><a class='doclink' 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody'>RequestBody</a><span
 class='update'><b><red>todo</red></b></span></p>
                        <li><p><a class='doclink' 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders'>RequestHeaders</a><span
 class='update'><b><red>todo</red></b></span></p>
                        <li><p><a class='doclink' 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes'>RequestAttributes</a><span
 class='update'>created: 8.1.0, <b><red>todo</red></b></span></p>
@@ -15478,68 +15476,15 @@
        }
 </p>
 
-<!-- 
====================================================================================================
 -->
-
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest'>6.3.1 - 
RestRequest</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.1 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest -->
-<p>
-       The {@link org.apache.juneau.rest.RestRequest} object is an extension 
of the <l>HttpServletRequest</l> class
-       with various built-in convenience methods for use in building REST 
interfaces.
-       It can be accessed by passing it as a parameter on your REST Java 
method:
-</p>
-<p class='bpcode w800'>
-       <ja>@RestPost</ja>(...)
-       <jk>public</jk> Object myMethod(RestRequest <jv>req</jv>) {...}         
        
-</p>
-<p>
-       There are many useful methods on this object, but the main ones are 
shown below:
-</p>
-<ul class='javatree'>
-       <li class='jc'><c>{@link org.apache.juneau.rest.RestRequest} 
<jk>extends</jk> HttpServletRequest</c>
-       <ul>
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getHeaders() getHeaders()} - HTTP request 
headers.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getQueryParams() getQueryParams()} - Query 
parameters.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getFormParams() getFormParams()} - Form-data 
parameters.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getPathParams() getPathParams()} - Path 
match variables.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getBody() getBody()} - HTTP request body.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getSwagger() getSwagger()} - Generated 
Swagger information.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getConfig() getConfig()} - External 
configuration API.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getVarResolverSession() 
getVarResolverSession()} - String variable resolver.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestRequest#getMessages() getMessages()} - Localized 
messages.
-       </ul>
-</ul>
-</div><!-- END: 6.3.1 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest -->
-
-<!-- 
====================================================================================================
 -->
-
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse'>6.3.2 - 
RestResponse</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.2 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse -->
-<p>
-       The {@link org.apache.juneau.rest.RestResponse} object is an extension 
of the <l>HttpServletResponse</l> class
-       with various built-in convenience methods for use in building REST 
interfaces.
-       It can be accessed by passing it as a parameter on your REST Java 
method:
-</p>
-<p class='bpcode w800'>
-       <ja>@RestPost</ja>(...)
-       <jk>public</jk> Object myMethod(RestResponse <jv>req</jv>) {...}        
                
-</p>
-<p>
-       Some important methods on this class are:
-</p>
-<ul class='javatree'>
-       <li class='jc'><c>{@link org.apache.juneau.rest.RestResponse} 
<jk>extends</jk> HttpServletResponse</c>
-       <ul>
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestResponse#setOutput(Object) setOutput(Object)} - Set 
response output programmatically.
-               <li class='jm'>{@del RestResponse#getHtmlDocBuilder()} - Set 
HTTP page contents programmatically.
-               <li class='jm'>{@link 
org.apache.juneau.rest.RestResponse#getDirectWriter(String) 
getDirectWriter(String)} - Direct access to underlying response writer.
-       </ul>
+<ul class='seealso'>
+       <li class='jc'>{@link org.apache.juneau.rest.RestRequest}
+       <li class='jc'>{@link org.apache.juneau.rest.RestResponse}
 </ul>
-</div><!-- END: 6.3.2 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody'>6.3.3 - 
RequestBody</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.3 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody'>6.3.1 - 
RequestBody</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.1 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
 <p>
        The {@link org.apache.juneau.rest.RequestBody} object is the API for 
accessing the body of an HTTP request.
        It can be accessed by passing it as a parameter on your REST Java 
method:
@@ -15576,12 +15521,12 @@
 <ul class='seealso'>
        <li class='ja'>{@link org.apache.juneau.http.annotation.Body}
 </ul>
-</div><!-- END: 6.3.3 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
+</div><!-- END: 6.3.1 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestBody -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders'>6.3.4 - 
RequestHeaders</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.4 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders'>6.3.2 - 
RequestHeaders</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.2 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
 <p>
        The {@link org.apache.juneau.rest.RequestHeaders} object is the API for 
accessing the headers of an HTTP request.
        It can be accessed by passing it as a parameter on your REST Java 
method:
@@ -15623,12 +15568,12 @@
 <ul class='seealso'>
        <li class='ja'>{@link org.apache.juneau.http.annotation.Header}
 </ul>
-</div><!-- END: 6.3.4 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
+</div><!-- END: 6.3.2 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes'>6.3.5 - 
RequestAttributes</a><span class='update'>created: 8.1.0, 
<b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.5 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes'>6.3.3 - 
RequestAttributes</a><span class='update'>created: 8.1.0, 
<b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.3 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
 <p>
        The {@link org.apache.juneau.rest.RequestAttributes} object is the API 
for accessing the standard servlet attributes on an HTTP request 
        (i.e. {@link javax.servlet.ServletRequest#getAttribute(String)}.
@@ -15658,12 +15603,12 @@
        Modifications made to request attributes through the 
<c>RequestAttributes</c> bean are automatically reflected in
        the underlying servlet request attributes making it possible to mix the 
usage of both APIs.
 </p>
-</div><!-- END: 6.3.5 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
+</div><!-- END: 6.3.3 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestAttributes -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery'>6.3.6 - 
RequestQuery</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.6 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery'>6.3.4 - 
RequestQuery</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.4 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
 <p>
        The {@link org.apache.juneau.rest.RequestQuery} object is the API for 
accessing the GET query parameters of an HTTP request.
        It can be accessed by passing it as a parameter on your REST Java 
method:
@@ -15710,12 +15655,12 @@
        <li class='ja'>{@link org.apache.juneau.http.annotation.Query}
        <li class='ja'>{@link org.apache.juneau.http.annotation.HasQuery}
 </ul>
-</div><!-- END: 6.3.6 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
+</div><!-- END: 6.3.4 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData'>6.3.7 - 
RequestFormData</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.7 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData'>6.3.5 - 
RequestFormData</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.5 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
 <p>
        The {@link org.apache.juneau.rest.RequestFormData} object is the API 
for accessing the HTTP request body as form data.
        It can be accessed by passing it as a parameter on your REST Java 
method:
@@ -15757,12 +15702,12 @@
        <li class='ja'>{@link org.apache.juneau.http.annotation.FormData}
        <li class='ja'>{@link org.apache.juneau.http.annotation.HasFormData}
 </ul>
-</div><!-- END: 6.3.7 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
+</div><!-- END: 6.3.5 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFormData -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch'>6.3.8 - 
RequestPathMatch</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.8 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch'>6.3.6 - 
RequestPathMatch</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.6 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
 <p>
        The {@link org.apache.juneau.rest.RequestPath} object is the API for 
accessing the matched variables
        and remainder on the URL path.
@@ -15801,12 +15746,12 @@
 <ul class='seealso'>
        <li class='ja'>{@link org.apache.juneau.http.annotation.Path}
 </ul>
-</div><!-- END: 6.3.8 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
+</div><!-- END: 6.3.6 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource'>6.3.9 - 
ReaderResource</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.9 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource'>6.3.7 - 
ReaderResource</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.7 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
 <p>
        The {@del ReaderResource} class is a convenience object for defining 
thread-safe
        reusable character-based responses.
@@ -15832,12 +15777,12 @@
                        .build();
        }
 </p>
-</div><!-- END: 6.3.9 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
+</div><!-- END: 6.3.7 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmReaderResource -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource'>6.3.10 - 
StreamResource</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.10 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource'>6.3.8 - 
StreamResource</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.8 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
 <p>
        The {@del org.apache.juneau.http.StreamResource} class is the binary 
equivalent to the {@del ReaderResource} object.
        In essence, it's a container for binary data with optional response 
headers.
@@ -15859,12 +15804,12 @@
                        .build();
        }
 </p>
-</div><!-- END: 6.3.10 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
+</div><!-- END: 6.3.8 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers'>6.3.11 - 
@RestOp(matchers)</a><span class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.11 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers'>6.3.9 - 
@RestOp(matchers)</a><span class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.9 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
 <p>
        {@link org.apache.juneau.rest.RestMatcher RestMatchers} are used to 
allow multiple Java methods to be 
        tied to the same HTTP method and path, but differentiated by some 
request attribute such as a specific 
@@ -15918,12 +15863,12 @@
        <li class='jc'>{@link 
org.apache.juneau.rest.matchers.MultipartFormDataMatcher}
        <li class='jc'>{@link 
org.apache.juneau.rest.matchers.UrlEncodedFormMatcher}
 </ul>
-</div><!-- END: 6.3.11 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
+</div><!-- END: 6.3.9 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmMatchers -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses'>6.3.12 
- Predefined Responses</a><span 
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.12 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses'>6.3.10 
- Predefined Responses</a><span 
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.10 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
 <p>
        Predefined response beans are provided for all standard HTTP responses.
        These can be used as-is or extended to provide customized HTTP 
responses. 
@@ -16033,12 +15978,12 @@
                <jk>return new</jk> SeeOther(<js>"servlet:/pets"</js>);  
        }
 </p>
-</div><!-- END: 6.3.12 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
+</div><!-- END: 6.3.10 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedResponses -->
 
 <!-- 
====================================================================================================
 -->
 
-<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans'>6.3.13
 - Predefined Helper Beans</a><span 
class='update'><b><red>todo</red></b></span></h4>
-<div class='topic'><!-- START: 6.3.13 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
+<h4 class='topic' onclick='toggle(this)'><a 
href='#juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans' 
id='juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans'>6.3.11
 - Predefined Helper Beans</a><span 
class='update'><b><red>todo</red></b></span></h4>
+<div class='topic'><!-- START: 6.3.11 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
 <p>
        The {@link org.apache.juneau.rest.helper} package contains several 
predefined beans to help when constructing
        REST interfaces.
@@ -16248,7 +16193,7 @@
 <p>
        One distinction is that the former defines the description 
<js>"Redirect to servlet root"</js> in the generated Swagger documentation.
 </p>
-</div><!-- END: 6.3.13 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
+</div><!-- END: 6.3.11 - 
juneau-rest-server.RestOpAnnotatedMethods.RestmPredefinedHelperBeans -->
 </div><!-- END: 6.3 - juneau-rest-server.RestOpAnnotatedMethods -->
 
 <!-- 
====================================================================================================
 -->
diff --git a/juneau-doc/src/main/javadoc/resources/docs.txt 
b/juneau-doc/src/main/javadoc/resources/docs.txt
index bda008a..74d3f1e 100644
--- a/juneau-doc/src/main/javadoc/resources/docs.txt
+++ b/juneau-doc/src/main/javadoc/resources/docs.txt
@@ -295,8 +295,6 @@ RestmRequestFormData = 
#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestFo
 RestmRequestHeaders = 
#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestHeaders, Overview > 
juneau-rest-server > @RestOp-Annotated Methods > RequestHeaders
 RestmRequestPathMatch = 
#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestPathMatch, Overview > 
juneau-rest-server > @RestOp-Annotated Methods > RequestPathMatch
 RestmRequestQuery = 
#juneau-rest-server.RestOpAnnotatedMethods.RestmRequestQuery, Overview > 
juneau-rest-server > @RestOp-Annotated Methods > RequestQuery
-RestmRestRequest = 
#juneau-rest-server.RestOpAnnotatedMethods.RestmRestRequest, Overview > 
juneau-rest-server > @RestOp-Annotated Methods > RestRequest
-RestmRestResponse = 
#juneau-rest-server.RestOpAnnotatedMethods.RestmRestResponse, Overview > 
juneau-rest-server > @RestOp-Annotated Methods > RestResponse
 RestmStreamResource = 
#juneau-rest-server.RestOpAnnotatedMethods.RestmStreamResource, Overview > 
juneau-rest-server > @RestOp-Annotated Methods > StreamResource
 Security = #Security, Overview > Security Best-Practices
 SecurityMarshall = #Security.SecurityMarshall, Overview > Security 
Best-Practices > juneau-marshall
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index ef6c074..9f5bd54 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -87,24 +87,107 @@ import org.apache.juneau.utils.*;
  * Represents an HTTP request for a REST resource.
  *
  * <p>
- * Equivalent to {@link HttpServletRequest} except with some additional 
convenience methods.
+ *     The {@link RestRequest} object is an extension of the 
<l>HttpServletRequest</l> class
+ *     with various built-in convenience methods for use in building REST 
interfaces.
+ *     It can be accessed by passing it as a parameter on your REST Java 
method:
+ * </p>
  *
- * <p>
- * For reference, given the URL 
<js>"http://localhost:9080/contextRoot/servletPath/foo?bar=baz#qux";</js>, the
- * following methods return the following values....
- * <table class='styled'>
- *     <tr><th>Method</th><th>Value</th></tr>
- *     <tr><td>{@code getContextPath()}</td><td>{@code /contextRoot}</td></tr>
- *     <tr><td>{@code getPathInfo()}</td><td>{@code /foo}</td></tr>
- *     <tr><td>{@code getPathTranslated()}</td><td>{@code 
path-to-deployed-war-on-filesystem/foo}</td></tr>
- *     <tr><td>{@code getQueryString()}</td><td>{@code bar=baz}</td></tr>
- *     <tr><td>{@code getRequestURI()}</td><td>{@code 
/contextRoot/servletPath/foo}</td></tr>
- *     <tr><td>{@code getRequestURL()}</td><td>{@code 
http://localhost:9080/contextRoot/servletPath/foo}</td></tr>
- *     <tr><td>{@code getServletPath()}</td><td>{@code /servletPath}</td></tr>
- * </table>
+ * <p class='bcode w800'>
+ *     <ja>@RestPost</ja>(...)
+ *     <jk>public</jk> Object myMethod(RestRequest <jv>req</jv>) {...}
+ * </p>
  *
- * <ul class='seealso'>
- *     <li class='link'>{@doc RestmRestRequest}
+ * <p>
+ *     The primary methods on this class are shown below:
+ * </p>
+ * <ul class='javatree'>
+ *     <li class='jc'>{@link RestRequest}
+ *     <ul class='spaced-list'>
+ *             <li>Methods for accessing the request body:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestRequest#getBody() getBody()}
+ *                     <li class='jm'>{@link RestRequest#getInputStream() 
getInputStream()}
+ *                     <li class='jm'>{@link RestRequest#getReader() 
getReader()}
+ *             </ul>
+ *             <li>Methods for accessing HTTP parts:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link 
RestRequest#containsFormParam(String) containsFormParam(String)}
+ *                     <li class='jm'>{@link 
RestRequest#containsHeader(String) containsHeader(String)}
+ *                     <li class='jm'>{@link 
RestRequest#containsQueryParam(String) containsQueryParam(String)}
+ *                     <li class='jm'>{@link RestRequest#getHeader(Class) 
getHeader(Class)}
+ *                     <li class='jm'>{@link RestRequest#getHeader(String) 
getHeader(String)}
+ *                     <li class='jm'>{@link RestRequest#getHeaders() 
getHeaders()}
+ *                     <li class='jm'>{@link RestRequest#getFormParam(Class) 
getFormParam(Class)}
+ *                     <li class='jm'>{@link RestRequest#getFormParam(String) 
getFormParam(String)}
+ *                     <li class='jm'>{@link RestRequest#getFormParams() 
getFormParams()}
+ *                     <li class='jm'>{@link RestRequest#getPathParam(Class) 
getPathParam(Class)}
+ *                     <li class='jm'>{@link RestRequest#getPathParam(String) 
getPathParam(String)}
+ *                     <li class='jm'>{@link RestRequest#getPathParams() 
getPathParams()}
+ *                     <li class='jm'>{@link RestRequest#getPathRemainder() 
getPathRemainder()}
+ *                     <li class='jm'>{@link RestRequest#getQueryParam(Class) 
getQueryParam(Class)}
+ *                     <li class='jm'>{@link RestRequest#getQueryParam(String) 
getQueryParam(String)}
+ *                     <li class='jm'>{@link RestRequest#getQueryParams() 
getQueryParams()}
+ *                     <li class='jm'>{@link RestRequest#getQueryString() 
getQueryString()}
+ *             </ul>
+ *             <li>Methods for localization:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestRequest#getLocale() 
getLocale()}
+ *                     <li class='jm'>{@link 
RestRequest#getMessage(String,Object...) getMessage(String,Object...)}
+ *                     <li class='jm'>{@link RestRequest#getMessages() 
getMessages()}
+ *                     <li class='jm'>{@link RestRequest#getTimeZone() 
getTimeZone()}
+ *             </ul>
+ *             <li>Methods for accessing static files:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestRequest#getFileFinder() 
getFileFinder()}
+ *                     <li class='jm'>{@link RestRequest#getStaticFiles() 
getStaticFiles()}
+ *                     <li class='jm'>{@link 
RestRequest#getVarResolverSession() getVarResolverSession()}
+ *             </ul>
+ *             <li>Methods for assertions:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestRequest#assertBody() 
assertBody()}
+ *                     <li class='jm'>{@link RestRequest#assertCharset() 
assertCharset()}
+ *                     <li class='jm'>{@link 
RestRequest#assertFormParam(String) assertFormParam(String)}
+ *                     <li class='jm'>{@link RestRequest#assertHeader(String) 
assertHeader(String)}
+ *                     <li class='jm'>{@link 
RestRequest#assertQueryParam(String) assertQueryParam(String)}
+ *                     <li class='jm'>{@link RestRequest#assertRequestLine() 
assertRequestLine()}
+ *             </ul>
+ *             <li>Other:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestRequest#getAttribute(String) 
getAttribute(String)}
+ *                     <li class='jm'>{@link RestRequest#getAttributes() 
getAttributes()}
+ *                     <li class='jm'>{@link RestRequest#getAuthorityPath() 
getAuthorityPath()}
+ *                     <li class='jm'>{@link RestRequest#getBeanSession() 
getBeanSession()}
+ *                     <li class='jm'>{@link RestRequest#getCharset() 
getCharset()}
+ *                     <li class='jm'>{@link RestRequest#getConfig() 
getConfig()}
+ *                     <li class='jm'>{@link RestRequest#getContext() 
getContext()}
+ *                     <li class='jm'>{@link RestRequest#getContextPath() 
getContextPath()}
+ *                     <li class='jm'>{@link 
RestRequest#getHttpServletRequest() getHttpServletRequest()}
+ *                     <li class='jm'>{@link RestRequest#getMethod() 
getMethod()}
+ *                     <li class='jm'>{@link RestRequest#getOpContext() 
getOpContext()}
+ *                     <li class='jm'>{@link RestRequest#getOperationSwagger() 
getOperationSwagger()}
+ *                     <li class='jm'>{@link 
RestRequest#getPartParserSession() getPartParserSession()}
+ *                     <li class='jm'>{@link 
RestRequest#getPartSerializerSession() getPartSerializerSession()}
+ *                     <li class='jm'>{@link RestRequest#getPathInfo() 
getPathInfo()}
+ *                     <li class='jm'>{@link RestRequest#getProtocolVersion() 
getProtocolVersion()}
+ *                     <li class='jm'>{@link RestRequest#getRequest(Class) 
getRequest(Class)}
+ *                     <li class='jm'>{@link RestRequest#getRequestLine() 
getRequestLine()}
+ *                     <li class='jm'>{@link RestRequest#getRequestURI() 
getRequestURI()}
+ *                     <li class='jm'>{@link RestRequest#getRequestURL() 
getRequestURL()}
+ *                     <li class='jm'>{@link RestRequest#getServletPath() 
getServletPath()}
+ *                     <li class='jm'>{@link RestRequest#getSession() 
getSession()}
+ *                     <li class='jm'>{@link RestRequest#getSwagger() 
getSwagger()}
+ *                     <li class='jm'>{@link RestRequest#getUriContext() 
getUriContext()}
+ *                     <li class='jm'>{@link RestRequest#getUriResolver() 
getUriResolver()}
+ *                     <li class='jm'>{@link RestRequest#isDebug() isDebug()}
+ *                     <li class='jm'>{@link RestRequest#isPlainText() 
isPlainText()}
+ *                     <li class='jm'>{@link RestRequest#isUserInRole(String) 
isUserInRole(String)}
+ *                     <li class='jm'>{@link 
RestRequest#setAttribute(String,Object) setAttribute(String,Object)}
+ *                     <li class='jm'>{@link RestRequest#setCharset(Charset) 
setCharset(Charset)}
+ *                     <li class='jm'>{@link RestRequest#setDebug() setDebug()}
+ *                     <li class='jm'>{@link 
RestRequest#setException(Throwable) setException(Throwable)}
+ *                     <li class='jm'>{@link RestRequest#setNoTrace() 
setNoTrace()}
+ *             </ul>
+ *     </ul>
  * </ul>
  */
 @SuppressWarnings({ "unchecked", "unused" })
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
index acc4570..6496634 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestResponse.java
@@ -41,23 +41,63 @@ import org.apache.juneau.serializer.*;
  * Represents an HTTP response for a REST resource.
  *
  * <p>
- * Essentially an extended {@link HttpServletResponse} with some special 
convenience methods that allow you to easily
- * output POJOs as responses.
- *
- * <p>
- * Since this class extends {@link HttpServletResponse}, developers are free 
to use these convenience methods, or
- * revert to using lower level methods like any other servlet response.
+ *     The {@link RestResponse} object is an extension of the 
<l>HttpServletResponse</l> class
+ *     with various built-in convenience methods for use in building REST 
interfaces.
+ *     It can be accessed by passing it as a parameter on your REST Java 
method:
+ * </p>
  *
- * <h5 class='section'>Example:</h5>
  * <p class='bcode w800'>
- *     <ja>@RestGet</ja>
- *     <jk>public void</jk> doGet(RestResponse <jv>res</jv>) {
- *             <jv>res</jv>.setOutput(<js>"Simple string response"</js>);
- *     }
+ *     <ja>@RestPost</ja>(...)
+ *     <jk>public</jk> Object myMethod(RestResponse <jv>res</jv>) {...}
  * </p>
  *
- * <ul class='seealso'>
- *     <li class='link'>{@doc RestmRestResponse}
+ * <p>
+ *     The primary methods on this class are shown below:
+ * </p>
+ * <ul class='javatree'>
+ *     <li class='jc'>{@link RestResponse}
+ *     <ul class='spaced-list'>
+ *             <li>Methods for setting response headers:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestResponse#addHeader(Header) 
addHeader(Header)}
+ *                     <li class='jm'>{@link 
RestResponse#addHeader(String,String) addHeader(String,String)}
+ *                     <li class='jm'>{@link 
RestResponse#containsHeader(String) containsHeader(String)}
+ *                     <li class='jm'>{@link RestResponse#getHeader(String) 
getHeader(String)}
+ *                     <li class='jm'>{@link 
RestResponse#setCharacterEncoding(String) setCharacterEncoding(String)}
+ *                     <li class='jm'>{@link 
RestResponse#setContentType(String) setContentType(String)}
+ *                     <li class='jm'>{@link RestResponse#setHeader(Header) 
setHeader(Header)}
+ *                     <li class='jm'>{@link 
RestResponse#setHeader(HttpPartSchema,String,Object) 
setHeader(HttpPartSchema,String,Object)}
+ *                     <li class='jm'>{@link 
RestResponse#setHeader(String,Object) setHeader(String,Object)}
+ *                     <li class='jm'>{@link 
RestResponse#setHeader(String,String) setHeader(String,String)}
+ *                     <li class='jm'>{@link 
RestResponse#setMaxHeaderLength(int) setMaxHeaderLength(int)}
+ *                     <li class='jm'>{@link RestResponse#setSafeHeaders() 
setSafeHeaders()}
+ *             </ul>
+ *             <li>Methods for setting response bodies:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestResponse#flushBuffer() 
flushBuffer()}
+ *                     <li class='jm'>{@link 
RestResponse#getDirectWriter(String) getDirectWriter(String)}
+ *                     <li class='jm'>{@link 
RestResponse#getNegotiatedOutputStream() getNegotiatedOutputStream()}
+ *                     <li class='jm'>{@link 
RestResponse#getNegotiatedWriter() getNegotiatedWriter()}
+ *                     <li class='jm'>{@link RestResponse#getSerializerMatch() 
getSerializerMatch()}
+ *                     <li class='jm'>{@link RestResponse#getWriter() 
getWriter()}
+ *                     <li class='jm'>{@link 
RestResponse#sendPlainText(String) sendPlainText(String)}
+ *                     <li class='jm'>{@link RestResponse#sendRedirect(String) 
sendRedirect(String)}
+ *                     <li class='jm'>{@link 
RestResponse#setBodySchema(HttpPartSchema) setBodySchema(HttpPartSchema)}
+ *                     <li class='jm'>{@link RestResponse#setOutput(Object) 
setOutput(Object)}
+ *                     <li class='jm'>{@link 
RestResponse#setResponseBeanMeta(ResponseBeanMeta) 
setResponseBeanMeta(ResponseBeanMeta)}
+ *                     <li class='jm'>{@link 
RestResponse#setException(Throwable) setException(Throwable)}
+ *             </ul>
+ *             <li>Other:
+ *             <ul class='javatreec'>
+ *                     <li class='jm'>{@link RestResponse#getAttributes() 
getAttributes()}
+ *                     <li class='jm'>{@link RestResponse#getContext() 
getContext()}
+ *                     <li class='jm'>{@link RestResponse#getOpContext() 
getOpContext()}
+ *                     <li class='jm'>{@link 
RestResponse#setAttribute(String,Object) setAttribute(String,Object)}
+ *                     <li class='jm'>{@link RestResponse#setDebug() 
setDebug()}
+ *                     <li class='jm'>{@link RestResponse#setNoTrace() 
setNoTrace()}
+ *                     <li class='jm'>{@link RestResponse#setStatus(int) 
setStatus(int)}
+ *             </ul>
+ *     </ul>
  * </ul>
  */
 public final class RestResponse {
@@ -199,7 +239,7 @@ public final class RestResponse {
         * @param value The property value.
         * @return This object.
         */
-       public RestResponse attr(String name, Object value) {
+       public RestResponse setAttribute(String name, Object value) {
                request.setAttribute(name, value);
                return this;
        }
@@ -545,22 +585,8 @@ public final class RestResponse {
         * @throws SchemaValidationException Header failed schema validation.
         * @throws SerializeException Header could not be serialized.
         */
-       public RestResponse header(String name, Object value) throws 
SchemaValidationException, SerializeException {
-               return header(null, null, name, value);
-       }
-
-       /**
-        * Sets a header from a {@link NameValuePair}.
-        *
-        * <p>
-        * Note that this bypasses the part serializer and set the header value 
directly.
-        *
-        * @param pair The header to set.  Nulls are ignored.
-        * @return This object.
-        */
-       public RestResponse header(NameValuePair pair) {
-               if (pair != null)
-                       setHeader(pair.getName(), pair.getValue());
+       public RestResponse setHeader(String name, Object value) throws 
SchemaValidationException, SerializeException {
+               setHeader(name, 
request.getPartSerializerSession().serialize(HEADER, null, value));
                return this;
        }
 
@@ -579,30 +605,8 @@ public final class RestResponse {
         * @throws SchemaValidationException Header failed schema validation.
         * @throws SerializeException Header could not be serialized.
         */
-       public RestResponse header(HttpPartSchema schema, String name, Object 
value) throws SchemaValidationException, SerializeException {
-               return header(null, schema, name, value);
-       }
-
-       /**
-        * Sets a header on the request.
-        * @param serializer
-        *      The serializer to use to serialize the header, or <jk>null</jk> 
to use the part serializer on the request.
-        * @param schema
-        *      The schema to use to serialize the header, or <jk>null</jk> to 
use the default schema.
-        * @param name The header name.
-        * @param value The header value.
-        *      <ul>
-        *              <li>Can be any POJO.
-        *              <li>Converted to a string using the specified part 
serializer.
-        *      </ul>
-        * @return This object.
-        * @throws SchemaValidationException Header failed schema validation.
-        * @throws SerializeException Header could not be serialized.
-        */
-       public RestResponse header(HttpPartSerializerSession serializer, 
HttpPartSchema schema, String name, Object value) throws 
SchemaValidationException, SerializeException {
-               if (serializer == null)
-                       serializer = request.getPartSerializerSession();
-               setHeader(name, serializer.serialize(HEADER, schema, value));
+       public RestResponse setHeader(HttpPartSchema schema, String name, 
Object value) throws SchemaValidationException, SerializeException {
+               setHeader(name, 
request.getPartSerializerSession().serialize(HEADER, schema, value));
                return this;
        }
 
@@ -615,23 +619,12 @@ public final class RestResponse {
         * @param schema The body schema
         * @return This object.
         */
-       public RestResponse bodySchema(HttpPartSchema schema) {
+       public RestResponse setBodySchema(HttpPartSchema schema) {
                this.bodySchema = ofNullable(schema);
                return this;
        }
 
        /**
-        * Same as {@link #setHeader(String, String)} but header is defined as 
a response part
-        *
-        * @param h Header to set.
-        * @throws SchemaValidationException Header part did not pass 
validation.
-        * @throws SerializeException Header part could not be serialized.
-        */
-       public void setHeader(HttpPart h) throws SchemaValidationException, 
SerializeException {
-               setHeader(h.getName(), h.getValue());
-       }
-
-       /**
         * Sets the <js>"Exception"</js> attribute to the specified throwable.
         *
         * <p>
@@ -811,7 +804,7 @@ public final class RestResponse {
         *
         * @return This object.
         */
-       public RestResponse safeHeaders() {
+       public RestResponse setSafeHeaders() {
                this.safeHeaders = true;
                return this;
        }
@@ -825,7 +818,7 @@ public final class RestResponse {
         * @param value The new value for this setting.  The default is 
<c>8096</c>.
         * @return This object.
         */
-       public RestResponse maxHeaderLength(int value) {
+       public RestResponse setMaxHeaderLength(int value) {
                this.maxHeaderLength = value;
                return this;
        }
@@ -881,7 +874,10 @@ public final class RestResponse {
                        setHeader(x.getName(), resolveUris(x.getValue()));
                } else if (header instanceof SerializedHeader) {
                        SerializedHeader x = 
((SerializedHeader)header).copyWith(request.getPartSerializerSession(), null);
-                       setHeader(x.getName(), resolveUris(x.getValue()));
+                       String v = x.getValue();
+                       if (v != null && v.indexOf("://") != -1)
+                               v = resolveUris(v);
+                       setHeader(x.getName(), v);
                } else {
                        setHeader(header.getName(), header.getValue());
                }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
index beea630..bdde9be 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/ResponseHeaderArg.java
@@ -13,18 +13,17 @@
 package org.apache.juneau.rest.args;
 
 import static java.util.Optional.*;
-import static org.apache.juneau.internal.ThrowableUtils.*;
 import static org.apache.juneau.internal.StringUtils.*;
 
 import java.lang.reflect.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.http.annotation.*;
+import org.apache.juneau.http.header.*;
 import org.apache.juneau.httppart.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
-import org.apache.juneau.serializer.*;
 
 /**
  * Resolves method parameters annotated with {@link ResponseHeader} on {@link 
RestOp}-annotated Java methods.
@@ -90,17 +89,13 @@ public class ResponseHeaderArg implements RestOpArg {
                v.listener(new ValueListener() {
                        @Override
                        public void onSet(Object o) {
-                               try {
-                                       RestRequest req = 
opSession.getRequest();
-                                       RestResponse res = 
opSession.getResponse();
-                                       ResponsePartMeta rpm = 
req.getOpContext().getResponseHeaderMeta(o);
-                                       if (rpm == null)
-                                               rpm = 
ResponseHeaderArg.this.meta;
-                                       HttpPartSerializerSession pss = 
rpm.getSerializer() == null ? req.getPartSerializerSession() : 
rpm.getSerializer().getPartSession();
-                                       res.setHeader(new HttpPart(name, 
HttpPartType.HEADER, rpm.getSchema(), pss, o));
-                               } catch (SerializeException | 
SchemaValidationException e) {
-                                       throw runtimeException(e);
-                               }
+                               RestRequest req = opSession.getRequest();
+                               RestResponse res = opSession.getResponse();
+                               ResponsePartMeta rpm = 
req.getOpContext().getResponseHeaderMeta(o);
+                               if (rpm == null)
+                                       rpm = ResponseHeaderArg.this.meta;
+                               HttpPartSerializerSession pss = 
rpm.getSerializer() == null ? req.getPartSerializerSession() : 
rpm.getSerializer().getPartSession();
+                               res.setHeader(new SerializedHeader(name, o, 
pss, rpm.getSchema(), false));
                        }
                });
                return v;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
index 6b97714..a2577ee 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Rest_RVars_Test.java
@@ -54,9 +54,9 @@ public class Rest_RVars_Test {
                        serializers=A1.class
                )
                public void a(RestResponse res) {
-                       res.attr("A2", "c");
-                       res.attr("B2", "c");
-                       res.attr("C", "c");
+                       res.setAttribute("A2", "c");
+                       res.setAttribute("B2", "c");
+                       res.setAttribute("C", "c");
                        res.setOutput(null);
                }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
index 951803c..b42659d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
@@ -440,7 +440,7 @@ public class RestClient_Config_RestClient_Test {
                        
assertObject(req.getHeaders().getAll("Foo").stream().map(RequestHeader::getValue).collect(Collectors.toList())).asJson().is("['x{f:1}','x{f:1}']");
                        assertEquals("{f:1}",foo[0].toString());
                        assertEquals("{f:1}",foo[1].toString());
-                       res.header("Foo",bean);
+                       res.setHeader("Foo",bean);
                        return OK;
                }
        }

Reply via email to