You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2021/03/09 16:26:37 UTC

[juneau] branch master updated: New Thrown header bean.

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 <ja...@salesforce.com>
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");
 	}
 
 	//------------------------------------------------------------------------------------------------------------------