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 6a15bfc  REST refactoring.
6a15bfc is described below

commit 6a15bfc9b37a336b9155680d7f6f5d335e5ac5b9
Author: JamesBognar <[email protected]>
AuthorDate: Wed Feb 10 12:42:14 2021 -0500

    REST refactoring.
---
 .../{RestResponseBody.java => ResponseBody.java}   |  32 ++---
 ...RestResponseHeader.java => ResponseHeader.java} |   8 +-
 ...rtion.java => ResponseStatusLineAssertion.java} |   4 +-
 .../org/apache/juneau/rest/client/RestClient.java  | 130 ++++++++++-----------
 .../juneau/rest/client/RestClientBuilder.java      |   4 +-
 .../org/apache/juneau/rest/client/RestRequest.java |   4 +-
 .../apache/juneau/rest/client/RestResponse.java    |  68 +++++------
 .../java/org/apache/juneau/rest/RestRequest.java   |  14 ++-
 .../rest/annotation/ResponseHeader_Test.java       |   2 +-
 .../client/RestClient_Config_BeanContext_Test.java |  28 ++---
 .../client/RestClient_Config_RestClient_Test.java  |  10 +-
 .../juneau/rest/client/RestClient_Paths_Test.java  |  24 ++--
 .../rest/client/RestClient_Response_Body_Test.java |  10 +-
 .../client/RestClient_Response_Headers_Test.java   | 118 +++++++++----------
 .../rest/client/RestClient_Response_Test.java      |   2 +-
 .../apache/juneau/rest/client/RestClient_Test.java |   4 +-
 16 files changed, 234 insertions(+), 228 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
similarity index 98%
rename from 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
rename to 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
index 6c83177..4d95d9a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
@@ -47,7 +47,7 @@ import org.apache.juneau.utils.*;
  *     <li class='link'>{@doc juneau-rest-client}
  * </ul>
  */
-public class RestResponseBody implements HttpEntity {
+public class ResponseBody implements HttpEntity {
 
        private static final HttpEntity NULL_ENTITY = new HttpEntity() {
 
@@ -68,12 +68,12 @@ public class RestResponseBody implements HttpEntity {
 
                @Override
                public Header getContentType() {
-                       return RestResponseHeader.NULL_HEADER;
+                       return ResponseHeader.NULL_HEADER;
                }
 
                @Override
                public Header getContentEncoding() {
-                       return RestResponseHeader.NULL_HEADER;
+                       return ResponseHeader.NULL_HEADER;
                }
 
                @Override
@@ -111,7 +111,7 @@ public class RestResponseBody implements HttpEntity {
         * @param response The response object.
         * @param parser The parser to use to consume the body.  Can be 
<jk>null</jk>.
         */
-       public RestResponseBody(RestClient client, RestRequest request, 
RestResponse response, Parser parser) {
+       public ResponseBody(RestClient client, RestRequest request, 
RestResponse response, Parser parser) {
                this.client = client;
                this.request = request;
                this.response = response;
@@ -133,7 +133,7 @@ public class RestResponseBody implements HttpEntity {
         *      The new part parser to use for this body.
         * @return This object (for method chaining).
         */
-       public RestResponseBody parser(Parser value) {
+       public ResponseBody parser(Parser value) {
                this.parser = value;
                return this;
        }
@@ -147,7 +147,7 @@ public class RestResponseBody implements HttpEntity {
         * @param value The schema.
         * @return This object (for method chaining).
         */
-       public RestResponseBody schema(HttpPartSchema value) {
+       public ResponseBody schema(HttpPartSchema value) {
                this.schema = value;
                return this;
        }
@@ -165,7 +165,7 @@ public class RestResponseBody implements HttpEntity {
         *
         * @return This object (for method chaining).
         */
-       public RestResponseBody cache() {
+       public ResponseBody cache() {
                this.cached = true;
                return this;
        }
@@ -511,7 +511,7 @@ public class RestResponseBody implements HttpEntity {
         *      <li>
         *              You can also specify any of the following types:
         *              <ul class='compact'>
-        *                      <li>{@link RestResponseBody}/{@link HttpEntity} 
- Returns access to this object.
+        *                      <li>{@link ResponseBody}/{@link HttpEntity} - 
Returns access to this object.
         *                      <li>{@link Reader} - Returns access to the raw 
reader of the response.
         *                      <li>{@link InputStream} - Returns access to the 
raw input stream of the response.
         *                      <li>{@link BasicHttpResource} - Raw contents 
will be serialized to remote resource.  Additional headers and media type will 
be set on request.
@@ -622,7 +622,7 @@ public class RestResponseBody implements HttpEntity {
         *      <li>
         *              You can also specify any of the following types:
         *              <ul class='compact'>
-        *                      <li>{@link RestResponseBody}/{@link HttpEntity} 
- Returns access to this object.
+        *                      <li>{@link ResponseBody}/{@link HttpEntity} - 
Returns access to this object.
         *                      <li>{@link Reader} - Returns access to the raw 
reader of the response.
         *                      <li>{@link InputStream} - Returns access to the 
raw input stream of the response.
         *                      <li>{@link BasicHttpResource} - Raw contents 
will be serialized to remote resource.  Additional headers and media type will 
be set on request.
@@ -745,7 +745,7 @@ public class RestResponseBody implements HttpEntity {
                try {
                        Class<?> ic = type.getInnerClass();
 
-                       if (ic.equals(RestResponseBody.class) || 
ic.equals(HttpEntity.class))
+                       if (ic.equals(ResponseBody.class) || 
ic.equals(HttpEntity.class))
                                return (T)this;
 
                        if (ic.equals(Reader.class))
@@ -770,7 +770,7 @@ public class RestResponseBody implements HttpEntity {
                                return (T)r;
                        }
 
-                       String ct = 
firstNonEmpty(response.getHeader("Content-Type").asStringOrElse("text/plain"));
+                       String ct = 
firstNonEmpty(response.getResponseHeader("Content-Type").asStringOrElse("text/plain"));
 
                        if (parser == null)
                                parser = client.getMatchingParser(ct);
@@ -1612,7 +1612,7 @@ public class RestResponseBody implements HttpEntity {
         *      <li>
         *              If no charset was found on the 
<code>Content-Type</code> response header, <js>"UTF-8"</js> is assumed.
         *  <li>
-        *              When using this method, the body is automatically 
cached by calling the {@link RestResponseBody#cache()}.
+        *              When using this method, the body is automatically 
cached by calling the {@link ResponseBody#cache()}.
         *      <li>
         *              The input stream is automatically closed after this 
call.
         * </ul>
@@ -1722,8 +1722,8 @@ public class RestResponseBody implements HttpEntity {
         * @return The <c>Content-Type</c> header for this entity, or 
<jk>null</jk> if the content type is unknown.
         */
        @Override /* HttpEntity */
-       public RestResponseHeader getContentType() {
-               return new RestResponseHeader(request, response, 
entity.getContentType());
+       public ResponseHeader getContentType() {
+               return new ResponseHeader(request, response, 
entity.getContentType());
        }
 
        /**
@@ -1736,8 +1736,8 @@ public class RestResponseBody implements HttpEntity {
         * @return The <c>Content-Encoding</c> header for this entity, or 
<jk>null</jk> if the content encoding is unknown.
         */
        @Override /* HttpEntity */
-       public RestResponseHeader getContentEncoding() {
-               return new RestResponseHeader(request, response, 
entity.getContentEncoding());
+       public ResponseHeader getContentEncoding() {
+               return new ResponseHeader(request, response, 
entity.getContentEncoding());
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseHeader.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
similarity index 99%
rename from 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseHeader.java
rename to 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
index ac1f1e1..262d599 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseHeader.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseHeader.java
@@ -40,7 +40,7 @@ import org.apache.juneau.utils.*;
  *     <li class='link'>{@doc juneau-rest-client}
  * </ul>
  */
-public class RestResponseHeader implements Header {
+public class ResponseHeader implements Header {
 
        static final Header NULL_HEADER = new Header() {
 
@@ -73,7 +73,7 @@ public class RestResponseHeader implements Header {
         * @param response The response object.
         * @param header The wrapped header.  Can be <jk>null</jk>.
         */
-       public RestResponseHeader(RestRequest request, RestResponse response, 
Header header) {
+       public ResponseHeader(RestRequest request, RestResponse response, 
Header header) {
                this.request = request;
                this.response = response;
                this.header = header == null ? NULL_HEADER : header;
@@ -94,7 +94,7 @@ public class RestResponseHeader implements Header {
         *      The part schema.
         * @return This object (for method chaining).
         */
-       public RestResponseHeader schema(HttpPartSchema value) {
+       public ResponseHeader schema(HttpPartSchema value) {
                this.schema = value;
                return this;
        }
@@ -110,7 +110,7 @@ public class RestResponseHeader implements Header {
         *      <br>If <jk>null</jk>, {@link SimplePartParser#DEFAULT} will be 
used.
         * @return This object (for method chaining).
         */
-       public RestResponseHeader parser(HttpPartParserSession value) {
+       public ResponseHeader parser(HttpPartParserSession value) {
                this.parser = value == null ? SimplePartParser.DEFAULT_SESSION 
: value;
                return this;
        }
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseStatusLineAssertion.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseStatusLineAssertion.java
similarity index 95%
rename from 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseStatusLineAssertion.java
rename to 
juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseStatusLineAssertion.java
index c3d7bc2..c6ef99e 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponseStatusLineAssertion.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseStatusLineAssertion.java
@@ -27,7 +27,7 @@ import org.apache.juneau.assertions.*;
  *             .assertStatus().code().isAny(200,404);
  * </p>
  */
-public class RestResponseStatusLineAssertion extends 
FluentAssertion<RestResponse> {
+public class ResponseStatusLineAssertion extends FluentAssertion<RestResponse> 
{
 
        private final StatusLine statusLine;
 
@@ -37,7 +37,7 @@ public class RestResponseStatusLineAssertion extends 
FluentAssertion<RestRespons
         * @param statusLine The response status line.
         * @param returns The object to return after the test.
         */
-       public RestResponseStatusLineAssertion(StatusLine statusLine, 
RestResponse returns) {
+       public ResponseStatusLineAssertion(StatusLine statusLine, RestResponse 
returns) {
                super(null, returns);
                this.statusLine = statusLine;
        }
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
index 8910c17..3e9e112 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClient.java
@@ -134,9 +134,9 @@ import org.apache.juneau.utils.*;
  * <ul class='javatree'>
  *     <li class='jc'>{@link RestClient} <jk>extends</jk> {@link HttpClient}, 
creates {@link RestRequest} objects.
  *     <li class='jc'>{@link RestRequest} <jk>extends</jk> {@link 
HttpUriRequest}, creates {@link RestResponse} objects.
- *     <li class='jc'>{@link RestResponse} <jk>extends</jk> {@link 
HttpResponse}, creates {@link RestResponseBody} and {@link RestResponseHeader} 
objects.
- *     <li class='jc'>{@link RestResponseBody} <jk>extends</jk> {@link 
HttpEntity}
- *     <li class='jc'>{@link RestResponseHeader} <jk>extends</jk> {@link 
Header}
+ *     <li class='jc'>{@link RestResponse} <jk>extends</jk> {@link 
HttpResponse}, creates {@link ResponseBody} and {@link ResponseHeader} objects.
+ *     <li class='jc'>{@link ResponseBody} <jk>extends</jk> {@link HttpEntity}
+ *     <li class='jc'>{@link ResponseHeader} <jk>extends</jk> {@link Header}
  * </ul>
  *
  *
@@ -190,7 +190,7 @@ import org.apache.juneau.utils.*;
  * <p class='w900'>
  * The distinction between the two methods is that {@link 
RestRequest#complete() complete()} automatically consumes the response body and
  * {@link RestRequest#run() run()} does not.  Note that you must consume 
response bodies in order for HTTP connections to be freed up
- * for reuse!  The {@link InputStream InputStreams} returned by the {@link 
RestResponseBody} object are auto-closing once
+ * for reuse!  The {@link InputStream InputStreams} returned by the {@link 
ResponseBody} object are auto-closing once
  * they are exhausted, so it is often not necessary to explicitly close them.
  *
  * <p class='w900'>
@@ -518,7 +518,7 @@ import org.apache.juneau.utils.*;
  *             <li class='jm'><c>{@link RestResponse#getStatusLine() 
getStatusLine()} <jk>returns</jk> {@link StatusLine}</c>
  *             <li class='jm'><c>{@link RestResponse#getStatusCode() 
getStatusCode()} <jk>returns</jk> <jk>int</jk></c>
  *             <li class='jm'><c>{@link RestResponse#getReasonPhrase() 
getReasonPhrase()} <jk>returns</jk> String</c>
- *             <li class='jm'><c>{@link RestResponse#assertStatus() 
assertStatus()} <jk>returns</jk> {@link RestResponseStatusLineAssertion}</c>
+ *             <li class='jm'><c>{@link RestResponse#assertStatus() 
assertStatus()} <jk>returns</jk> {@link ResponseStatusLineAssertion}</c>
  *     </ul>
  * </ul>
  *
@@ -574,19 +574,19 @@ import org.apache.juneau.utils.*;
  * <ul class='javatree'>
  *     <li class='jc'>{@link RestResponse}
  *     <ul>
- *             <li class='jm'><c>{@link RestResponse#getHeader(String) 
getHeader(String)} <jk>returns</jk> {@link RestResponseHeader}</c>
- *             <li class='jm'><c>{@link RestResponse#getHeaders(String) 
getHeaders(String)} <jk>returns</jk> {@link RestResponseHeader}[]</c>
- *             <li class='jm'><c>{@link RestResponse#getFirstHeader(String) 
getFirstHeader(String)} <jk>returns</jk> {@link RestResponseHeader}</c>
- *             <li class='jm'><c>{@link RestResponse#getLastHeader(String) 
getLastHeader(String)} <jk>returns</jk> {@link RestResponseHeader}</c>
- *             <li class='jm'><c>{@link RestResponse#getAllHeaders() 
getAllHeaders()} <jk>returns</jk> {@link RestResponseHeader}[]</c>
+ *             <li class='jm'><c>{@link RestResponse#getResponseHeader(String) 
getHeader(String)} <jk>returns</jk> {@link ResponseHeader}</c>
+ *             <li class='jm'><c>{@link RestResponse#getHeaders(String) 
getHeaders(String)} <jk>returns</jk> {@link ResponseHeader}[]</c>
+ *             <li class='jm'><c>{@link RestResponse#getFirstHeader(String) 
getFirstHeader(String)} <jk>returns</jk> {@link ResponseHeader}</c>
+ *             <li class='jm'><c>{@link RestResponse#getLastHeader(String) 
getLastHeader(String)} <jk>returns</jk> {@link ResponseHeader}</c>
+ *             <li class='jm'><c>{@link RestResponse#getAllHeaders() 
getAllHeaders()} <jk>returns</jk> {@link ResponseHeader}[]</c>
  *             <li class='jm'><c>{@link RestResponse#getStringHeader(String) 
getStringHeader(String)} <jk>returns</jk> String</c>
  *             <li class='jm'><c>{@link RestResponse#containsHeader(String) 
containsHeader(String)} <jk>returns</jk> <jk>boolean</jk></c>
  *     </ul>
  * </ul>
  *
  * <p class='w900'>
- * Unlike {@link RestResponse#getFirstHeader(String)} and {@link 
RestResponse#getLastHeader(String)}, the {@link RestResponse#getHeader(String)}
- * method returns an empty {@link RestResponseHeader} object instead of 
returning <jk>null</jk>.
+ * Unlike {@link RestResponse#getFirstHeader(String)} and {@link 
RestResponse#getLastHeader(String)}, the {@link 
RestResponse#getResponseHeader(String)}
+ * method returns an empty {@link ResponseHeader} object instead of returning 
<jk>null</jk>.
  * This allows it to be used more easily in fluent calls.
  *
  * <h5 class='figure'>Example:</h5>
@@ -596,36 +596,36 @@ import org.apache.juneau.utils.*;
  * </p>
  *
  * <p class='w900'>
- * The {@link RestResponseHeader} class extends from the HttpClient {@link 
Header} class and provides several convenience
+ * The {@link ResponseHeader} class extends from the HttpClient {@link Header} 
class and provides several convenience
  * methods:
  *
  * <ul class='javatree'>
- *     <li class='jc'>{@link RestResponseHeader}
+ *     <li class='jc'>{@link ResponseHeader}
  *     <ul>
- *             <li class='jm'><c>{@link RestResponseHeader#exists() exists()} 
<jk>returns</jk> <jk>boolean</jk></c>
- *             <li class='jm'><c>{@link RestResponseHeader#asString() 
asString()} <jk>returns</jk> String</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asOptionalString() 
asOptionalString()} <jk>returns</jk> Optional&lt;String&gt;</c>
- *             <li class='jm'><c>{@link 
RestResponseHeader#asStringOrElse(String) asStringOrElse(String)} 
<jk>returns</jk> String</c>
- *             <li class='jm'><c>{@link RestResponseHeader#as(Type,Type...) 
as(Type,Type...)} <jk>returns</jk> T</c>
- *             <li class='jm'><c>{@link RestResponseHeader#as(Class) 
as(Class&lt;T&gt;)} <jk>returns</jk> T</c>
- *             <li class='jm'><c>{@link 
RestResponseHeader#asOptional(Type,Type...) asOptional(Type,Type...)} 
<jk>returns</jk> Optional&lt;T&gt;</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asOptional(Class) 
asOptional(Class&lt;T&gt;)} <jk>returns</jk> Optional&lt;T&gt;</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asMatcher(Pattern) 
asMatcher(Pattern)} <jk>returns</jk> {@link Matcher}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asMatcher(String) 
asMatcher(String)} <jk>returns</jk> {@link Matcher}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asHeader(Class) 
asHeader(Class&lt;T <jk>extends</jk> BasicHeader&gt; c)} <jk>returns</jk> 
{@link BasicHeader}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asStringHeader() 
asStringHeader()} <jk>returns</jk> {@link BasicIntegerHeader}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asIntegerHeader() 
asIntegerHeader()} <jk>returns</jk> {@link BasicStringHeader}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asLongHeader() 
asLongHeader()} <jk>returns</jk> {@link BasicLongHeader}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asDateHeader() 
asDateHeader()} <jk>returns</jk> {@link BasicDateHeader}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asCsvArrayHeader() 
asCsvArrayHeader()} <jk>returns</jk> {@link BasicCsvArrayHeader}</c>
- *             <li class='jm'><c>{@link 
RestResponseHeader#asEntityTagArrayHeader() asEntityValidatorArrayHeader()} 
<jk>returns</jk> {@link BasicEntityTagArrayHeader}</c>
- *             <li class='jm'><c>{@link 
RestResponseHeader#asStringRangeArrayHeader() asRangeArrayHeader()} 
<jk>returns</jk> {@link BasicStringRangeArrayHeader}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#asUriHeader() 
asUriHeader()} <jk>returns</jk> {@link BasicUriHeader}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#exists() exists()} 
<jk>returns</jk> <jk>boolean</jk></c>
+ *             <li class='jm'><c>{@link ResponseHeader#asString() asString()} 
<jk>returns</jk> String</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asOptionalString() 
asOptionalString()} <jk>returns</jk> Optional&lt;String&gt;</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asStringOrElse(String) 
asStringOrElse(String)} <jk>returns</jk> String</c>
+ *             <li class='jm'><c>{@link ResponseHeader#as(Type,Type...) 
as(Type,Type...)} <jk>returns</jk> T</c>
+ *             <li class='jm'><c>{@link ResponseHeader#as(Class) 
as(Class&lt;T&gt;)} <jk>returns</jk> T</c>
+ *             <li class='jm'><c>{@link 
ResponseHeader#asOptional(Type,Type...) asOptional(Type,Type...)} 
<jk>returns</jk> Optional&lt;T&gt;</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asOptional(Class) 
asOptional(Class&lt;T&gt;)} <jk>returns</jk> Optional&lt;T&gt;</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asMatcher(Pattern) 
asMatcher(Pattern)} <jk>returns</jk> {@link Matcher}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asMatcher(String) 
asMatcher(String)} <jk>returns</jk> {@link Matcher}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asHeader(Class) 
asHeader(Class&lt;T <jk>extends</jk> BasicHeader&gt; c)} <jk>returns</jk> 
{@link BasicHeader}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asStringHeader() 
asStringHeader()} <jk>returns</jk> {@link BasicIntegerHeader}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asIntegerHeader() 
asIntegerHeader()} <jk>returns</jk> {@link BasicStringHeader}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asLongHeader() 
asLongHeader()} <jk>returns</jk> {@link BasicLongHeader}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asDateHeader() 
asDateHeader()} <jk>returns</jk> {@link BasicDateHeader}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asCsvArrayHeader() 
asCsvArrayHeader()} <jk>returns</jk> {@link BasicCsvArrayHeader}</c>
+ *             <li class='jm'><c>{@link 
ResponseHeader#asEntityTagArrayHeader() asEntityValidatorArrayHeader()} 
<jk>returns</jk> {@link BasicEntityTagArrayHeader}</c>
+ *             <li class='jm'><c>{@link 
ResponseHeader#asStringRangeArrayHeader() asRangeArrayHeader()} 
<jk>returns</jk> {@link BasicStringRangeArrayHeader}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#asUriHeader() 
asUriHeader()} <jk>returns</jk> {@link BasicUriHeader}</c>
  *     </ul>
  * </ul>
  *
  * <p>
- * The {@link RestResponseHeader#schema(HttpPartSchema)} method allows you to 
perform parsing of OpenAPI formats for
+ * The {@link ResponseHeader#schema(HttpPartSchema)} method allows you to 
perform parsing of OpenAPI formats for
  * header parts.
  *
  * <h5 class='figure'>Example:</h5>
@@ -641,12 +641,12 @@ import org.apache.juneau.utils.*;
  * Assertion methods are also provided for fluent-style calls:
  *
  * <ul class='javatree'>
- *     <li class='jc'>{@link RestResponseHeader}
+ *     <li class='jc'>{@link ResponseHeader}
  *     <ul>
- *             <li class='jm'><c>{@link RestResponseHeader#assertString() 
assertString()} <jk>returns</jk> {@link FluentStringAssertion}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#assertInteger() 
assertInteger()} <jk>returns</jk> {@link FluentIntegerAssertion}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#assertLong() 
assertLong()} <jk>returns</jk> {@link FluentLongAssertion}</c>
- *             <li class='jm'><c>{@link RestResponseHeader#assertDate() 
assertDate()} <jk>returns</jk> {@link FluentDateAssertion}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#assertString() 
assertString()} <jk>returns</jk> {@link FluentStringAssertion}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#assertInteger() 
assertInteger()} <jk>returns</jk> {@link FluentIntegerAssertion}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#assertLong() 
assertLong()} <jk>returns</jk> {@link FluentLongAssertion}</c>
+ *             <li class='jm'><c>{@link ResponseHeader#assertDate() 
assertDate()} <jk>returns</jk> {@link FluentDateAssertion}</c>
  *     </ul>
  * </ul>
  *
@@ -672,33 +672,33 @@ import org.apache.juneau.utils.*;
  * <ul class='javatree'>
  *     <li class='jc'>{@link RestResponse}
  *     <ul>
- *             <li class='jm'><c>{@link RestResponse#getBody() getBody()} 
<jk>returns</jk> {@link RestResponseBody}</c>
+ *             <li class='jm'><c>{@link RestResponse#getBody() getBody()} 
<jk>returns</jk> {@link ResponseBody}</c>
  *     </ul>
  * </ul>
  *
  * <p class='w900'>
- * The {@link RestResponseBody} class extends from the HttpClient {@link 
HttpEntity} class and provides several convenience
+ * The {@link ResponseBody} class extends from the HttpClient {@link 
HttpEntity} class and provides several convenience
  * methods:
  *
  * <ul class='javatree'>
- *     <li class='jc'>{@link RestResponseBody}
+ *     <li class='jc'>{@link ResponseBody}
  *     <ul>
- *             <li class='jm'><c>{@link RestResponseBody#asInputStream() 
asInputStream()} <jk>returns</jk> InputStream</c>
- *             <li class='jm'><c>{@link RestResponseBody#asReader() 
asReader()} <jk>returns</jk> Reader</c>
- *             <li class='jm'><c>{@link RestResponseBody#asReader(Charset) 
asReader(Charset)} <jk>returns</jk> Reader</c>
- *             <li class='jm'><c>{@link RestResponseBody#pipeTo(OutputStream) 
pipeTo(OutputStream)} <jk>returns</jk> {@link RestResponse}</c>
- *             <li class='jm'><c>{@link RestResponseBody#pipeTo(Writer) 
pipeTo(Writer)} <jk>returns</jk> {@link RestResponse}</c>
- *             <li class='jm'><c>{@link RestResponseBody#as(Type,Type...) 
as(Type,Type...)} <jk>returns</jk> T</c>
- *             <li class='jm'><c>{@link RestResponseBody#as(Class) 
as(Class&lt;T&gt;)} <jk>returns</jk> T</c>
- *             <li class='jm'><c>{@link RestResponseBody#asFuture(Class) 
asFuture(Class&lt;T&gt;)} <jk>returns</jk> Future&lt;T&gt;</c>
- *             <li class='jm'><c>{@link 
RestResponseBody#asFuture(Type,Type...) asFuture(Type,Type...)} 
<jk>returns</jk> Future&lt;T&gt;</c>
- *             <li class='jm'><c>{@link RestResponseBody#asString() 
asString()} <jk>returns</jk> String</c>
- *             <li class='jm'><c>{@link RestResponseBody#asStringFuture() 
asStringFuture()} <jk>returns</jk> Future&lt;String&gt;</c>
- *             <li class='jm'><c>{@link 
RestResponseBody#asAbbreviatedString(int) asAbbreviatedString(int)} 
<jk>returns</jk> String</c>
- *             <li class='jm'><c>{@link RestResponseBody#asPojoRest(Class) 
asPojoRest(Class&lt;?&gt;)} <jk>returns</jk> {@link PojoRest}</c>
- *             <li class='jm'><c>{@link RestResponseBody#asPojoRest() 
asPojoRest()} <jk>returns</jk> {@link PojoRest}</c>
- *             <li class='jm'><c>{@link RestResponseBody#asMatcher(Pattern) 
asMatcher(Pattern)} <jk>returns</jk> {@link Matcher}</c>
- *             <li class='jm'><c>{@link RestResponseBody#asMatcher(String) 
asMatcher(String)} <jk>returns</jk> {@link Matcher}</c>
+ *             <li class='jm'><c>{@link ResponseBody#asInputStream() 
asInputStream()} <jk>returns</jk> InputStream</c>
+ *             <li class='jm'><c>{@link ResponseBody#asReader() asReader()} 
<jk>returns</jk> Reader</c>
+ *             <li class='jm'><c>{@link ResponseBody#asReader(Charset) 
asReader(Charset)} <jk>returns</jk> Reader</c>
+ *             <li class='jm'><c>{@link ResponseBody#pipeTo(OutputStream) 
pipeTo(OutputStream)} <jk>returns</jk> {@link RestResponse}</c>
+ *             <li class='jm'><c>{@link ResponseBody#pipeTo(Writer) 
pipeTo(Writer)} <jk>returns</jk> {@link RestResponse}</c>
+ *             <li class='jm'><c>{@link ResponseBody#as(Type,Type...) 
as(Type,Type...)} <jk>returns</jk> T</c>
+ *             <li class='jm'><c>{@link ResponseBody#as(Class) 
as(Class&lt;T&gt;)} <jk>returns</jk> T</c>
+ *             <li class='jm'><c>{@link ResponseBody#asFuture(Class) 
asFuture(Class&lt;T&gt;)} <jk>returns</jk> Future&lt;T&gt;</c>
+ *             <li class='jm'><c>{@link ResponseBody#asFuture(Type,Type...) 
asFuture(Type,Type...)} <jk>returns</jk> Future&lt;T&gt;</c>
+ *             <li class='jm'><c>{@link ResponseBody#asString() asString()} 
<jk>returns</jk> String</c>
+ *             <li class='jm'><c>{@link ResponseBody#asStringFuture() 
asStringFuture()} <jk>returns</jk> Future&lt;String&gt;</c>
+ *             <li class='jm'><c>{@link ResponseBody#asAbbreviatedString(int) 
asAbbreviatedString(int)} <jk>returns</jk> String</c>
+ *             <li class='jm'><c>{@link ResponseBody#asPojoRest(Class) 
asPojoRest(Class&lt;?&gt;)} <jk>returns</jk> {@link PojoRest}</c>
+ *             <li class='jm'><c>{@link ResponseBody#asPojoRest() 
asPojoRest()} <jk>returns</jk> {@link PojoRest}</c>
+ *             <li class='jm'><c>{@link ResponseBody#asMatcher(Pattern) 
asMatcher(Pattern)} <jk>returns</jk> {@link Matcher}</c>
+ *             <li class='jm'><c>{@link ResponseBody#asMatcher(String) 
asMatcher(String)} <jk>returns</jk> {@link Matcher}</c>
  *     </ul>
  * </ul>
  *
@@ -739,9 +739,9 @@ import org.apache.juneau.utils.*;
  *
  * <p class='w900'>
  * The response body can only be consumed once unless it has been cached into 
memory.  In many cases, the body is
- * automatically cached when using the assertions methods or methods such as 
{@link RestResponseBody#asString()}.
+ * automatically cached when using the assertions methods or methods such as 
{@link ResponseBody#asString()}.
  * However, methods that involve reading directly from the input stream cannot 
be called twice.
- * In these cases, the {@link RestResponse#cacheBody()} and {@link 
RestResponseBody#cache()} methods are provided
+ * In these cases, the {@link RestResponse#cacheBody()} and {@link 
ResponseBody#cache()} methods are provided
  * to cache the response body in memory so that you can perform several 
operations against it.
  *
  * <p class='bcode w800'>
@@ -758,11 +758,11 @@ import org.apache.juneau.utils.*;
  * Assertion methods are also provided for fluent-style calls:
  *
  * <ul class='javatree'>
- *     <li class='jc'>{@link RestResponseBody}
+ *     <li class='jc'>{@link ResponseBody}
  *     <ul>
- *             <li class='jm'><c>{@link RestResponseBody#assertString() 
assertString()} <jk>returns</jk> {@link FluentStringAssertion}</c>
- *             <li class='jm'><c>{@link RestResponseBody#assertObject(Class) 
assertObject(Class&lt;?&gt;)} <jk>returns</jk> {@link FluentObjectAssertion}</c>
- *             <li class='jm'><c>{@link RestResponseBody#assertBytes() 
assertBytes()} <jk>returns</jk> {@link FluentByteArrayAssertion}</c>
+ *             <li class='jm'><c>{@link ResponseBody#assertString() 
assertString()} <jk>returns</jk> {@link FluentStringAssertion}</c>
+ *             <li class='jm'><c>{@link ResponseBody#assertObject(Class) 
assertObject(Class&lt;?&gt;)} <jk>returns</jk> {@link FluentObjectAssertion}</c>
+ *             <li class='jm'><c>{@link ResponseBody#assertBytes() 
assertBytes()} <jk>returns</jk> {@link FluentByteArrayAssertion}</c>
  *     </ul>
  * </ul>
  *
@@ -1205,7 +1205,7 @@ public class RestClient extends BeanContext implements 
HttpClient, Closeable, Re
         * <ul>
         *      <li class='jm'>{@link RestRequest#runFuture()}
         *      <li class='jm'>{@link RestRequest#completeFuture()}
-        *      <li class='jm'>{@link RestResponseBody#asFuture(Class)} (and 
similar methods)
+        *      <li class='jm'>{@link ResponseBody#asFuture(Class)} (and 
similar methods)
         * </ul>
         *
         * <p>
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index 6b8567c..d37ab8c 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -612,7 +612,7 @@ public class RestClientBuilder extends BeanContextBuilder {
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link #strict()}),
         *                      bean context property setters (e.g. {@link 
#swaps(Object...)}), or generic property setters (e.g. {@link #set(String, 
Object)}) defined on this builder class.
-        *              <li>Typically the {@link 
RestResponseBody#schema(HttpPartSchema)} method will be used to specify the 
structure of the response body.
+        *              <li>Typically the {@link 
ResponseBody#schema(HttpPartSchema)} method will be used to specify the 
structure of the response body.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/openapi"</js> unless overridden
@@ -2537,7 +2537,7 @@ public class RestClientBuilder extends BeanContextBuilder 
{
         * <ul>
         *      <li class='jm'>{@link RestRequest#runFuture()}
         *      <li class='jm'>{@link RestRequest#completeFuture()}
-        *      <li class='jm'>{@link RestResponseBody#asFuture(Class)} (and 
similar methods)
+        *      <li class='jm'>{@link ResponseBody#asFuture(Class)} (and 
similar methods)
         * </ul>
         *
         * <p>
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
index 9ca6ec2..61f8a10 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestRequest.java
@@ -534,7 +534,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *      <ul>
         *              <li>The parser can be configured using any of the 
parser property setters (e.g. {@link RestClientBuilder#strict()}),
         *                      bean context property setters (e.g. {@link 
RestClientBuilder#swaps(Object...)}), or generic property setters (e.g. {@link 
RestClientBuilder#set(String, Object)}) defined on this builder class.
-        *              <li>Typically the {@link 
RestResponseBody#schema(HttpPartSchema)} method will be used to specify the 
structure of the response body.
+        *              <li>Typically the {@link 
ResponseBody#schema(HttpPartSchema)} method will be used to specify the 
structure of the response body.
         *      </ul>
         * <p>
         *      <c>Accept</c> request header will be set to 
<js>"text/openapi"</js> unless overridden
@@ -2967,7 +2967,7 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
         *
         * <p>
         * Use this method if you're only interested in the status line of the 
response and not the response entity.
-        * Attempts to call any of the methods on the response object that 
retrieve the body (e.g. {@link RestResponseBody#asReader()}
+        * Attempts to call any of the methods on the response object that 
retrieve the body (e.g. {@link ResponseBody#asReader()}
         * will cause a {@link RestCallException} to be thrown.
         *
         * <ul class='notes'>
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
index d82e88b..47841e5 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestResponse.java
@@ -51,7 +51,7 @@ public class RestResponse implements HttpResponse {
        private final HttpResponse response;
        private final Parser parser;
        HttpPartParserSession partParser;
-       private RestResponseBody responseBody;
+       private ResponseBody responseBody;
        private boolean isClosed;
 
        /**
@@ -67,7 +67,7 @@ public class RestResponse implements HttpResponse {
                this.request = request;
                this.parser = parser;
                this.response = response == null ? new BasicHttpResponse(null, 
0, null) : response;
-               this.responseBody = new RestResponseBody(client, request, this, 
parser);
+               this.responseBody = new ResponseBody(client, request, this, 
parser);
                this.partParser = client.getPartParserSession();
        }
 
@@ -176,8 +176,8 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         * @throws RestCallException If REST call failed.
         */
-       public RestResponseStatusLineAssertion assertStatus() throws 
RestCallException {
-               return new RestResponseStatusLineAssertion(getStatusLine(), 
this);
+       public ResponseStatusLineAssertion assertStatus() throws 
RestCallException {
+               return new ResponseStatusLineAssertion(getStatusLine(), this);
        }
 
        /**
@@ -210,7 +210,7 @@ public class RestResponse implements HttpResponse {
         * @return The header value, or <jk>null</jk> if header was not found.
         */
        public String getStringHeader(String name) {
-               return getHeader(name).asString();
+               return getResponseHeader(name).asString();
        }
 
        /**
@@ -221,21 +221,21 @@ public class RestResponse implements HttpResponse {
         * @return The header value, or the default if header was not found.
         */
        public String getStringHeader(String name, String def) {
-               return getHeader(name).asStringOrElse(def);
+               return getResponseHeader(name).asStringOrElse(def);
        }
 
        /**
         * Returns the last header with the specified name.
         *
         * Unlike {@link #getFirstHeader(String)} and {@link 
#getLastHeader(String)}, this method returns an empty
-        * {@link RestResponseHeader} object instead of returning 
<jk>null</jk>.  This allows it to be used more easily
+        * {@link ResponseHeader} object instead of returning <jk>null</jk>.  
This allows it to be used more easily
         * in fluent calls.
         *
         * @param name The header name.
         * @return The header.  Never <jk>null</jk>.
         */
-       public RestResponseHeader getHeader(String name) {
-               return new RestResponseHeader(request, this, 
getLastHeader(name)).parser(partParser);
+       public ResponseHeader getResponseHeader(String name) {
+               return new ResponseHeader(request, this, 
getLastHeader(name)).parser(partParser);
        }
 
        /**
@@ -259,7 +259,7 @@ public class RestResponse implements HttpResponse {
         * @throws RestCallException If REST call failed.
         */
        public ContentType getContentType() throws RestCallException {
-               return getHeader("Content-Type").as(ContentType.class);
+               return getResponseHeader("Content-Type").as(ContentType.class);
        }
 
        /**
@@ -320,7 +320,7 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         */
        public FluentStringAssertion<RestResponse> assertStringHeader(String 
name) {
-               return getHeader(name).assertString();
+               return getResponseHeader(name).assertString();
        }
 
        /**
@@ -339,7 +339,7 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         */
        public FluentIntegerAssertion<RestResponse> assertIntegerHeader(String 
name) {
-               return getHeader(name).assertInteger();
+               return getResponseHeader(name).assertInteger();
        }
 
        /**
@@ -358,7 +358,7 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         */
        public FluentLongAssertion<RestResponse> assertLongHeader(String name) {
-               return getHeader(name).assertLong();
+               return getResponseHeader(name).assertLong();
        }
 
        /**
@@ -377,7 +377,7 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         */
        public FluentZonedDateTimeAssertion<RestResponse> 
assertDateHeader(String name) {
-               return getHeader(name).assertDate();
+               return getResponseHeader(name).assertDate();
        }
 
        /**
@@ -396,7 +396,7 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         */
        public FluentListAssertion<RestResponse> assertCsvArrayHeader(String 
name) {
-               return getHeader(name).assertCsvArray();
+               return getResponseHeader(name).assertCsvArray();
        }
 
        /**
@@ -443,7 +443,7 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         */
        public FluentStringAssertion<RestResponse> assertContentType() {
-               return getHeader("Content-Type").assertString();
+               return getResponseHeader("Content-Type").assertString();
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -457,7 +457,7 @@ public class RestResponse implements HttpResponse {
         *
         * @return The body of the response.
         */
-       public RestResponseBody getBody() {
+       public ResponseBody getBody() {
                return responseBody;
        }
 
@@ -520,7 +520,7 @@ public class RestResponse implements HttpResponse {
         *      <li>
         *              If no charset was found on the 
<code>Content-Type</code> response header, <js>"UTF-8"</js> is assumed.
         *  <li>
-        *              When using this method, the body is automatically 
cached by calling the {@link RestResponseBody#cache()}.
+        *              When using this method, the body is automatically 
cached by calling the {@link ResponseBody#cache()}.
         *      <li>
         *              The input stream is automatically closed after this 
call.
         * </ul>
@@ -548,7 +548,7 @@ public class RestResponse implements HttpResponse {
         *      <li>
         *              If no charset was found on the 
<code>Content-Type</code> response header, <js>"UTF-8"</js> is assumed.
         *  <li>
-        *              When using this method, the body is automatically 
cached by calling the {@link RestResponseBody#cache()}.
+        *              When using this method, the body is automatically 
cached by calling the {@link ResponseBody#cache()}.
         *      <li>
         *              The input stream is automatically closed after this 
call.
         * </ul>
@@ -565,7 +565,7 @@ public class RestResponse implements HttpResponse {
         *
         * <p>
         * <p>
-        * Combines the functionality of {@link RestResponseBody#as(Class)} 
with {@link #assertBody()} by converting the body to the specified
+        * Combines the functionality of {@link ResponseBody#as(Class)} with 
{@link #assertBody()} by converting the body to the specified
         * bean and then serializing it to simplified JSON for easy string 
comparison.
         *
         * <h5 class='section'>Examples:</h5>
@@ -581,7 +581,7 @@ public class RestResponse implements HttpResponse {
         *      <li>
         *              If no charset was found on the 
<code>Content-Type</code> response header, <js>"UTF-8"</js> is assumed.
         *  <li>
-        *              When using this method, the body is automatically 
cached by calling the {@link RestResponseBody#cache()}.
+        *              When using this method, the body is automatically 
cached by calling the {@link ResponseBody#cache()}.
         *      <li>
         *              The input stream is automatically closed after this 
call.
         * </ul>
@@ -626,7 +626,7 @@ public class RestResponse implements HttpResponse {
                                        String name = pm.getPartName();
                                        ClassMeta<?> type = 
rc.getClassMeta(method.getGenericReturnType());
                                        if (pt == RESPONSE_HEADER)
-                                               return 
getHeader(name).parser(pp).schema(schema).as(type);
+                                               return 
getResponseHeader(name).parser(pp).schema(schema).as(type);
                                        if (pt == RESPONSE_STATUS)
                                                return getStatusCode();
                                        return 
getBody().schema(schema).as(type);
@@ -749,7 +749,7 @@ public class RestResponse implements HttpResponse {
         * @return The response entity.  Never <jk>null</jk>.
         */
        @Override /* HttpResponse */
-       public RestResponseBody getEntity() {
+       public ResponseBody getEntity() {
                return responseBody;
        }
 
@@ -767,7 +767,7 @@ public class RestResponse implements HttpResponse {
        @Override /* HttpResponse */
        public void setEntity(HttpEntity entity) {
                response.setEntity(entity);
-               this.responseBody = new RestResponseBody(client, request, this, 
parser);
+               this.responseBody = new ResponseBody(client, request, this, 
parser);
        }
 
        /**
@@ -827,11 +827,11 @@ public class RestResponse implements HttpResponse {
         * @return All the headers with a specified name of this message.
         */
        @Override /* HttpMessage */
-       public RestResponseHeader[] getHeaders(String name) {
+       public ResponseHeader[] getHeaders(String name) {
                Header[] a = response.getHeaders(name);
-               RestResponseHeader[] b = new RestResponseHeader[a.length];
+               ResponseHeader[] b = new ResponseHeader[a.length];
                for (int i = 0; i < a.length; i++)
-                       b[i] = new RestResponseHeader(request, this, 
a[i]).parser(partParser);
+                       b[i] = new ResponseHeader(request, this, 
a[i]).parser(partParser);
                return b;
        }
 
@@ -845,9 +845,9 @@ public class RestResponse implements HttpResponse {
         * @return The header, or <jk>null</jk> if there is no matching header 
in the message.
         */
        @Override /* HttpMessage */
-       public RestResponseHeader getFirstHeader(String name) {
+       public ResponseHeader getFirstHeader(String name) {
                Header h = response.getFirstHeader(name);
-               return h == null ? null : new RestResponseHeader(request, this, 
h).parser(partParser);
+               return h == null ? null : new ResponseHeader(request, this, 
h).parser(partParser);
        }
 
        /**
@@ -860,9 +860,9 @@ public class RestResponse implements HttpResponse {
         * @return The header, or <jk>null</jk> if there is no matching header 
in the message.
         */
        @Override /* HttpMessage */
-       public RestResponseHeader getLastHeader(String name) {
+       public ResponseHeader getLastHeader(String name) {
                Header h = response.getLastHeader(name);
-               return h == null ? null : new RestResponseHeader(request, this, 
h).parser(partParser);
+               return h == null ? null : new ResponseHeader(request, this, 
h).parser(partParser);
        }
 
        /**
@@ -873,11 +873,11 @@ public class RestResponse implements HttpResponse {
         * @return All the headers of this message.
         */
        @Override /* HttpMessage */
-       public RestResponseHeader[] getAllHeaders() {
+       public ResponseHeader[] getAllHeaders() {
                Header[] a = response.getAllHeaders();
-               RestResponseHeader[] b = new RestResponseHeader[a.length];
+               ResponseHeader[] b = new ResponseHeader[a.length];
                for (int i = 0; i < a.length; i++)
-                       b[i] = new RestResponseHeader(request, this, 
a[i]).parser(partParser);
+                       b[i] = new ResponseHeader(request, this, 
a[i]).parser(partParser);
                return b;
        }
 
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 ef8e911..7bb62db 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
@@ -20,6 +20,7 @@ import static org.apache.juneau.httppart.HttpPartType.*;
 import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.serializer.Serializer.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
+import static java.lang.Integer.*;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -35,7 +36,9 @@ import javax.servlet.*;
 import javax.servlet.http.*;
 
 import org.apache.http.*;
+import org.apache.http.message.*;
 import org.apache.juneau.*;
+import org.apache.juneau.assertions.*;
 import org.apache.juneau.config.*;
 import org.apache.juneau.cp.*;
 import org.apache.juneau.cp.Messages;
@@ -214,9 +217,12 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
         *
         * @return A description string of the request.
         */
-       public String getDescription() {
-               String qs = getQueryString();
-               return "HTTP " + getMethod() + " " + getRequestURI() + (qs == 
null ? "" : "?" + qs);
+       public RequestLine getRequestLine() {
+               String x = inner.getProtocol();
+               int i = x.indexOf('/');
+               int j = x.indexOf('.', i);
+               ProtocolVersion pv = new ProtocolVersion(x.substring(0,i), 
parseInt(x.substring(i+1,j)), parseInt(x.substring(j+1)));
+               return new BasicRequestLine(inner.getMethod(), 
inner.getRequestURI(), pv);
        }
 
        
//-----------------------------------------------------------------------------------------------------------------
@@ -1296,7 +1302,7 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
 
        @Override /* Object */
        public String toString() {
-               StringBuilder sb = new 
StringBuilder("\n").append(getDescription()).append("\n");
+               StringBuilder sb = new 
StringBuilder("\n").append(getRequestLine()).append("\n");
                sb.append("---Headers---\n");
                for (Enumeration<String> e = getHeaderNames(); 
e.hasMoreElements();) {
                        String h = e.nextElement();
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java
index 8ab14fd..a271bb9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/ResponseHeader_Test.java
@@ -18,7 +18,7 @@ import static org.junit.runners.MethodSorters.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.dto.swagger.*;
-import org.apache.juneau.http.annotation.*;
+import org.apache.juneau.http.annotation.ResponseHeader;
 import org.apache.juneau.rest.client.*;
 import org.apache.juneau.rest.mock.*;
 import org.junit.*;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
index c31042b..996ec3d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_BeanContext_Test.java
@@ -99,7 +99,7 @@ public class RestClient_Config_BeanContext_Test {
        public void a02_beanConstructorVisibility() throws Exception {
                RestResponse x = 
client(A2b.class).beanConstructorVisibility(Visibility.PROTECTED).build().post("/test",new
 A2a(1)).header("X",new 
A2a(1)).run().cacheBody().assertBody().is("1").assertStringHeader("X").is("1");
                assertEquals(1,x.getBody().as(A2a.class).f);
-               assertEquals(1,x.getHeader("X").as(A2a.class).f);
+               assertEquals(1,x.getResponseHeader("X").as(A2a.class).f);
        }
 
        public static class A3 {
@@ -121,7 +121,7 @@ public class RestClient_Config_BeanContext_Test {
        public void a03_beanFieldVisibility() throws Exception {
                RestResponse x = 
client(A2b.class).beanFieldVisibility(Visibility.PROTECTED).build().post("/test",A3.get()).header("X",A3.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
                assertEquals(2,x.getBody().as(A3.class).f2);
-               assertEquals(2,x.getHeader("X").as(A3.class).f2);
+               assertEquals(2,x.getResponseHeader("X").as(A3.class).f2);
        }
 
        public static interface A4a {
@@ -157,23 +157,23 @@ public class RestClient_Config_BeanContext_Test {
        public void a04_beanFilters() throws Exception {
                RestResponse x = 
client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
                assertEquals(0,x.getBody().as(A4b.class).f2);
-               assertEquals(0,x.getHeader("X").as(A4b.class).f2);
+               assertEquals(0,x.getResponseHeader("X").as(A4b.class).f2);
 
                x = 
client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
                assertEquals(0,x.getBody().as(A4b.class).f2);
-               assertEquals(0,x.getHeader("X").as(A4b.class).f2);
+               assertEquals(0,x.getResponseHeader("X").as(A4b.class).f2);
 
                x = 
client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
                assertEquals(0,x.getBody().as(A4b.class).f2);
-               assertEquals(0,x.getHeader("X").as(A4b.class).f2);
+               assertEquals(0,x.getResponseHeader("X").as(A4b.class).f2);
 
                x = 
client(A2b.class).beanProperties(A4b.class,"f1").build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
                assertEquals(0,x.getBody().as(A4b.class).f2);
-               assertEquals(0,x.getHeader("X").as(A4b.class).f2);
+               assertEquals(0,x.getResponseHeader("X").as(A4b.class).f2);
 
                x = 
client(A2b.class).interfaces(A4a.class).build().post("/test",A4b.get()).header("X",A4b.get()).run().cacheBody().assertBody().is("{f3:3}").assertStringHeader("X").is("f3=3");
                assertEquals(3,x.getBody().as(A4b.class).f3);
-               assertEquals(3,x.getHeader("X").as(A4b.class).f3);
+               assertEquals(3,x.getResponseHeader("X").as(A4b.class).f3);
        }
 
        public static class A5  {
@@ -206,7 +206,7 @@ public class RestClient_Config_BeanContext_Test {
        public void a05_beanMethodVisibility() throws Exception {
                RestResponse x = 
client(A2b.class).beanMethodVisibility(Visibility.PROTECTED).build().post("/test",A5.get()).header("X",A5.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
                assertEquals(2,x.getBody().as(A5.class).f2);
-               assertEquals(2,x.getHeader("X").as(A5.class).f2);
+               assertEquals(2,x.getResponseHeader("X").as(A5.class).f2);
        }
 
        public static class A6 {}
@@ -282,15 +282,15 @@ public class RestClient_Config_BeanContext_Test {
 
                x = 
client(A2b.class).beanPropertiesReadOnly(OMap.of("09","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
                assertEquals("1/0",x.getBody().as(A9.class).toString());
-               assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
+               
assertEquals("1/0",x.getResponseHeader("X").as(A9.class).toString());
 
                x = 
client(A2b.class).beanPropertiesReadOnly(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
                assertEquals("1/0",x.getBody().as(A9.class).toString());
-               assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
+               
assertEquals("1/0",x.getResponseHeader("X").as(A9.class).toString());
 
                x = 
client(A2b.class).beanPropertiesReadOnly("O9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1,f2:2}").assertStringHeader("X").is("f1=1,f2=2");
                assertEquals("1/0",x.getBody().as(A9.class).toString());
-               assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
+               
assertEquals("1/0",x.getResponseHeader("X").as(A9.class).toString());
        }
 
        @Test
@@ -299,15 +299,15 @@ public class RestClient_Config_BeanContext_Test {
 
                x = 
client(A2b.class).beanPropertiesWriteOnly(OMap.of("A9","f2")).build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
                assertEquals("1/0",x.getBody().as(A9.class).toString());
-               assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
+               
assertEquals("1/0",x.getResponseHeader("X").as(A9.class).toString());
 
                x = 
client(A2b.class).beanPropertiesWriteOnly(A9.class,"f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
                assertEquals("1/0",x.getBody().as(A9.class).toString());
-               assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
+               
assertEquals("1/0",x.getResponseHeader("X").as(A9.class).toString());
 
                x = 
client(A2b.class).beanPropertiesWriteOnly("A9","f2").build().post("/test",A9.get()).header("X",A9.get()).run().cacheBody().assertBody().is("{f1:1}").assertStringHeader("X").is("f1=1");
                assertEquals("1/0",x.getBody().as(A9.class).toString());
-               assertEquals("1/0",x.getHeader("X").as(A9.class).toString());
+               
assertEquals("1/0",x.getResponseHeader("X").as(A9.class).toString());
        }
 
        @Test
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 29f32c4..7722f28 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
@@ -127,12 +127,12 @@ public class RestClient_Config_RestClient_Test {
                RestClient x1 = client().executorService(es,true).build();
 
                assertEquals(es,x1.getExecutorService());
-               
x1.get("/echo").runFuture().get().assertCode().is(200).assertBody().contains("HTTP
 GET /echo");
+               
x1.get("/echo").runFuture().get().assertCode().is(200).assertBody().contains("GET
 /echo HTTP/1.1");
 
                es = null;
                RestClient x2 = client().executorService(es,true).build();
                assertNotNull(x2.getExecutorService());
-               
x2.get("/echo").runFuture().get().assertCode().is(200).assertBody().contains("HTTP
 GET /echo");
+               
x2.get("/echo").runFuture().get().assertCode().is(200).assertBody().contains("GET
 /echo HTTP/1.1");
        }
 
        @Test
@@ -482,13 +482,13 @@ public class RestClient_Config_RestClient_Test {
        @Test
        public void a12_partSerializer_partParser() throws Exception {
                RestClient x = 
client(A12.class).header("Foo",bean).partSerializer(A12a.class).partParser(A12b.class).build();
-               ABean b = 
x.get("/").header("Foo",bean).run().assertStringHeader("Foo").is("x{f:1}").getHeader("Foo").as(ABean.class);
+               ABean b = 
x.get("/").header("Foo",bean).run().assertStringHeader("Foo").is("x{f:1}").getResponseHeader("Foo").as(ABean.class);
                assertEquals("{f:1}",b.toString());
-               b = 
x.get().header("Foo",bean).run().assertStringHeader("Foo").is("x{f:1}").getHeader("Foo").as(ABean.class);
+               b = 
x.get().header("Foo",bean).run().assertStringHeader("Foo").is("x{f:1}").getResponseHeader("Foo").as(ABean.class);
                assertEquals("{f:1}",b.toString());
 
                x = client(A12.class).header("Foo",bean).partSerializer(new 
A12a()).partParser(new A12b()).build();
-               b = 
x.get("/").header("Foo",bean).run().assertStringHeader("Foo").is("x{f:1}").getHeader("Foo").as(ABean.class);
+               b = 
x.get("/").header("Foo",bean).run().assertStringHeader("Foo").is("x{f:1}").getResponseHeader("Foo").as(ABean.class);
                assertEquals("{f:1}",b.toString());
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Paths_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Paths_Test.java
index 3c523c0..0525fc4 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Paths_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Paths_Test.java
@@ -53,38 +53,38 @@ public class RestClient_Paths_Test {
 
        @Test
        public void a01_path_String_Object() throws Exception {
-               client().build().get("/echo/{x}").path("x",new 
A1().init()).run().assertBody().contains("HTTP GET /echo/x=1");
-               client().build().get("/echo/*").path("/*",new 
A1().init()).run().assertBody().contains("HTTP GET /echo/x=1");
+               client().build().get("/echo/{x}").path("x",new 
A1().init()).run().assertBody().contains("GET /echo/x=1 HTTP/1.1");
+               client().build().get("/echo/*").path("/*",new 
A1().init()).run().assertBody().contains("GET /echo/x=1 HTTP/1.1");
                
assertThrown(()->client().build().get("/echo/{x}").path("y","foo")).is("Path 
variable {y} was not found in path.");
        }
 
        @Test
        public void a02_path_NameValuePair() throws Exception {
-               
client().build().get("/echo/{x}").path(pair("x","foo")).run().assertBody().contains("HTTP
 GET /echo/foo");
+               
client().build().get("/echo/{x}").path(pair("x","foo")).run().assertBody().contains("GET
 /echo/foo HTTP/1.1");
        }
 
        @Test
        public void a03_paths_Object() throws Exception {
-               
client().build().get("/echo/{x}").paths(pair("x","foo")).run().assertBody().contains("HTTP
 GET /echo/foo");
-               
client().build().get("/echo/{x}").paths(AList.of(pair("x","foo"))).run().assertBody().contains("HTTP
 GET /echo/foo");
-               
client().build().get("/echo/{x}").paths(pairs("x","foo")).run().assertBody().contains("HTTP
 GET /echo/foo");
-               
client().build().get("/echo/{x}").paths(OMap.of("x","foo")).run().assertBody().contains("HTTP
 GET /echo/foo");
-               client().build().get("/echo/{x}").paths((Object)new 
NameValuePair[]{pair("x","foo")}).run().assertBody().contains("HTTP GET 
/echo/foo");
-               client().build().get("/echo/{x}").paths(new 
A1().init()).run().assertBody().contains("HTTP GET /echo/1");
+               
client().build().get("/echo/{x}").paths(pair("x","foo")).run().assertBody().contains("GET
 /echo/foo HTTP/1.1");
+               
client().build().get("/echo/{x}").paths(AList.of(pair("x","foo"))).run().assertBody().contains("GET
 /echo/foo HTTP/1.1");
+               
client().build().get("/echo/{x}").paths(pairs("x","foo")).run().assertBody().contains("GET
 /echo/foo HTTP/1.1");
+               
client().build().get("/echo/{x}").paths(OMap.of("x","foo")).run().assertBody().contains("GET
 /echo/foo HTTP/1.1");
+               client().build().get("/echo/{x}").paths((Object)new 
NameValuePair[]{pair("x","foo")}).run().assertBody().contains("GET /echo/foo 
HTTP/1.1");
+               client().build().get("/echo/{x}").paths(new 
A1().init()).run().assertBody().contains("GET /echo/1 HTTP/1.1");
                
assertThrown(()->client().build().get("/echo/{x}").paths("x")).is("Invalid type 
passed to paths(): java.lang.String");
-               
client().build().get("/echo/{x}").paths((Object)null).run().assertBody().contains("HTTP
 GET /echo/%7Bx%7D");
+               
client().build().get("/echo/{x}").paths((Object)null).run().assertBody().contains("GET
 /echo/%7Bx%7D HTTP/1.1");
        }
 
        @Test
        public void a04_pathPairs_Objects() throws Exception {
-               
client().build().get("/echo/{x}").pathPairs("x",1).run().assertBody().contains("HTTP
 GET /echo/1");
+               
client().build().get("/echo/{x}").pathPairs("x",1).run().assertBody().contains("GET
 /echo/1 HTTP/1.1");
                
assertThrown(()->client().build().get("/echo/{x}").pathPairs("x")).is("Odd 
number of parameters passed into pathPairs()");
        }
 
        @Test
        public void a05_path_String_Object_Schema() throws Exception {
                String[] a = new String[]{"foo","bar"};
-               
client().build().get("/echo/{x}").path("x",a,T_ARRAY_PIPES).run().assertBody().contains("HTTP
 GET /echo/foo%7Cbar");
+               
client().build().get("/echo/{x}").path("x",a,T_ARRAY_PIPES).run().assertBody().contains("GET
 /echo/foo%7Cbar HTTP/1.1");
        }
 
        
//------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
index 9ea5202..2e777f8 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
@@ -223,11 +223,11 @@ public class RestClient_Response_Body_Test {
                
testClient().entity(stringEntity("{f:1}")).get().run().getBody().as(x4,ABean.class);
                assertObject(x4.get()).asJson().is("{f:1}");
 
-               HttpEntity x5 = 
testClient().entity(stringEntity("{f:1}")).get().run().getBody().as(RestResponseBody.class);
-               assertTrue(x5 instanceof RestResponseBody);
+               HttpEntity x5 = 
testClient().entity(stringEntity("{f:1}")).get().run().getBody().as(ResponseBody.class);
+               assertTrue(x5 instanceof ResponseBody);
 
                HttpEntity x6 = 
testClient().entity(stringEntity("{f:1}")).get().run().getBody().as(HttpEntity.class);
-               assertTrue(x6 instanceof RestResponseBody);
+               assertTrue(x6 instanceof ResponseBody);
 
                
plainTestClient().entity(stringEntity("foo")).get().run().getBody().assertObject(A7a.class).passes(x->((A7a)x).x.equals("foo"));
                
plainTestClient().entity(stringEntity("foo")).get().run().getBody().assertObject(A7b.class).passes(x->((A7b)x).x.equals("foo"));
@@ -322,10 +322,10 @@ public class RestClient_Response_Body_Test {
        @SuppressWarnings("deprecation")
        @Test
        public void b01_httpEntityMethods() throws Exception {
-               RestResponseBody x1 = 
testClient().entity(stringEntity("foo")).get().run().getBody();
+               ResponseBody x1 = 
testClient().entity(stringEntity("foo")).get().run().getBody();
                assertTrue(x1.isRepeatable());
 
-               RestResponseBody x2 = 
testClient().entity(inputStreamEntity("foo")).get().run().getBody();
+               ResponseBody x2 = 
testClient().entity(inputStreamEntity("foo")).get().run().getBody();
                assertFalse(x2.isRepeatable());
                assertLong(x2.getContentLength()).is(-1l);
                x2.cache().asString();
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Headers_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Headers_Test.java
index d0cd4b8..893a3ec 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Headers_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Headers_Test.java
@@ -52,8 +52,8 @@ public class RestClient_Response_Headers_Test {
 
        @Test
        public void a01_exists() throws Exception {
-               
assertFalse(checkFooClient().build().get("/echo").run().getHeader("Foo").exists());
-               
assertTrue(checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").exists());
+               
assertFalse(checkFooClient().build().get("/echo").run().getResponseHeader("Foo").exists());
+               
assertTrue(checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").exists());
        }
 
        public static class A2 extends BasicHeader {
@@ -66,132 +66,132 @@ public class RestClient_Response_Headers_Test {
 
        @Test
        public void a02_asHeader() throws Exception {
-               Header h = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asHeader(BasicStringHeader.class).assertName().is("Foo").assertValue().is("bar");
+               Header h = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asHeader(BasicStringHeader.class).assertName().is("Foo").assertValue().is("bar");
                assertTrue(h instanceof BasicStringHeader);
 
-               h = 
checkFooClient().build().get("/echo").header("Foo","\"bar\"").run().getHeader("Foo").asHeader(ETag.class).assertName().is("ETag").assertValue().is("\"bar\"");
+               h = 
checkFooClient().build().get("/echo").header("Foo","\"bar\"").run().getResponseHeader("Foo").asHeader(ETag.class).assertName().is("ETag").assertValue().is("\"bar\"");
                assertTrue(h instanceof ETag);
 
-               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asHeader(Age.class)).contains("Value
 could not be parsed");
-               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asHeader(A2.class)).contains("Could
 not determine a method to construct type");
+               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asHeader(Age.class)).contains("Value
 could not be parsed");
+               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asHeader(A2.class)).contains("Could
 not determine a method to construct type");
 
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asCsvArrayHeader().assertName().is("Foo").assertValue().is("bar");
-               
checkFooClient().build().get("/echo").header("Foo","*").run().getHeader("Foo").asEntityTagArrayHeader().assertName().is("Foo").assertValue().is("*");
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asStringRangeArrayHeader().assertName().is("Foo").assertValue().is("bar");
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asStringHeader().assertName().is("Foo").assertValue().is("bar");
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asUriHeader().assertName().is("Foo").assertValue().is("bar");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asCsvArrayHeader().assertName().is("Foo").assertValue().is("bar");
+               
checkFooClient().build().get("/echo").header("Foo","*").run().getResponseHeader("Foo").asEntityTagArrayHeader().assertName().is("Foo").assertValue().is("*");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asStringRangeArrayHeader().assertName().is("Foo").assertValue().is("bar");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asStringHeader().assertName().is("Foo").assertValue().is("bar");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asUriHeader().assertName().is("Foo").assertValue().is("bar");
        }
 
        @Test
        public void a03_asString() throws Exception {
-               String s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asString();
+               String s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asString();
                assertEquals("bar", s);
 
                Mutable<String> m = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asString(m);
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asString(m);
                assertEquals("bar", m.get());
 
-               Optional<String> o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asOptionalString();
+               Optional<String> o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asOptionalString();
                assertEquals("bar", o.get());
-               o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Bar").asOptionalString();
+               o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Bar").asOptionalString();
                assertFalse(o.isPresent());
 
-               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asStringOrElse("baz");
+               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asStringOrElse("baz");
                assertEquals("bar", s);
-               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Bar").asStringOrElse("baz");
+               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Bar").asStringOrElse("baz");
                assertEquals("baz", s);
 
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asStringOrElse(m,"baz");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asStringOrElse(m,"baz");
                assertEquals("bar", m.get());
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Bar").asStringOrElse(m,"baz");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Bar").asStringOrElse(m,"baz");
                assertEquals("baz", m.get());
        }
 
        @Test
        public void a04_asType() throws Exception {
-               Integer i = 
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").as(Integer.class);
+               Integer i = 
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").as(Integer.class);
                assertEquals(123, i.intValue());
 
                Mutable<Integer> m1 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").as(m1,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").as(m1,Integer.class);
                assertEquals(123, m1.get().intValue());
 
-               List<Integer> l = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").as(LinkedList.class,Integer.class);
+               List<Integer> l = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").as(LinkedList.class,Integer.class);
                assertObject(l).asJson().is("[1,2]");
 
                Mutable<Integer> m2 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").as(m2,LinkedList.class,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").as(m2,LinkedList.class,Integer.class);
                assertObject(m2.get()).asJson().is("[1,2]");
 
                ClassMeta<LinkedList<Integer>> cm1 = 
BeanContext.DEFAULT.getClassMeta(LinkedList.class, Integer.class);
                ClassMeta<Integer> cm2 = 
BeanContext.DEFAULT.getClassMeta(Integer.class);
 
-               l = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").as(cm1);
+               l = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").as(cm1);
                assertObject(l).asJson().is("[1,2]");
 
                Mutable<LinkedList<Integer>> m3 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").as(m3,cm1);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").as(m3,cm1);
                assertObject(m3.get()).asJson().is("[1,2]");
 
-               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Foo").as(m2,cm1)).contains("Invalid
 number");
+               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Foo").as(m2,cm1)).contains("Invalid
 number");
 
-               Optional<List<Integer>> o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").asOptional(LinkedList.class,Integer.class);
+               Optional<List<Integer>> o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").asOptional(LinkedList.class,Integer.class);
                assertObject(o1.get()).asJson().is("[1,2]");
-               o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Bar").asOptional(LinkedList.class,Integer.class);
+               o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Bar").asOptional(LinkedList.class,Integer.class);
                assertFalse(o1.isPresent());
 
                Mutable<Optional<List<Integer>>> m4 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").asOptional(m4,LinkedList.class,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").asOptional(m4,LinkedList.class,Integer.class);
                assertObject(m4.get().get()).asJson().is("[1,2]");
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Bar").asOptional(m4,LinkedList.class,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Bar").asOptional(m4,LinkedList.class,Integer.class);
                assertFalse(m4.get().isPresent());
 
-               Optional<Integer> o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Foo").asOptional(Integer.class);
+               Optional<Integer> o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Foo").asOptional(Integer.class);
                assertEquals(1, o2.get().intValue());
-               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Bar").asOptional(Integer.class);
+               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Bar").asOptional(Integer.class);
                assertFalse(o2.isPresent());
 
-               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Foo").asOptional(cm2);
+               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Foo").asOptional(cm2);
                assertEquals(1, o2.get().intValue());
-               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Bar").asOptional(cm2);
+               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Bar").asOptional(cm2);
                assertFalse(o2.isPresent());
 
                Mutable<Optional<Integer>> m5 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Foo").asOptional(m5,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Foo").asOptional(m5,Integer.class);
                assertEquals(1, m5.get().get().intValue());
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Bar").asOptional(m5,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Bar").asOptional(m5,Integer.class);
                assertFalse(m5.get().isPresent());
 
                m5 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Foo").asOptional(m5,cm2);
+               
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Foo").asOptional(m5,cm2);
                assertEquals(1, m5.get().get().intValue());
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Bar").asOptional(m5,cm2);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Bar").asOptional(m5,cm2);
                assertFalse(m5.get().isPresent());
 
-               
assertTrue(checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Foo").asMatcher("foo").matches());
-               
assertFalse(checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Bar").asMatcher("foo").matches());
-               
assertTrue(checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Foo").asMatcher("FOO",Pattern.CASE_INSENSITIVE).matches());
-               
assertFalse(checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Bar").asMatcher("FOO",Pattern.CASE_INSENSITIVE).matches());
+               
assertTrue(checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Foo").asMatcher("foo").matches());
+               
assertFalse(checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Bar").asMatcher("foo").matches());
+               
assertTrue(checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Foo").asMatcher("FOO",Pattern.CASE_INSENSITIVE).matches());
+               
assertFalse(checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Bar").asMatcher("FOO",Pattern.CASE_INSENSITIVE).matches());
 
                Mutable<Matcher> m6 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Foo").asMatcher(m6,"foo");
+               
checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Foo").asMatcher(m6,"foo");
                assertTrue(m6.get().matches());
-               
checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Bar").asMatcher(m6,"foo");
+               
checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Bar").asMatcher(m6,"foo");
                assertFalse(m6.get().matches());
-               
checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Foo").asMatcher(m6,"FOO",Pattern.CASE_INSENSITIVE);
+               
checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Foo").asMatcher(m6,"FOO",Pattern.CASE_INSENSITIVE);
                assertTrue(m6.get().matches());
-               
checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Bar").asMatcher(m6,"FOO",Pattern.CASE_INSENSITIVE);
+               
checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Bar").asMatcher(m6,"FOO",Pattern.CASE_INSENSITIVE);
                assertFalse(m6.get().matches());
-               
checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Foo").asMatcher(m6,Pattern.compile("FOO",Pattern.CASE_INSENSITIVE));
+               
checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Foo").asMatcher(m6,Pattern.compile("FOO",Pattern.CASE_INSENSITIVE));
                assertTrue(m6.get().matches());
-               
checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Bar").asMatcher(m6,Pattern.compile("FOO",Pattern.CASE_INSENSITIVE));
+               
checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Bar").asMatcher(m6,Pattern.compile("FOO",Pattern.CASE_INSENSITIVE));
                assertFalse(m6.get().matches());
        }
 
        @Test
        public void a05_toResponse() throws Exception {
                RestResponse r = 
checkFooClient().build().get("/echo").header("Foo","123").run();
-               assertTrue(r == r.getHeader("Foo").toResponse());
+               assertTrue(r == r.getResponseHeader("Foo").toResponse());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -200,14 +200,14 @@ public class RestClient_Response_Headers_Test {
 
        @Test
        public void b01_assertions() throws Exception {
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").assertString().is("bar");
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Bar").assertString().doesNotExist();
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").assertInteger().is(123);
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Bar").assertInteger().doesNotExist();
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").assertLong().is(123l);
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Bar").assertLong().doesNotExist();
-               
checkFooClient().build().get("/echo").header(BasicDateHeader.of("Foo",CALENDAR)).run().getHeader("Foo").assertDate().exists();
-               
checkFooClient().build().get("/echo").header(BasicDateHeader.of("Foo",CALENDAR)).run().getHeader("Bar").assertDate().doesNotExist();
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").assertString().is("bar");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Bar").assertString().doesNotExist();
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").assertInteger().is(123);
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Bar").assertInteger().doesNotExist();
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").assertLong().is(123l);
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Bar").assertLong().doesNotExist();
+               
checkFooClient().build().get("/echo").header(BasicDateHeader.of("Foo",CALENDAR)).run().getResponseHeader("Foo").assertDate().exists();
+               
checkFooClient().build().get("/echo").header(BasicDateHeader.of("Foo",CALENDAR)).run().getResponseHeader("Bar").assertDate().doesNotExist();
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -216,12 +216,12 @@ public class RestClient_Response_Headers_Test {
 
        @Test
        public void c01_getElements() throws Exception {
-               HeaderElement[] e = 
checkFooClient().build().get("/echo").header("Foo","bar=baz;qux=quux").run().getHeader("Foo").getElements();
+               HeaderElement[] e = 
checkFooClient().build().get("/echo").header("Foo","bar=baz;qux=quux").run().getResponseHeader("Foo").getElements();
                assertEquals("bar", e[0].getName());
                assertEquals("baz", e[0].getValue());
                assertEquals("quux", e[0].getParameterByName("qux").getValue());
 
-               e = 
checkFooClient().build().get("/echo").header("Foo","bar=baz;qux=quux").run().getHeader("Bar").getElements();
+               e = 
checkFooClient().build().get("/echo").header("Foo","bar=baz;qux=quux").run().getResponseHeader("Bar").getElements();
                assertEquals(0, e.length);
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Test.java
index bb41eaf..4c288c4 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Test.java
@@ -217,7 +217,7 @@ public class RestClient_Response_Test {
                assertNull(r.getFirstHeader("Foo"));
 
                r.setHeader(BasicHeader.of("Foo","quuux"));
-               r.getHeader("Foo").assertString().is("quuux");
+               r.getResponseHeader("Foo").assertString().is("quuux");
        }
 
        
//------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java
index bea5fe5..70d8bb9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Test.java
@@ -228,13 +228,13 @@ public class RestClient_Test {
                                return super.execute(request, conn, context);
                        }
                };
-               
client().requestExecutor(x).build().get("/echo").run().assertBody().contains("HTTP
 GET /echo");
+               
client().requestExecutor(x).build().get("/echo").run().assertBody().contains("GET
 /echo HTTP/1.1");
                assertTrue(b1.get());
        }
 
        @Test
        public void c04_httpClient_defaultHeaders() throws RestCallException {
-               client().defaultHeaders(AList.of(new 
org.apache.http.message.BasicHeader("Foo","bar"))).build().get("/echo").run().assertBody().contains("HTTP
 GET /echo","Foo: bar");
+               client().defaultHeaders(AList.of(new 
org.apache.http.message.BasicHeader("Foo","bar"))).build().get("/echo").run().assertBody().contains("GET
 /echo HTTP/1.1","Foo: bar");
        }
 
        @Test

Reply via email to