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 9b049e4  New Thrown header bean.
9b049e4 is described below

commit 9b049e47091a099c0b1581d2ca97e1ea0f3eb027
Author: JamesBognar <[email protected]>
AuthorDate: Tue Mar 9 11:26:23 2021 -0500

    New Thrown header bean.
---
 .../java/org/apache/juneau/http/HttpHeaders.java   |  22 +++
 .../java/org/apache/juneau/http/header/Thrown.java | 151 +++++++++++++++++++++
 .../juneau/http/response/HttpExceptionBuilder.java |   5 +-
 .../apache/juneau/rest/client/ResponseBody.java    |   4 +-
 .../juneau/rest/client/RestCallException.java      |  22 ++-
 .../org/apache/juneau/rest/client/RestClient.java  |   6 +-
 .../org/apache/juneau/rest/client/RestRequest.java |  11 +-
 .../apache/juneau/rest/client/RestResponse.java    |  38 +++---
 .../java/org/apache/juneau/rest/RestContext.java   |   4 +-
 .../juneau/rest/reshandlers/DefaultHandler.java    |   3 +-
 .../juneau/rest/client/RestCallException_Test.java |   4 +-
 .../client/RestClient_Config_BeanContext_Test.java |  28 ++--
 .../client/RestClient_Config_RestClient_Test.java  |   6 +-
 .../client/RestClient_Response_Headers_Test.java   |  90 ++++++------
 .../rest/client/RestClient_Response_Test.java      |   6 +-
 15 files changed, 280 insertions(+), 120 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
index f847d5d..82a0aa5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpHeaders.java
@@ -2036,6 +2036,28 @@ public class HttpHeaders {
        }
 
        /**
+        * Creates a new {@link Thrown} header.
+        *
+        * @param value
+        *      The header value.
+        * @return A new header bean, or <jk>null</jk> if the value was 
<jk>null</jk>.
+        */
+       public static final Thrown thrown(Throwable value) {
+               return Thrown.of(value);
+       }
+
+       /**
+        * Creates a new {@link Thrown} header.
+        *
+        * @param value
+        *      The header value.
+        * @return A new header bean, or <jk>null</jk> if the value was 
<jk>null</jk>.
+        */
+       public static final Thrown thrown(String value) {
+               return Thrown.of(value);
+       }
+
+       /**
         * Creates a new {@link Trailer} header.
         *
         * @param value The header value.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
new file mode 100644
index 0000000..354f161
--- /dev/null
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/Thrown.java
@@ -0,0 +1,151 @@
+// 
***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright 
ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not 
use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                
                                              *
+// *                                                                           
                                              *
+// *  http://www.apache.org/licenses/LICENSE-2.0                               
                                              *
+// *                                                                           
                                              *
+// * Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 
express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the 
License.                                              *
+// 
***************************************************************************************************************************
+package org.apache.juneau.http.header;
+
+import static org.apache.juneau.internal.StringUtils.*;
+
+import java.util.*;
+
+import org.apache.juneau.http.annotation.*;
+
+/**
+ * Represents a parsed <l>Thrown</l> HTTP request header.
+ *
+ * <p>
+ * Contains exception information including name and optionally a message.
+ *
+ * <h5 class='figure'>Example</h5>
+ * <p class='bcode w800'>
+ *     Thrown: org.apache.juneau.http.response.NotFound, Resource was not found
+ * </p>
+ *
+ * <p>
+ * This header isn't part of the RFC2616 specification, but is provided to 
allow for Java exception information
+ * to be delivered to remote REST Java interfaces.
+ */
+@Header("Thrown")
+public class Thrown extends BasicHeader {
+
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * An empty unmodifiable Thrown header.
+        */
+       public static final Thrown EMPTY = new Thrown((String)null);
+
+       private final String className, message;
+
+       /**
+        * Convenience creator.
+        *
+        * @param value
+        *      The header value.
+        * @return A new {@link Exception} object.
+        */
+       public static Thrown of(Throwable value) {
+               if (value == null)
+                       return null;
+               return new Thrown(value);
+       }
+
+       /**
+        * Convenience creator.
+        *
+        * @param value
+        *      The header value.
+        * @return A new {@link Exception} object.
+        */
+       public static Thrown of(String value) {
+               if (value == null)
+                       return null;
+               return new Thrown(value);
+       }
+
+       /**
+        * Constructor.
+        *
+        * @param value
+        *      The header value.
+        */
+       public Thrown(Throwable value) {
+               super("Thrown", value);
+               className = 
stripInvalidHttpHeaderChars(value.getClass().getName());
+               message = stripInvalidHttpHeaderChars(value.getMessage());
+       }
+
+       @Override /* Header */
+       public String getValue() {
+               if (message == null)
+                       return className;
+               return className + ", " + message;
+       }
+
+       /**
+        * Constructor.
+        *
+        * @param value
+        *      The header value.
+        */
+       public Thrown(String value) {
+               super("Thrown", value);
+               if (value != null) {
+                       int i = value.indexOf(',');
+                       if (i != -1) {
+                               className = value.substring(0, i).trim();
+                               message = value.substring(i+1).trim();
+                       } else {
+                               className = value;
+                               message = null;
+                       }
+               } else {
+                       className = null;
+                       message = null;
+               }
+       }
+
+       /**
+        * Returns the class name portion of the header.
+        *
+        * @return The class name portion of the header, or <jk>null</jk> if 
not there.
+        */
+       public String getClassName() {
+               return className;
+       }
+
+       /**
+        * Returns the class name portion of the header.
+        *
+        * @return The class name portion of the header, never <jk>null</jk>.
+        */
+       public Optional<String> className() {
+               return Optional.ofNullable(className);
+       }
+
+       /**
+        * Returns the message portion of the header.
+        *
+        * @return The message portion of the header, or <jk>null</jk> if not 
there.
+        */
+       public String getMessage() {
+               return message;
+       }
+
+       /**
+        * Returns the message portion of the header.
+        *
+        * @return The message portion of the header, never <jk>null</jk>.
+        */
+       public Optional<String> message() {
+               return Optional.ofNullable(message);
+       }
+}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
index fb950c8..3eac8ce 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/response/HttpExceptionBuilder.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.response;
 
 import static org.apache.juneau.http.HttpEntities.*;
+import static org.apache.juneau.http.HttpHeaders.*;
 
 import java.util.*;
 
@@ -84,9 +85,9 @@ public class HttpExceptionBuilder<T extends 
BasicHttpException> extends BasicRun
         * @return This object (for method chaining).
         */
        public HttpExceptionBuilder<?> copyFrom(HttpResponse response) {
-               Header h = response.getLastHeader("Exception-Message");
+               Header h = response.getLastHeader("Thrown");
                if (h != null)
-                       message(h.getValue());
+                       message(thrown(h.getValue()).message().orElse(null));
                headers(response.getAllHeaders());
                body(response.getEntity());
                return this;
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
index 0680ddd..5c5e72e 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/ResponseBody.java
@@ -673,7 +673,7 @@ public class ResponseBody implements HttpEntity {
 
                        if (type.is(HttpResource.class))
                                type = 
(ClassMeta<T>)getClassMeta(BasicResource.class);
-                               
+
                        ConstructorInfo ci = 
type.getInfo().getPublicConstructor(HttpResponse.class);
                        if (ci != null) {
                                try {
@@ -683,7 +683,7 @@ public class ResponseBody implements HttpEntity {
                                }
                        }
 
-                       String ct = 
firstNonEmpty(response.getResponseHeader("Content-Type").orElse("text/plain"));
+                       String ct = 
firstNonEmpty(response.getHeader("Content-Type").orElse("text/plain"));
 
                        if (parser == null)
                                parser = client.getMatchingParser(ct);
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
index 65edcdd..fe2bdf5 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCallException.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.internal.StringUtils.*;
 import java.text.*;
 
 import org.apache.http.*;
+import org.apache.juneau.http.header.*;
 import org.apache.juneau.internal.*;
 
 /**
@@ -26,7 +27,8 @@ public final class RestCallException extends HttpException {
 
        private static final long serialVersionUID = 1L;
 
-       private RestResponse response;
+       private final RestResponse response;
+       private final Thrown thrown;
 
        /**
         * Constructor.
@@ -39,24 +41,16 @@ public final class RestCallException extends HttpException {
        public RestCallException(RestResponse response, Throwable cause, String 
message, Object...args) {
                super(format(message,args),cause);
                this.response = response;
+               this.thrown = response == null ? Thrown.EMPTY : 
response.getHeader("Thrown").asHeader(Thrown.class);
        }
 
        /**
-        * Returns the value of the <js>"Exception-Name"</js> header on the 
response.
+        * Returns the value of the <js>"Thrown"</js> header on the response.
         *
-        * @return The value of the <js>"Exception-Name"</js> header on the 
response, or <jk>null</jk> if not found.
+        * @return The value of the <js>"Thrown"</js> header on the response, 
never <jk>null</jk>.
         */
-       public String getServerExceptionName() {
-               return response == null ? null : 
response.getStringHeader("Exception-Name").orElse(null);
-       }
-
-       /**
-        * Returns the value of the <js>"Exception-Message"</js> header on the 
response.
-        *
-        * @return The value of the <js>"Exception-Message"</js> header on the 
response, or <jk>null</jk> if not found.
-        */
-       public String getServerExceptionMessage() {
-               return response == null ? null : 
response.getStringHeader("Exception-Message").orElse(null);
+       public Thrown getThrown() {
+               return thrown;
        }
 
        /**
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 0c0849a..352ebad 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
@@ -577,7 +577,6 @@ import org.apache.juneau.utils.*;
  * <ul class='javatree'>
  *     <li class='jc'>{@link RestResponse}
  *     <ul>
- *             <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>
@@ -588,14 +587,13 @@ import org.apache.juneau.utils.*;
  * </ul>
  *
  * <p class='w900'>
- * 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>.
+ * The {@link RestResponse#getFirstHeader(String)} and {@link 
RestResponse#getLastHeader(String)} methods return an empty {@link 
ResponseHeader} object instead of<jk>null</jk>.
  * This allows it to be used more easily in fluent calls.
  *
  * <h5 class='figure'>Example:</h5>
  * <p class='bcode w800'>
  *     <jc>// See if response contains Location header.</jc>
- *     <jk>boolean</jk> <jv>hasLocationHeader</jv> = 
client.get(<jsf>URI</jsf>).complete().getHeader(<js>"Location"</js>).exists();
+ *     <jk>boolean</jk> <jv>hasLocationHeader</jv> = 
client.get(<jsf>URI</jsf>).complete().getLastHeader(<js>"Location"</js>).exists();
  * </p>
  *
  * <p class='w900'>
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 99ec883..127bdfd 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
@@ -2940,10 +2940,11 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
                        String method = getMethod();
                        int sc = response.getStatusCode();
 
-                       if (response.containsHeader("Exception-Name") && 
rethrow != null) {
-                               String exceptionName = 
response.getStringHeader("Exception-Name").orElse(null);
+                       Thrown thrown = 
response.getHeader("Thrown").asHeader(Thrown.class);
+                       if (thrown.isPresent() && rethrow != null) {
+                               String className = 
thrown.className().orElse(null);
                                for (Class<? extends Throwable> t : rethrow) {
-                                       if (t.getName().equals(exceptionName)) {
+                                       if (t.getName().equals(className)) {
                                                ConstructorInfo c = null;
                                                ClassInfo ci = ClassInfo.of(t);
                                                c = 
ci.getPublicConstructor(HttpResponse.class);
@@ -2951,10 +2952,10 @@ public class RestRequest extends BeanSession implements 
HttpUriRequest, Configur
                                                        throw 
c.<Throwable>invoke(response);
                                                c = 
ci.getPublicConstructor(String.class);
                                                if (c != null)
-                                                       throw 
c.<Throwable>invoke(response.getStringHeader("Exception-Message").orElse(response.getBody().asString()));
+                                                       throw 
c.<Throwable>invoke(thrown.message().orElse(response.getBody().asString()));
                                                c = 
ci.getPublicConstructor(String.class,Throwable.class);
                                                if (c != null)
-                                                       throw 
c.<Throwable>invoke(response.getStringHeader("Exception-Message").orElse(response.getBody().asString()),
 null);
+                                                       throw 
c.<Throwable>invoke(thrown.message().orElse(response.getBody().asString()), 
null);
                                                c = ci.getPublicConstructor();
                                                if (c != null)
                                                        throw 
c.<Throwable>invoke();
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 68d7f57..3b2328a 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
@@ -209,21 +209,7 @@ public class RestResponse implements HttpResponse {
         * @return The header value, never <jk>null</jk>
         */
        public Optional<String> getStringHeader(String name) {
-               return getResponseHeader(name).asString();
-       }
-
-       /**
-        * Returns the last header with the specified name.
-        *
-        * Unlike {@link #getFirstHeader(String)} and {@link 
#getLastHeader(String)}, this method returns an empty
-        * {@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 ResponseHeader getResponseHeader(String name) {
-               return new ResponseHeader(request, this, 
getLastHeader(name)).parser(partParser);
+               return getHeader(name).asString();
        }
 
        /**
@@ -250,7 +236,7 @@ public class RestResponse implements HttpResponse {
         * @throws RestCallException If REST call failed.
         */
        public Optional<ContentType> getContentType() throws RestCallException {
-               return 
getResponseHeader("Content-Type").asType(ContentType.class);
+               return getHeader("Content-Type").asType(ContentType.class);
        }
 
        /**
@@ -330,7 +316,7 @@ public class RestResponse implements HttpResponse {
         * @return A new fluent assertion object.
         */
        public FluentResponseHeaderAssertion<RestResponse> assertHeader(String 
name) {
-               return new FluentResponseHeaderAssertion<>(getLastHeader(name), 
this);
+               return new FluentResponseHeaderAssertion<>(getHeader(name), 
this);
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -450,7 +436,7 @@ public class RestResponse implements HttpResponse {
                                        String name = 
pm.getPartName().orElse(null);
                                        ClassMeta<?> type = 
rc.getClassMeta(method.getGenericReturnType());
                                        if (pt == RESPONSE_HEADER)
-                                               return 
getResponseHeader(name).parser(pp).schema(schema).asType(type).orElse(null);
+                                               return 
getHeader(name).parser(pp).schema(schema).asType(type).orElse(null);
                                        if (pt == RESPONSE_STATUS)
                                                return getStatusCode();
                                        return 
getBody().schema(schema).asType(type);
@@ -672,8 +658,7 @@ public class RestResponse implements HttpResponse {
         */
        @Override /* HttpMessage */
        public ResponseHeader getFirstHeader(String name) {
-               Header h = response.getFirstHeader(name);
-               return new ResponseHeader(request, this, h).parser(partParser);
+               return new ResponseHeader(request, this, 
response.getFirstHeader(name)).parser(partParser);
        }
 
        /**
@@ -689,8 +674,17 @@ public class RestResponse implements HttpResponse {
         */
        @Override /* HttpMessage */
        public ResponseHeader getLastHeader(String name) {
-               Header h = response.getLastHeader(name);
-               return new ResponseHeader(request, this, h).parser(partParser);
+               return new ResponseHeader(request, this, 
response.getLastHeader(name)).parser(partParser);
+       }
+
+       /**
+        * A synonym for {@link #getLastHeader(String)}.
+        *
+        * @param name The name of the header to return.
+        * @return The header, never <jk>null</jk>.
+        */
+       public ResponseHeader getHeader(String name) {
+               return getLastHeader(name);
        }
 
        /**
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index e403586..3174887 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -6892,8 +6892,8 @@ public class RestContext extends BeanContext {
                if (t == null)
                        t = e2.getRootCause();
                if (t != null) {
-                       res.setHeader("Exception-Name", 
stripInvalidHttpHeaderChars(t.getClass().getName()));
-                       res.setHeader("Exception-Message", 
stripInvalidHttpHeaderChars(t.getMessage()));
+                       Thrown t2 = thrown(t);
+                       res.setHeader(t2.getName(), t2.getValue());
                }
 
                try {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
index 0ee046f..35823ac 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/reshandlers/DefaultHandler.java
@@ -75,8 +75,7 @@ public class DefaultHandler implements ResponseHandler {
                        boolean isThrowable = 
rm.getClassMeta().isChildOf(Throwable.class);
                        if (isThrowable && o != null) {
                                Throwable t = (Throwable)o;
-                               res.setHeaderSafe("Exception-Name", 
rm.getClassMeta().getName());
-                               res.setHeaderSafe("Exception-Message", 
t.getMessage());
+                               res.setHeader(Thrown.of(t));
                                if (req.isDebug())
                                        t.printStackTrace();
                        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestCallException_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestCallException_Test.java
index 339f40e..235feb2 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestCallException_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestCallException_Test.java
@@ -68,8 +68,8 @@ public class RestCallException_Test {
                }
 
                RestCallException e = new RestCallException(null, null, null);
-               assertNull(e.getServerExceptionMessage());
-               assertNull(e.getServerExceptionName());
+               assertNotNull(e.getThrown());
+               assertFalse(e.getThrown().isPresent());
                assertEquals(0, e.getResponseCode());
        }
 
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 7a66f62..3c20067 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
@@ -107,7 +107,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("1")
                        .assertHeader("X").is("1");
                assertEquals(1,x.getBody().asType(A2a.class).f);
-               
assertEquals(1,x.getResponseHeader("X").asType(A2a.class).get().f);
+               assertEquals(1,x.getHeader("X").asType(A2a.class).get().f);
        }
 
        public static class A3 {
@@ -137,7 +137,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1,f2:2}")
                        .assertHeader("X").is("f1=1,f2=2");
                assertEquals(2,x.getBody().asType(A3.class).f2);
-               
assertEquals(2,x.getResponseHeader("X").asType(A3.class).get().f2);
+               assertEquals(2,x.getHeader("X").asType(A3.class).get().f2);
        }
 
        public static interface A4a {
@@ -182,7 +182,7 @@ public class RestClient_Config_BeanContext_Test {
                        .is("{f1:1}")
                        .assertHeader("X").is("f1=1");
                assertEquals(0,x.getBody().asType(A4b.class).f2);
-               
assertEquals(0,x.getResponseHeader("X").asType(A4b.class).get().f2);
+               assertEquals(0,x.getHeader("X").asType(A4b.class).get().f2);
 
                x = client(A2b.class)
                        .beanProperties(A4b.class,"f1")
@@ -194,7 +194,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1}")
                        .assertHeader("X").is("f1=1");
                assertEquals(0,x.getBody().asType(A4b.class).f2);
-               
assertEquals(0,x.getResponseHeader("X").asType(A4b.class).get().f2);
+               assertEquals(0,x.getHeader("X").asType(A4b.class).get().f2);
 
                x = client(A2b.class)
                        .beanProperties(A4b.class,"f1")
@@ -206,7 +206,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1}")
                        .assertHeader("X").is("f1=1");
                assertEquals(0,x.getBody().asType(A4b.class).f2);
-               
assertEquals(0,x.getResponseHeader("X").asType(A4b.class).get().f2);
+               assertEquals(0,x.getHeader("X").asType(A4b.class).get().f2);
 
                x = client(A2b.class)
                        .beanProperties(A4b.class,"f1")
@@ -218,7 +218,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1}")
                        .assertHeader("X").is("f1=1");
                assertEquals(0,x.getBody().asType(A4b.class).f2);
-               
assertEquals(0,x.getResponseHeader("X").asType(A4b.class).get().f2);
+               assertEquals(0,x.getHeader("X").asType(A4b.class).get().f2);
 
                x = client(A2b.class)
                        .interfaces(A4a.class)
@@ -230,7 +230,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f3:3}")
                        .assertHeader("X").is("f3=3");
                assertEquals(3,x.getBody().asType(A4b.class).f3);
-               
assertEquals(3,x.getResponseHeader("X").asType(A4b.class).get().f3);
+               assertEquals(3,x.getHeader("X").asType(A4b.class).get().f3);
        }
 
        public static class A5  {
@@ -271,7 +271,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1,f2:2}")
                        .assertHeader("X").is("f1=1,f2=2");
                assertEquals(2,x.getBody().asType(A5.class).f2);
-               
assertEquals(2,x.getResponseHeader("X").asType(A5.class).get().f2);
+               assertEquals(2,x.getHeader("X").asType(A5.class).get().f2);
        }
 
        public static class A6 {}
@@ -422,7 +422,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1,f2:2}")
                        .assertHeader("X").is("f1=1,f2=2");
                assertEquals("1/0",x.getBody().asType(A9.class).toString());
-               
assertEquals("1/0",x.getResponseHeader("X").asType(A9.class).get().toString());
+               
assertEquals("1/0",x.getHeader("X").asType(A9.class).get().toString());
 
                x = client(A2b.class)
                        .beanPropertiesReadOnly(A9.class,"f2")
@@ -434,7 +434,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1,f2:2}")
                        .assertHeader("X").is("f1=1,f2=2");
                assertEquals("1/0",x.getBody().asType(A9.class).toString());
-               
assertEquals("1/0",x.getResponseHeader("X").asType(A9.class).get().toString());
+               
assertEquals("1/0",x.getHeader("X").asType(A9.class).get().toString());
 
                x = client(A2b.class)
                        .beanPropertiesReadOnly("O9","f2")
@@ -446,7 +446,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1,f2:2}")
                        .assertHeader("X").is("f1=1,f2=2");
                assertEquals("1/0",x.getBody().asType(A9.class).toString());
-               
assertEquals("1/0",x.getResponseHeader("X").asType(A9.class).get().toString());
+               
assertEquals("1/0",x.getHeader("X").asType(A9.class).get().toString());
        }
 
        @Test
@@ -463,7 +463,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1}")
                        .assertHeader("X").is("f1=1");
                assertEquals("1/0",x.getBody().asType(A9.class).toString());
-               
assertEquals("1/0",x.getResponseHeader("X").asType(A9.class).get().toString());
+               
assertEquals("1/0",x.getHeader("X").asType(A9.class).get().toString());
 
                x = client(A2b.class)
                        .beanPropertiesWriteOnly(A9.class,"f2")
@@ -475,7 +475,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1}")
                        .assertHeader("X").is("f1=1");
                assertEquals("1/0",x.getBody().asType(A9.class).toString());
-               
assertEquals("1/0",x.getResponseHeader("X").asType(A9.class).get().toString());
+               
assertEquals("1/0",x.getHeader("X").asType(A9.class).get().toString());
 
                x = client(A2b.class)
                        .beanPropertiesWriteOnly("A9","f2")
@@ -487,7 +487,7 @@ public class RestClient_Config_BeanContext_Test {
                        .assertBody().is("{f1:1}")
                        .assertHeader("X").is("f1=1");
                assertEquals("1/0",x.getBody().asType(A9.class).toString());
-               
assertEquals("1/0",x.getResponseHeader("X").asType(A9.class).get().toString());
+               
assertEquals("1/0",x.getHeader("X").asType(A9.class).get().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 9dd2be7..c2b9f35 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
@@ -485,13 +485,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().assertHeader("Foo").is("x{f:1}").getResponseHeader("Foo").asType(ABean.class).get();
+               ABean b = 
x.get("/").header("Foo",bean).run().assertHeader("Foo").is("x{f:1}").getHeader("Foo").asType(ABean.class).get();
                assertEquals("{f:1}",b.toString());
-               b = 
x.get().header("Foo",bean).run().assertHeader("Foo").is("x{f:1}").getResponseHeader("Foo").asType(ABean.class).get();
+               b = 
x.get().header("Foo",bean).run().assertHeader("Foo").is("x{f:1}").getHeader("Foo").asType(ABean.class).get();
                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().assertHeader("Foo").is("x{f:1}").getResponseHeader("Foo").asType(ABean.class).get();
+               b = 
x.get("/").header("Foo",bean).run().assertHeader("Foo").is("x{f:1}").getHeader("Foo").asType(ABean.class).get();
                assertEquals("{f:1}",b.toString());
        }
 
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 28fbf16..d18a0a1 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().getResponseHeader("Foo").isPresent());
-               
assertTrue(checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").isPresent());
+               
assertFalse(checkFooClient().build().get("/echo").run().getHeader("Foo").isPresent());
+               
assertTrue(checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").isPresent());
        }
 
        public static class A2 extends BasicHeader {
@@ -66,95 +66,95 @@ public class RestClient_Response_Headers_Test {
 
        @Test
        public void a02_asHeader() throws Exception {
-               Header h = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asHeader(BasicStringHeader.class).assertName().is("Foo").assertValue().is("bar");
+               Header h = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asHeader(BasicStringHeader.class).assertName().is("Foo").assertValue().is("bar");
                assertTrue(h instanceof BasicStringHeader);
 
-               h = 
checkFooClient().build().get("/echo").header("Foo","\"bar\"").run().getResponseHeader("Foo").asHeader(ETag.class).assertName().is("ETag").assertValue().is("\"bar\"");
+               h = 
checkFooClient().build().get("/echo").header("Foo","\"bar\"").run().getHeader("Foo").asHeader(ETag.class).assertName().is("ETag").assertValue().is("\"bar\"");
                assertTrue(h instanceof ETag);
 
-               
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");
+               
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");
 
-               
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");
+               
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");
        }
 
        @Test
        public void a03_asString() throws Exception {
-               String s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asString().orElse(null);
+               String s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asString().orElse(null);
                assertEquals("bar", s);
 
                Mutable<String> m = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asString(m);
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asString(m);
                assertEquals("bar", m.get());
 
-               Optional<String> o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asString();
+               Optional<String> o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asString();
                assertEquals("bar", o.get());
-               o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Bar").asString();
+               o = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Bar").asString();
                assertFalse(o.isPresent());
 
-               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").asString().orElse("baz");
+               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").asString().orElse("baz");
                assertEquals("bar", s);
-               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Bar").asString().orElse("baz");
+               s = 
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Bar").asString().orElse("baz");
                assertEquals("baz", s);
        }
 
        @SuppressWarnings("unchecked")
        @Test
        public void a04_asType() throws Exception {
-               Integer i = 
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").asType(Integer.class).orElse(null);
+               Integer i = 
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").asType(Integer.class).orElse(null);
                assertEquals(123, i.intValue());
 
                Mutable<Integer> m1 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").asType(m1,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").asType(m1,Integer.class);
                assertEquals(123, m1.get().intValue());
 
-               List<Integer> l = (List<Integer>) 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").asType(LinkedList.class,Integer.class).get();
+               List<Integer> l = (List<Integer>) 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").asType(LinkedList.class,Integer.class).get();
                assertObject(l).asJson().is("[1,2]");
 
                Mutable<Integer> m2 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").asType(m2,LinkedList.class,Integer.class);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").asType(m2,LinkedList.class,Integer.class);
 
                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().getResponseHeader("Foo").asType(cm1).get();
+               l = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").asType(cm1).get();
                assertObject(l).asJson().is("[1,2]");
 
                Mutable<LinkedList<Integer>> m3 = Mutable.create();
-               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").asType(m3,cm1);
+               
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").asType(m3,cm1);
                assertObject(m3.get()).asJson().is("[1,2]");
 
-               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","foo").run().getResponseHeader("Foo").asType(m2,cm1)).contains("Invalid
 number");
+               
assertThrown(()->checkFooClient().build().get("/echo").header("Foo","foo").run().getHeader("Foo").asType(m2,cm1)).contains("Invalid
 number");
 
-               Optional<List<Integer>> o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Foo").asType(LinkedList.class,Integer.class);
+               Optional<List<Integer>> o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Foo").asType(LinkedList.class,Integer.class);
                assertObject(o1.get()).asJson().is("[1,2]");
-               o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getResponseHeader("Bar").asType(LinkedList.class,Integer.class);
+               o1 = 
checkFooClient().build().get("/echo").header("Foo","1,2").run().getHeader("Bar").asType(LinkedList.class,Integer.class);
                assertFalse(o1.isPresent());
 
-               Optional<Integer> o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Foo").asType(Integer.class);
+               Optional<Integer> o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Foo").asType(Integer.class);
                assertEquals(1, o2.get().intValue());
-               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Bar").asType(Integer.class);
+               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Bar").asType(Integer.class);
                assertFalse(o2.isPresent());
 
-               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Foo").asType(cm2);
+               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Foo").asType(cm2);
                assertEquals(1, o2.get().intValue());
-               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getResponseHeader("Bar").asType(cm2);
+               o2 = 
checkFooClient().build().get("/echo").header("Foo","1").run().getHeader("Bar").asType(cm2);
                assertFalse(o2.isPresent());
 
-               
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());
+               
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());
        }
 
        @Test
        public void a05_toResponse() throws Exception {
                RestResponse r = 
checkFooClient().build().get("/echo").header("Foo","123").run();
-               assertTrue(r == r.getResponseHeader("Foo").response());
+               assertTrue(r == r.getHeader("Foo").response());
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -163,14 +163,14 @@ public class RestClient_Response_Headers_Test {
 
        @Test
        public void b01_assertions() throws Exception {
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Foo").assertValue().is("bar");
-               
checkFooClient().build().get("/echo").header("Foo","bar").run().getResponseHeader("Bar").assertValue().doesNotExist();
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").assertValue().asInteger().is(123);
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Bar").assertValue().doesNotExist();
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Foo").assertValue().asLong().is(123l);
-               
checkFooClient().build().get("/echo").header("Foo","123").run().getResponseHeader("Bar").assertValue().asLong().doesNotExist();
-               
checkFooClient().build().get("/echo").header(dateHeader("Foo",CALENDAR)).run().getResponseHeader("Foo").assertValue().asDate().exists();
-               
checkFooClient().build().get("/echo").header(dateHeader("Foo",CALENDAR)).run().getResponseHeader("Bar").assertValue().asDate().doesNotExist();
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Foo").assertValue().is("bar");
+               
checkFooClient().build().get("/echo").header("Foo","bar").run().getHeader("Bar").assertValue().doesNotExist();
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").assertValue().asInteger().is(123);
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Bar").assertValue().doesNotExist();
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Foo").assertValue().asLong().is(123l);
+               
checkFooClient().build().get("/echo").header("Foo","123").run().getHeader("Bar").assertValue().asLong().doesNotExist();
+               
checkFooClient().build().get("/echo").header(dateHeader("Foo",CALENDAR)).run().getHeader("Foo").assertValue().asDate().exists();
+               
checkFooClient().build().get("/echo").header(dateHeader("Foo",CALENDAR)).run().getHeader("Bar").assertValue().asDate().doesNotExist();
        }
 
        
//------------------------------------------------------------------------------------------------------------------
@@ -179,12 +179,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().getResponseHeader("Foo").getElements();
+               HeaderElement[] e = 
checkFooClient().build().get("/echo").header("Foo","bar=baz;qux=quux").run().getHeader("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().getResponseHeader("Bar").getElements();
+               e = 
checkFooClient().build().get("/echo").header("Foo","bar=baz;qux=quux").run().getHeader("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 161ea4b..4213dd5 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
@@ -195,8 +195,8 @@ public class RestClient_Response_Test {
                assertEquals(0, r.getHeaders("Bar").length);
                r.getFirstHeader("Foo").assertValue().is("bar");
                assertFalse(r.getFirstHeader("Bar").isPresent());
-               r.getLastHeader("Foo").assertValue().is("qux");
-               assertFalse(r.getLastHeader("Bar").isPresent());
+               r.getHeader("Foo").assertValue().is("qux");
+               assertFalse(r.getHeader("Bar").isPresent());
 
                r.setHeaders(new Header[]{basicHeader("Foo", "quux")});
                r.getFirstHeader("Foo").assertValue().is("quux");
@@ -216,7 +216,7 @@ public class RestClient_Response_Test {
                assertFalse(r.getFirstHeader("Foo").isPresent());
 
                r.setHeader(basicHeader("Foo","quuux"));
-               r.getResponseHeader("Foo").assertValue().is("quuux");
+               r.getHeader("Foo").assertValue().is("quuux");
        }
 
        
//------------------------------------------------------------------------------------------------------------------

Reply via email to