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");
}
//------------------------------------------------------------------------------------------------------------------