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 67c883e RestClient tests
67c883e is described below
commit 67c883ed1e706ab04aaaf660363e95bbce7b6e55
Author: JamesBognar <[email protected]>
AuthorDate: Mon Mar 23 19:22:44 2020 -0400
RestClient tests
---
.../org/apache/juneau/http/BasicDateHeader.java | 63 +++-
.../{BasicDateHeader.java => ClientVersion.java} | 47 +--
.../java/org/apache/juneau/http/ContentLength.java | 9 +
.../src/main/java/org/apache/juneau/http/Date.java | 28 +-
.../main/java/org/apache/juneau/http/Expires.java | 23 +-
.../http/{BasicDateHeader.java => Forwarded.java} | 47 +--
.../org/apache/juneau/http/IfModifiedSince.java | 23 +-
.../org/apache/juneau/http/IfUnmodifiedSince.java | 23 +-
.../java/org/apache/juneau/http/LastModified.java | 23 +-
.../http/{BasicDateHeader.java => NoTrace.java} | 47 +--
.../http/{BasicDateHeader.java => Origin.java} | 47 +--
.../juneau/rest/client2/RestClientBuilderTest.java | 365 +++++++++++++++++++++
.../juneau/rest/mock2/MockServletRequest.java | 2 +-
.../java/org/apache/juneau/rest/RestContext.java | 4 +-
.../juneau/rest/mock/MockServletRequest.java | 2 +-
15 files changed, 601 insertions(+), 152 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
index 7a88fb2..3f8237c 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
@@ -12,7 +12,12 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
-import org.apache.juneau.internal.*;
+import static java.time.format.DateTimeFormatter.*;
+
+import java.time.*;
+import java.util.*;
+
+import org.apache.juneau.annotation.*;
/**
* Category of headers that consist of a single HTTP-date.
@@ -27,34 +32,62 @@ import org.apache.juneau.internal.*;
* <li class='extlink'>{@doc RFC2616}
* </ul>
*/
+@BeanIgnore
public class BasicDateHeader extends BasicHeader {
- private final java.util.Date date;
- private final String raw;
+ private final ZonedDateTime zdt;
/**
* Constructor.
*
* @param name The HTTP header name.
- * @param raw The raw header value.
+ * @param value The raw header value.
+ */
+ public BasicDateHeader(String name, String value) {
+ super(name, value);
+ this.zdt = ZonedDateTime.from(RFC_1123_DATE_TIME.parse(value));
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param name The HTTP header name.
+ * @param value The header value.
+ */
+ public BasicDateHeader(String name, Calendar value) {
+ this(name, asZdt(value));
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param name The HTTP header name.
+ * @param value The header value.
+ */
+ public BasicDateHeader(String name, ZonedDateTime value) {
+ super(name, RFC_1123_DATE_TIME.format(value));
+ this.zdt = value;
+ }
+
+ /**
+ * Returns this header value as a {@link java.util.Calendar}.
+ *
+ * @return This header value as a {@link java.util.Calendar}, or
<jk>null</jk> if the header could not be parsed.
*/
- protected BasicDateHeader(String name, String raw) {
- super(name, raw);
- this.raw = raw;
- this.date = DateUtils.parseDate(raw);
+ public Calendar asCalendar() {
+ return GregorianCalendar.from(zdt);
}
/**
- * Returns this header value as a {@link java.util.Date}.
+ * Returns this header value as a {@link java.util.Calendar}.
*
- * @return This header value as a {@link java.util.Date}, or
<jk>null</jk> if the header could not be parsed.
+ * @return This header value as a {@link java.util.Calendar}, or
<jk>null</jk> if the header could not be parsed.
*/
- public java.util.Date asDate() {
- return date;
+ public ZonedDateTime asZonedDateTime() {
+ return zdt;
}
- @Override /* Object */
- public String toString() {
- return raw;
+ private static ZonedDateTime asZdt(Calendar o) {
+ return o instanceof GregorianCalendar ?
((GregorianCalendar)o).toZonedDateTime() :
o.toInstant().atZone(ZoneId.systemDefault());
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ClientVersion.java
similarity index 63%
copy from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
copy to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ClientVersion.java
index 7a88fb2..223021e 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ClientVersion.java
@@ -12,49 +12,32 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
-import org.apache.juneau.internal.*;
+import org.apache.juneau.http.annotation.*;
/**
- * Category of headers that consist of a single HTTP-date.
- *
- * <p>
- * <h5 class='figure'>Example</h5>
- * <p class='bcode w800'>
- * If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
- * </p>
- *
- * <ul class='seealso'>
- * <li class='extlink'>{@doc RFC2616}
- * </ul>
+ * Represents a parsed <l>X-Client-Version</l> HTTP request header.
*/
-public class BasicDateHeader extends BasicHeader {
-
- private final java.util.Date date;
- private final String raw;
+@Header("X-Client-Version")
+public final class ClientVersion extends BasicStringHeader {
/**
- * Constructor.
+ * Returns a parsed <c>X-Client-Version</c> header.
*
- * @param name The HTTP header name.
- * @param raw The raw header value.
+ * @param value The <c>X-Client-Version</c> header string.
+ * @return The parsed <c>X-Client-Version</c> header, or <jk>null</jk>
if the string was null.
*/
- protected BasicDateHeader(String name, String raw) {
- super(name, raw);
- this.raw = raw;
- this.date = DateUtils.parseDate(raw);
+ public static ClientVersion forString(String value) {
+ if (value == null)
+ return null;
+ return new ClientVersion(value);
}
/**
- * Returns this header value as a {@link java.util.Date}.
+ * Constructor.
*
- * @return This header value as a {@link java.util.Date}, or
<jk>null</jk> if the header could not be parsed.
+ * @param value The value for this header.
*/
- public java.util.Date asDate() {
- return date;
- }
-
- @Override /* Object */
- public String toString() {
- return raw;
+ public ClientVersion(String value) {
+ super("X-Client-Version", value);
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLength.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLength.java
index a6e307e..91a12c5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLength.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLength.java
@@ -71,6 +71,15 @@ public final class ContentLength extends BasicLongHeader {
}
/**
+ * Constructor.
+ *
+ * @param value The value for this header.
+ */
+ public ContentLength(Integer value) {
+ this(value == null ? null : value.longValue());
+ }
+
+ /**
* Returns a parsed <c>Content-Length</c> header.
*
* @param value The <c>Content-Length</c> header string.
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Date.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Date.java
index 55c2ffd..87ad081 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Date.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Date.java
@@ -12,6 +12,9 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
+import java.time.*;
+import java.util.*;
+
import org.apache.juneau.http.annotation.*;
/**
@@ -91,7 +94,30 @@ public final class Date extends BasicDateHeader {
return new Date(value);
}
- private Date(String value) {
+ /**
+ * Constructor.
+ *
+ * @param value Header value in RFC1123 format.
+ */
+ public Date(String value) {
+ super("Date", value);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public Date(Calendar value) {
+ super("Date", value);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public Date(ZonedDateTime value) {
super("Date", value);
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expires.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expires.java
index 2e7c225..c8f7463 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expires.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expires.java
@@ -12,6 +12,9 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
+import java.time.*;
+import java.util.*;
+
import org.apache.juneau.http.annotation.*;
/**
@@ -95,9 +98,27 @@ public final class Expires extends BasicDateHeader {
/**
* Constructor.
*
- * @param value The value for this header.
+ * @param value Header value in RFC1123 format.
*/
public Expires(String value) {
super("Expires", value);
}
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public Expires(Calendar value) {
+ super("Expires", value);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public Expires(ZonedDateTime value) {
+ super("Expires", value);
+ }
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Forwarded.java
similarity index 63%
copy from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
copy to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Forwarded.java
index 7a88fb2..af17bfa 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Forwarded.java
@@ -12,49 +12,32 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
-import org.apache.juneau.internal.*;
+import org.apache.juneau.http.annotation.*;
/**
- * Category of headers that consist of a single HTTP-date.
- *
- * <p>
- * <h5 class='figure'>Example</h5>
- * <p class='bcode w800'>
- * If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
- * </p>
- *
- * <ul class='seealso'>
- * <li class='extlink'>{@doc RFC2616}
- * </ul>
+ * Represents a parsed <l>Forwarded</l> HTTP request header.
*/
-public class BasicDateHeader extends BasicHeader {
-
- private final java.util.Date date;
- private final String raw;
+@Header("Forwarded")
+public final class Forwarded extends BasicStringHeader {
/**
- * Constructor.
+ * Returns a parsed <c>Forwarded</c> header.
*
- * @param name The HTTP header name.
- * @param raw The raw header value.
+ * @param value The <c>Forwarded</c> header string.
+ * @return The parsed <c>Forwarded</c> header, or <jk>null</jk> if the
string was null.
*/
- protected BasicDateHeader(String name, String raw) {
- super(name, raw);
- this.raw = raw;
- this.date = DateUtils.parseDate(raw);
+ public static Forwarded forString(String value) {
+ if (value == null)
+ return null;
+ return new Forwarded(value);
}
/**
- * Returns this header value as a {@link java.util.Date}.
+ * Constructor.
*
- * @return This header value as a {@link java.util.Date}, or
<jk>null</jk> if the header could not be parsed.
+ * @param value The value for this header.
*/
- public java.util.Date asDate() {
- return date;
- }
-
- @Override /* Object */
- public String toString() {
- return raw;
+ public Forwarded(String value) {
+ super("Forwarded", value);
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfModifiedSince.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfModifiedSince.java
index 5fefe9b..3bb4577 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfModifiedSince.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfModifiedSince.java
@@ -12,6 +12,9 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
+import java.time.*;
+import java.util.*;
+
import org.apache.juneau.http.annotation.*;
/**
@@ -106,9 +109,27 @@ public final class IfModifiedSince extends BasicDateHeader
{
/**
* Constructor.
*
- * @param value The value for this header.
+ * @param value Header value in RFC1123 format.
*/
public IfModifiedSince(String value) {
super("If-Modified-Since", value);
}
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public IfModifiedSince(Calendar value) {
+ super("If-Modified-Since", value);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public IfModifiedSince(ZonedDateTime value) {
+ super("If-Modified-Since", value);
+ }
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfUnmodifiedSince.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfUnmodifiedSince.java
index 4ae20cf..c9ee646 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfUnmodifiedSince.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfUnmodifiedSince.java
@@ -12,6 +12,9 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
+import java.time.*;
+import java.util.*;
+
import org.apache.juneau.http.annotation.*;
/**
@@ -78,9 +81,27 @@ public final class IfUnmodifiedSince extends BasicDateHeader
{
/**
* Constructor.
*
- * @param value The value for this header.
+ * @param value Header value in RFC1123 format.
*/
public IfUnmodifiedSince(String value) {
super("If-Unmodified-Since", value);
}
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public IfUnmodifiedSince(Calendar value) {
+ super("If-Unmodified-Since", value);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public IfUnmodifiedSince(ZonedDateTime value) {
+ super("If-Unmodified-Since", value);
+ }
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/LastModified.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/LastModified.java
index 135f102..9197dd6 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/LastModified.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/LastModified.java
@@ -12,6 +12,9 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
+import java.time.*;
+import java.util.*;
+
import org.apache.juneau.http.annotation.*;
/**
@@ -85,9 +88,27 @@ public final class LastModified extends BasicDateHeader {
/**
* Constructor.
*
- * @param value The value for this header.
+ * @param value Header value in RFC1123 format.
*/
public LastModified(String value) {
super("Last-Modified", value);
}
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public LastModified(Calendar value) {
+ super("Last-Modified", value);
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param value Header value.
+ */
+ public LastModified(ZonedDateTime value) {
+ super("Last-Modified", value);
+ }
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NoTrace.java
similarity index 63%
copy from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
copy to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NoTrace.java
index 7a88fb2..290cbf2 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NoTrace.java
@@ -12,49 +12,32 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
-import org.apache.juneau.internal.*;
+import org.apache.juneau.http.annotation.*;
/**
- * Category of headers that consist of a single HTTP-date.
- *
- * <p>
- * <h5 class='figure'>Example</h5>
- * <p class='bcode w800'>
- * If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
- * </p>
- *
- * <ul class='seealso'>
- * <li class='extlink'>{@doc RFC2616}
- * </ul>
+ * Represents a parsed <l>No-Trace</l> HTTP request header.
*/
-public class BasicDateHeader extends BasicHeader {
-
- private final java.util.Date date;
- private final String raw;
+@Header("No-Trace")
+public final class NoTrace extends BasicStringHeader {
/**
- * Constructor.
+ * Returns a parsed <c>No-Trace</c> header.
*
- * @param name The HTTP header name.
- * @param raw The raw header value.
+ * @param value The <c>No-Trace</c> header string.
+ * @return The parsed <c>No-Trace</c> header, or <jk>null</jk> if the
string was null.
*/
- protected BasicDateHeader(String name, String raw) {
- super(name, raw);
- this.raw = raw;
- this.date = DateUtils.parseDate(raw);
+ public static NoTrace forString(String value) {
+ if (value == null)
+ return null;
+ return new NoTrace(value);
}
/**
- * Returns this header value as a {@link java.util.Date}.
+ * Constructor.
*
- * @return This header value as a {@link java.util.Date}, or
<jk>null</jk> if the header could not be parsed.
+ * @param value The value for this header.
*/
- public java.util.Date asDate() {
- return date;
- }
-
- @Override /* Object */
- public String toString() {
- return raw;
+ public NoTrace(String value) {
+ super("No-Trace", value);
}
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Origin.java
similarity index 63%
copy from
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
copy to
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Origin.java
index 7a88fb2..9af7cfc 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicDateHeader.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Origin.java
@@ -12,49 +12,32 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
-import org.apache.juneau.internal.*;
+import org.apache.juneau.http.annotation.*;
/**
- * Category of headers that consist of a single HTTP-date.
- *
- * <p>
- * <h5 class='figure'>Example</h5>
- * <p class='bcode w800'>
- * If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT
- * </p>
- *
- * <ul class='seealso'>
- * <li class='extlink'>{@doc RFC2616}
- * </ul>
+ * Represents a parsed <l>Origin</l> HTTP request header.
*/
-public class BasicDateHeader extends BasicHeader {
-
- private final java.util.Date date;
- private final String raw;
+@Header("Origin")
+public final class Origin extends BasicStringHeader {
/**
- * Constructor.
+ * Returns a parsed <c>Origin</c> header.
*
- * @param name The HTTP header name.
- * @param raw The raw header value.
+ * @param value The <c>Origin</c> header string.
+ * @return The parsed <c>Origin</c> header, or <jk>null</jk> if the
string was null.
*/
- protected BasicDateHeader(String name, String raw) {
- super(name, raw);
- this.raw = raw;
- this.date = DateUtils.parseDate(raw);
+ public static Origin forString(String value) {
+ if (value == null)
+ return null;
+ return new Origin(value);
}
/**
- * Returns this header value as a {@link java.util.Date}.
+ * Constructor.
*
- * @return This header value as a {@link java.util.Date}, or
<jk>null</jk> if the header could not be parsed.
+ * @param value The value for this header.
*/
- public java.util.Date asDate() {
- return date;
- }
-
- @Override /* Object */
- public String toString() {
- return raw;
+ public Origin(String value) {
+ super("Origin", value);
}
}
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
index a8f94ca..0a2a6b4 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClientBuilderTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.rest.client2;
import static org.junit.Assert.*;
import java.io.*;
+import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.*;
import java.util.logging.*;
@@ -37,7 +38,9 @@ import org.apache.juneau.rest.annotation.*;
import org.apache.juneau.rest.client2.ext.*;
import org.apache.juneau.rest.mock2.*;
import org.junit.*;
+import org.junit.runners.*;
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class RestClientBuilderTest {
public static class Bean {
@@ -73,6 +76,11 @@ public class RestClientBuilderTest {
}
}
+ private static final Calendar CALENDAR = new
GregorianCalendar(TimeZone.getTimeZone("Z"));
+ static {
+ CALENDAR.set(2000, 11, 31, 12, 34, 56);
+ }
+
//------------------------------------------------------------------------------------------------------------------
// Override client and builder.
//------------------------------------------------------------------------------------------------------------------
@@ -780,6 +788,363 @@ public class RestClientBuilderTest {
rc.get("").run().assertStatusCode(200);
}
+
//------------------------------------------------------------------------------------------------------------------
+ // Header Beans
+
//------------------------------------------------------------------------------------------------------------------
+
+ @Test
+ public void g01_headers_accept() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Accept("text/plain"))
+ .header("X-Name", "Accept")
+ .header("X-Expect", "text/plain")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g02_headers_acceptCharset() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new AcceptCharset("UTF-8"))
+ .header("X-Name", "Accept-Charset")
+ .header("X-Expect", "UTF-8")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g03_headers_acceptEncoding() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new AcceptEncoding("identity"))
+ .header("X-Name", "Accept-Encoding")
+ .header("X-Expect", "identity")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g04_headers_acceptLanguage() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new AcceptLanguage("en"))
+ .header("X-Name", "Accept-Language")
+ .header("X-Expect", "en")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g05_headers_authorization() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Authorization("foo"))
+ .header("X-Name", "Authorization")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g06_headers_cacheControl() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new CacheControl("none"))
+ .header("X-Name", "Cache-Control")
+ .header("X-Expect", "none")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g07_headers_clientVersion() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new ClientVersion("1"))
+ .header("X-Name", "X-Client-Version")
+ .header("X-Expect", "1")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g08_headers_connection() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Connection("foo"))
+ .header("X-Name", "Connection")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g09_headers_contentLength() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new ContentLength(123))
+ .header("X-Name", "Content-Length")
+ .header("X-Expect", "123")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g10_headers_contentType() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new ContentType("foo"))
+ .header("X-Name", "Content-Type")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g11a_headers_date() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new org.apache.juneau.http.Date("Sun, 31 Dec
2000 12:34:56 GMT"))
+ .header("X-Name", "Date")
+ .header("X-Expect", "Sun, 31 Dec 2000 12:34:56 GMT")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g11b_headers_date() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new org.apache.juneau.http.Date(CALENDAR))
+ .header("X-Name", "Date")
+ .header("X-Expect", "Sun, 31 Dec 2000 12:34:56 GMT")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g12_headers_expect() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Expect("foo"))
+ .header("X-Name", "Expect")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g13_headers_forwarded() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Forwarded("foo"))
+ .header("X-Name", "Forwarded")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g14_headers_from() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new From("foo"))
+ .header("X-Name", "From")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g15_headers_host() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Host("foo"))
+ .header("X-Name", "Host")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g16_headers_ifMatch() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new IfMatch("foo"))
+ .header("X-Name", "If-Match")
+ .header("X-Expect", "\"foo\"")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g17a_headers_ifModifiedSince() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new IfModifiedSince(CALENDAR))
+ .header("X-Name", "If-Modified-Since")
+ .header("X-Expect", "Sun, 31 Dec 2000 12:34:56 GMT")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g17b_headers_ifModifiedSince() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new IfModifiedSince("Sun, 31 Dec 2000 12:34:56
GMT"))
+ .header("X-Name", "If-Modified-Since")
+ .header("X-Expect", "Sun, 31 Dec 2000 12:34:56 GMT")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g18_headers_ifNoneMatch() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new IfNoneMatch("foo"))
+ .header("X-Name", "If-None-Match")
+ .header("X-Expect", "\"foo\"")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g19_headers_ifRange() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new IfRange("foo"))
+ .header("X-Name", "If-Range")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g20a_headers_ifUnmodifiedSince() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new IfUnmodifiedSince(CALENDAR))
+ .header("X-Name", "If-Unmodified-Since")
+ .header("X-Expect", "Sun, 31 Dec 2000 12:34:56 GMT")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g20b_headers_ifUnmodifiedSince() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new IfUnmodifiedSince("Sun, 31 Dec 2000
12:34:56 GMT"))
+ .header("X-Name", "If-Unmodified-Since")
+ .header("X-Expect", "Sun, 31 Dec 2000 12:34:56 GMT")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g21_headers_maxForwards() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new MaxForwards(10))
+ .header("X-Name", "Max-Forwards")
+ .header("X-Expect", "10")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g22_headers_noTrace() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new NoTrace("true"))
+ .header("X-Name", "No-Trace")
+ .header("X-Expect", "true")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g23_headers_origin() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Origin("foo"))
+ .header("X-Name", "Origin")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g24_headers_pragma() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Pragma("foo"))
+ .header("X-Name", "Pragma")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g25_headers_proxyAuthorization() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new ProxyAuthorization("foo"))
+ .header("X-Name", "Proxy-Authorization")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g26_headers_range() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Range("foo"))
+ .header("X-Name", "Range")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g27_headers_referer() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Referer("foo"))
+ .header("X-Name", "Referer")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g28_headers_te() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new TE("foo"))
+ .header("X-Name", "TE")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g29_headers_userAgent() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new UserAgent("foo"))
+ .header("X-Name", "User-Agent")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g30_headers_upgrade() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Upgrade("foo"))
+ .header("X-Name", "Upgrade")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g31_headers_via() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Via("foo"))
+ .header("X-Name", "Via")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ @Test
+ public void g32_headers_warning() throws Exception {
+ RestClient rc = MockRestClient.create(F.class).simpleJson()
+ .header(new Warning("foo"))
+ .header("X-Name", "Warning")
+ .header("X-Expect", "foo")
+ .build();
+ rc.get("").run().assertStatusCode(200);
+ }
+
+ // TODO - Multiple headers
+ // TODO - Headers overridden on request.
+
//
diff --git
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
index c356bd7..49e16a7 100644
---
a/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
+++
b/juneau-rest/juneau-rest-mock/src/main/java/org/apache/juneau/rest/mock2/MockServletRequest.java
@@ -848,7 +848,7 @@ public class MockServletRequest implements
HttpServletRequest, MockHttpRequest {
@Override /* HttpServletRequest */
public long getDateHeader(String name) {
String s = getHeader(name);
- return s == null ? 0 :
org.apache.juneau.http.Date.forString(s).asDate().getTime();
+ return s == null ? 0 :
org.apache.juneau.http.Date.forString(s).asZonedDateTime().toInstant().toEpochMilli();
}
@Override /* HttpServletRequest */
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 5cd8a91..e24d63c 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
@@ -4872,12 +4872,12 @@ public final class RestContext extends BeanContext {
* Returns the debug setting on this context for the specified method.
*
* @param method The java method.
- * @return The debug setting on this context or <jk>null</jk> not
specified for this method.
+ * @return The debug setting on this context or the debug value of the
servlet context if not specified for this method.
*/
public Enablement getDebug(Method method) {
if (method == null)
return null;
- return debugEnablement.find(method).orElse(null);
+ return debugEnablement.find(method).orElse(debug);
}
/**
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
index c30aa38..27a3df4 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/mock/MockServletRequest.java
@@ -784,7 +784,7 @@ public class MockServletRequest implements
HttpServletRequest, MockHttpRequest {
@Override /* HttpServletRequest */
public long getDateHeader(String name) {
String s = getHeader(name);
- return s == null ? 0 :
org.apache.juneau.http.Date.forString(s).asDate().getTime();
+ return s == null ? 0 :
org.apache.juneau.http.Date.forString(s).asZonedDateTime().toInstant().toEpochMilli();
}
@Override /* HttpServletRequest */