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 8ee5039  JUNEAU-200
8ee5039 is described below

commit 8ee503993f7d4b4fcf899b0926f5cf706ab3c8fc
Author: JamesBognar <[email protected]>
AuthorDate: Fri Mar 6 17:43:38 2020 -0500

    JUNEAU-200
    
    StreamResource/ReaderResource classes should take in HttpHeader beans.
---
 TODO.txt                                           | 75 ----------------------
 .../main/java/org/apache/juneau/http/Allow.java    |  7 +-
 .../java/org/apache/juneau/http/Authorization.java |  7 +-
 .../java/org/apache/juneau/http/CacheControl.java  |  7 +-
 .../java/org/apache/juneau/http/Connection.java    |  8 ++-
 .../org/apache/juneau/http/ContentEncoding.java    |  7 +-
 .../org/apache/juneau/http/ContentLanguage.java    |  7 +-
 .../java/org/apache/juneau/http/ContentLength.java |  7 +-
 .../org/apache/juneau/http/ContentLocation.java    |  7 +-
 .../java/org/apache/juneau/http/ContentRange.java  |  7 +-
 .../java/org/apache/juneau/http/ContentType.java   |  9 ++-
 .../src/main/java/org/apache/juneau/http/ETag.java |  7 +-
 .../main/java/org/apache/juneau/http/Expect.java   |  7 +-
 .../main/java/org/apache/juneau/http/Expires.java  |  7 +-
 .../src/main/java/org/apache/juneau/http/From.java |  7 +-
 .../src/main/java/org/apache/juneau/http/Host.java |  7 +-
 .../main/java/org/apache/juneau/http/IfMatch.java  |  7 +-
 .../org/apache/juneau/http/IfModifiedSince.java    |  7 +-
 .../java/org/apache/juneau/http/IfNoneMatch.java   |  7 +-
 .../main/java/org/apache/juneau/http/IfRange.java  |  7 +-
 .../org/apache/juneau/http/IfUnmodifiedSince.java  |  7 +-
 .../java/org/apache/juneau/http/LastModified.java  |  7 +-
 .../main/java/org/apache/juneau/http/Location.java |  7 +-
 .../java/org/apache/juneau/http/MaxForwards.java   |  7 +-
 .../main/java/org/apache/juneau/http/Pragma.java   |  7 +-
 .../org/apache/juneau/http/ProxyAuthenticate.java  |  7 +-
 .../org/apache/juneau/http/ProxyAuthorization.java |  7 +-
 .../main/java/org/apache/juneau/http/Range.java    |  7 +-
 .../org/apache/juneau/http/ReaderResource.java     | 14 ++++
 .../main/java/org/apache/juneau/http/Referer.java  |  7 +-
 .../java/org/apache/juneau/http/RetryAfter.java    |  7 +-
 .../main/java/org/apache/juneau/http/Server.java   |  7 +-
 .../org/apache/juneau/http/StreamResource.java     | 14 ++++
 .../src/main/java/org/apache/juneau/http/TE.java   |  7 +-
 .../main/java/org/apache/juneau/http/Trailer.java  |  7 +-
 .../org/apache/juneau/http/TransferEncoding.java   |  7 +-
 .../main/java/org/apache/juneau/http/Upgrade.java  |  7 +-
 .../java/org/apache/juneau/http/UserAgent.java     |  7 +-
 .../src/main/java/org/apache/juneau/http/Vary.java |  7 +-
 .../src/main/java/org/apache/juneau/http/Via.java  |  7 +-
 .../main/java/org/apache/juneau/http/Warning.java  |  7 +-
 .../org/apache/juneau/http/WwwAuthenticate.java    |  7 +-
 .../juneau/rest/client2/EndToEndInterfaceTest.java |  9 +--
 43 files changed, 268 insertions(+), 120 deletions(-)

diff --git a/TODO.txt b/TODO.txt
index 45e4b45..e69de29 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,75 +0,0 @@
-       // TODO - Add a new RestCallLogger that sends the result to the console.
-       TODO: wrapper for httpClient.getState();
-       TODO: header() and query() should persist objects that can be converted 
to strings at runtime.
-       
-       ContentDisposition header bean.
-       StreamResource/ReaderResource classes should take in header beans.
-       
-       Need the ability to turn on debug in REST via environment variables 
(e.g. debug=MyServlet.myMethod)
-       $Contains{} variable.
-       
-       
-       TODO:  @BeanConfig(bpi) doesn't override @Bean(bpi)?
-       
-
-TODO - This isn't working.     
-           public static class InstanceMetrics {
-       public List<SimpleMetric> instance = new ArrayList<>();
-       public Map<Integer,List<SimpleMetric>> racNode = new TreeMap<>();
-       public Map<Integer,List<SimpleMetric>> partition = new TreeMap<>();
-    }
-
-    @Bean(bpi="name,value,received")
-    @Html(noTableHeaders=true)
-    public static class SimpleMetric {
-       public String name;
-       public Long value;
-       public Calendar received;
-
-       public SimpleMetric(Metric m) {
-               this.name = m.getMetric();
-               this.value = m.getValue();
-               this.received = m.getReceived();
-       }
-    }
-    
-TODO @Beanp(*) isn't working?
-    public static class InstanceCopySummary {
-       public String instance;
-       public int total;
-       @Beanp(name="*")
-       public Map<String,Integer> perPartition = new TreeMap<>();
-
-TODO:  Need a SimpleLink(name, uri) again.
-
-TODO:  RestClient should support all languages by default.
-
-TODO:  HTML elements need constructors or create methods.
-
-TODO: Can't serialize a list of A elements correctly.
-
-TODO: Need ability to have <aside> float left/right/top/bottom around contents.
-
-TODO:  Need ability to define action for unauthorized requests (e.g. redirect 
instead of just return 401).
-
-TODO:  @RestMethod(debug="true") doesn't appear to log messages.
-
-TODO:  @Bean on private class should be treated as bean.
-
-TODO:  HtmlRender should not require no-arg constructor.
-
-TODO:  Tables of this aren't ordered correctly if p is null on first row.
-@Bean(bpi="i,p,s,d")
-public class BidData {
-
-       public String i;  // Instance name.
-       public Integer p; // Partition number.
-       public Score s;   // Score.
-       public String d;  // Discard reason.
-
-       public BidData(Bid b) {
-               this.s = b.getScore();
-
-REST classes should allow themselves to implement helper classes such as call 
hander etc...
-
-TODO:   ResourceDescriptions needs an append(url, label, description) so you 
can add params on url.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Allow.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Allow.java
index 45ed13e..744863d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Allow.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Allow.java
@@ -89,7 +89,12 @@ public final class Allow extends BasicStringArrayHeader {
                return new Allow(value);
        }
 
-       private Allow(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Allow(String value) {
                super("Allow", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
index 0dc82ad..13e2a4e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Authorization.java
@@ -84,7 +84,12 @@ public final class Authorization extends BasicStringHeader {
                return new Authorization(value);
        }
 
-       private Authorization(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Authorization(String value) {
                super("Authorization", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/CacheControl.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/CacheControl.java
index 22f1672..01f27cc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/CacheControl.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/CacheControl.java
@@ -108,7 +108,12 @@ public final class CacheControl extends BasicStringHeader {
                return new CacheControl(value);
        }
 
-       private CacheControl(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public CacheControl(String value) {
                super("Cache-Control", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Connection.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Connection.java
index 3ff3f6f..b45f8a5 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Connection.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Connection.java
@@ -89,8 +89,12 @@ public final class Connection extends BasicStringHeader {
                return new Connection(value);
        }
 
-
-       private Connection(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Connection(String value) {
                super("Connection", value);
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentEncoding.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentEncoding.java
index ab7df12..e4504f1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentEncoding.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentEncoding.java
@@ -81,7 +81,12 @@ public final class ContentEncoding extends 
BasicEnumHeader<ContentEncodingEnum>
                return new ContentEncoding(value);
        }
 
-       private ContentEncoding(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ContentEncoding(String value) {
                super("Content-Encoding", value, ContentEncodingEnum.class, 
ContentEncodingEnum.OTHER);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLanguage.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLanguage.java
index 0c6aee2..9b3b2a8 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLanguage.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLanguage.java
@@ -94,7 +94,12 @@ public final class ContentLanguage extends 
BasicStringArrayHeader {
                return new ContentLanguage(value);
        }
 
-       private ContentLanguage(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ContentLanguage(String value) {
                super("Allow", 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 7e76f0e..a6e307e 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
@@ -82,7 +82,12 @@ public final class ContentLength extends BasicLongHeader {
                return new ContentLength(value);
        }
 
-       private ContentLength(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ContentLength(String value) {
                super("Content-Length", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLocation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLocation.java
index 249a4ea..6b0cb3f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLocation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentLocation.java
@@ -79,7 +79,12 @@ public final class ContentLocation extends HeaderUri {
                return new ContentLocation(value);
        }
 
-       private ContentLocation(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ContentLocation(String value) {
                super("Content-Location", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentRange.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentRange.java
index 471daff..1927dc4 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentRange.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentRange.java
@@ -141,7 +141,12 @@ public final class ContentRange extends BasicStringHeader {
                return new ContentRange(value);
        }
 
-       private ContentRange(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ContentRange(String value) {
                super("Content-Range", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentType.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentType.java
index c58d1dc..34ffe85 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentType.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ContentType.java
@@ -68,8 +68,13 @@ public class ContentType extends MediaType implements 
HttpHeader {
        }
 
 
-       private ContentType(String s) {
-               super(s);
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ContentType(String value) {
+               super(value);
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ETag.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ETag.java
index 200082e..1c9f00a 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ETag.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ETag.java
@@ -62,7 +62,12 @@ public final class ETag extends BasicStringHeader {
                return new ETag(value);
        }
 
-       private ETag(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ETag(String value) {
                super("ETag", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expect.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expect.java
index 4c4efd9..979a18a 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expect.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Expect.java
@@ -81,7 +81,12 @@ public final class Expect extends BasicStringHeader {
                return new Expect(value);
        }
 
-       private Expect(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Expect(String value) {
                super("Expect", 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 a7096f6..2e7c225 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
@@ -92,7 +92,12 @@ public final class Expires extends BasicDateHeader {
                return new Expires(value);
        }
 
-       private Expires(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Expires(String value) {
                super("Expires", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/From.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/From.java
index 114bb6e..160473d 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/From.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/From.java
@@ -79,7 +79,12 @@ public final class From extends BasicStringHeader {
                return new From(value);
        }
 
-       private From(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public From(String value) {
                super("From", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Host.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Host.java
index e16cea0..c80173c 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Host.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Host.java
@@ -81,7 +81,12 @@ public final class Host extends BasicStringHeader {
                return new Host(value);
        }
 
-       private Host(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Host(String value) {
                super("Host", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfMatch.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfMatch.java
index 469c306..e57e9c2 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfMatch.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfMatch.java
@@ -103,7 +103,12 @@ public final class IfMatch extends 
ComplexEntityValidatorArrayHeader {
                return new IfMatch(value);
        }
 
-       private IfMatch(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public IfMatch(String value) {
                super("If-Match", 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 b8830b8..5fefe9b 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
@@ -103,7 +103,12 @@ public final class IfModifiedSince extends BasicDateHeader 
{
                return new IfModifiedSince(value);
        }
 
-       private IfModifiedSince(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public IfModifiedSince(String value) {
                super("If-Modified-Since", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfNoneMatch.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfNoneMatch.java
index d0787fb..c659d5d 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfNoneMatch.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfNoneMatch.java
@@ -106,7 +106,12 @@ public final class IfNoneMatch extends 
ComplexEntityValidatorArrayHeader {
                return new IfNoneMatch(value);
        }
 
-       private IfNoneMatch(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public IfNoneMatch(String value) {
                super("If-None-Match", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfRange.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfRange.java
index 4cdd1b1..6ad2efb 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfRange.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/IfRange.java
@@ -76,7 +76,12 @@ public final class IfRange extends BasicStringHeader {
                return new IfRange(value);
        }
 
-       private IfRange(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public IfRange(String value) {
                super("If-Range", 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 540d0fd..4ae20cf 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
@@ -75,7 +75,12 @@ public final class IfUnmodifiedSince extends BasicDateHeader 
{
                return new IfUnmodifiedSince(value);
        }
 
-       private IfUnmodifiedSince(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public IfUnmodifiedSince(String 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 273e8d7..135f102 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
@@ -82,7 +82,12 @@ public final class LastModified extends BasicDateHeader {
                return new LastModified(value);
        }
 
-       private LastModified(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public LastModified(String value) {
                super("Last-Modified", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Location.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Location.java
index 668fbe5..2ee7cdf 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Location.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Location.java
@@ -68,7 +68,12 @@ public final class Location extends HeaderUri {
                return new Location(value);
        }
 
-       private Location(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Location(String value) {
                super("Location", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MaxForwards.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MaxForwards.java
index fa9abc3..dbd158f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MaxForwards.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MaxForwards.java
@@ -80,7 +80,12 @@ public final class MaxForwards extends BasicIntegerHeader {
                return new MaxForwards(value);
        }
 
-       private MaxForwards(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public MaxForwards(String value) {
                super("Max-Forwards", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Pragma.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Pragma.java
index 92ead94..16c898e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Pragma.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Pragma.java
@@ -79,7 +79,12 @@ public final class Pragma extends BasicStringHeader {
                return new Pragma(value);
        }
 
-       private Pragma(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Pragma(String value) {
                super("Pragma", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthenticate.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthenticate.java
index 123271f..17aa4b3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthenticate.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthenticate.java
@@ -62,7 +62,12 @@ public final class ProxyAuthenticate extends 
BasicStringHeader {
                return new ProxyAuthenticate(value);
        }
 
-       private ProxyAuthenticate(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ProxyAuthenticate(String value) {
                super("Proxy-Authenticate", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthorization.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthorization.java
index 920c55b..17bfe51 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthorization.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ProxyAuthorization.java
@@ -64,7 +64,12 @@ public final class ProxyAuthorization extends 
BasicStringHeader {
                return new ProxyAuthorization(value);
        }
 
-       private ProxyAuthorization(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public ProxyAuthorization(String value) {
                super("Proxy-Authorization", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Range.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Range.java
index def1b0f..53e0522 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Range.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Range.java
@@ -154,7 +154,12 @@ public final class Range extends BasicStringHeader {
                return new Range(value);
        }
 
-       private Range(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Range(String value) {
                super("Range", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
index 2d09d43..f0250e1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/ReaderResource.java
@@ -185,6 +185,20 @@ public class ReaderResource implements Writable {
                }
 
                /**
+                * Specifies HTTP response header values.
+                *
+                * @param headers
+                *      The HTTP headers.
+                *      <br>Values will be converted to <c>Strings</c> using 
{@link Object#toString()}.
+                * @return This object (for method chaining).
+                */
+               public Builder headers(HttpHeader...headers) {
+                       for (HttpHeader h : headers)
+                               this.headers.put(h.getName(), h.getValue());
+                       return this;
+               }
+
+               /**
                 * Specifies that this resource is intended to be cached.
                 *
                 * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Referer.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Referer.java
index 0a399c9..1c5e1f1 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Referer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Referer.java
@@ -70,7 +70,12 @@ public final class Referer extends HeaderUri {
                return new Referer(value);
        }
 
-       private Referer(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Referer(String value) {
                super("Referer", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/RetryAfter.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/RetryAfter.java
index 4c1739f..c658e9e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/RetryAfter.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/RetryAfter.java
@@ -72,7 +72,12 @@ public final class RetryAfter extends BasicStringHeader {
                return new RetryAfter(value);
        }
 
-       private RetryAfter(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public RetryAfter(String value) {
                super("Retry-After", value);
        }
 
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Server.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Server.java
index c453ad4..7f6513b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Server.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Server.java
@@ -71,7 +71,12 @@ public final class Server extends BasicStringHeader {
                return new Server(value);
        }
 
-       private Server(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Server(String value) {
                super("Server", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
index 0cff719..a3e3349 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/StreamResource.java
@@ -177,6 +177,20 @@ public class StreamResource implements Streamable {
                }
 
                /**
+                * Specifies HTTP response header values.
+                *
+                * @param headers
+                *      The HTTP headers.
+                *      <br>Values will be converted to <c>Strings</c> using 
{@link Object#toString()}.
+                * @return This object (for method chaining).
+                */
+               public Builder headers(HttpHeader...headers) {
+                       for (HttpHeader h : headers)
+                               this.headers.put(h.getName(), h.getValue());
+                       return this;
+               }
+
+               /**
                 * Specifies that this resource is intended to be cached.
                 *
                 * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TE.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TE.java
index 4e8e84f..54288e8 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TE.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TE.java
@@ -107,7 +107,12 @@ public final class TE extends ComplexRangeArrayHeader {
                return te;
        }
 
-       private TE(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public TE(String value) {
                super("TE", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Trailer.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Trailer.java
index 5833703..7948e49 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Trailer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Trailer.java
@@ -71,7 +71,12 @@ public final class Trailer extends BasicStringHeader {
                return new Trailer(value);
        }
 
-       private Trailer(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Trailer(String value) {
                super("Trailer", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TransferEncoding.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TransferEncoding.java
index e98fd60..5518d69 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TransferEncoding.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/TransferEncoding.java
@@ -71,7 +71,12 @@ public final class TransferEncoding extends 
BasicStringHeader {
                return new TransferEncoding(value);
        }
 
-       private TransferEncoding(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public TransferEncoding(String value) {
                super("Transfer-Encoding", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Upgrade.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Upgrade.java
index 381880d..aff5706 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Upgrade.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Upgrade.java
@@ -103,7 +103,12 @@ public final class Upgrade extends BasicStringArrayHeader {
                return new Upgrade(value);
        }
 
-       private Upgrade(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Upgrade(String value) {
                super("Upgrade", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/UserAgent.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/UserAgent.java
index 69b7a6c..89cea19 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/UserAgent.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/UserAgent.java
@@ -64,7 +64,12 @@ public final class UserAgent extends BasicStringHeader {
                return new UserAgent(value);
        }
 
-       private UserAgent(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public UserAgent(String value) {
                super("User-Agent", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Vary.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Vary.java
index e5ec550..7adafad 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Vary.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Vary.java
@@ -84,7 +84,12 @@ public final class Vary extends BasicStringHeader {
                return new Vary(value);
        }
 
-       private Vary(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Vary(String value) {
                super("Vary", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Via.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Via.java
index a3bc2ce..38cdfa4 100644
--- a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Via.java
+++ b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Via.java
@@ -139,7 +139,12 @@ public final class Via extends BasicStringArrayHeader {
                return new Via(value);
        }
 
-       private Via(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Via(String value) {
                super("Via", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Warning.java 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Warning.java
index bb39e55..5e47e5f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Warning.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/Warning.java
@@ -138,7 +138,12 @@ public final class Warning extends BasicStringHeader {
                return new Warning(value);
        }
 
-       private Warning(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public Warning(String value) {
                super("Warning", value);
        }
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/WwwAuthenticate.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/WwwAuthenticate.java
index 0b67abf..219b879 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/WwwAuthenticate.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/WwwAuthenticate.java
@@ -60,7 +60,12 @@ public final class WwwAuthenticate extends BasicStringHeader 
{
                return new WwwAuthenticate(value);
        }
 
-       private WwwAuthenticate(String value) {
+       /**
+        * Constructor.
+        *
+        * @param value The value for this header.
+        */
+       public WwwAuthenticate(String value) {
                super("WWW-Authenticate", value);
        }
 }
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
index f434331..9b44d1c 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/EndToEndInterfaceTest.java
@@ -17,8 +17,7 @@ import static org.junit.Assert.*;
 
 import java.io.*;
 
-import org.apache.juneau.http.ReaderResource;
-import org.apache.juneau.http.StreamResource;
+import org.apache.juneau.http.*;
 import org.apache.juneau.http.annotation.Body;
 import org.apache.juneau.http.annotation.Header;
 import org.apache.juneau.http.annotation.Query;
@@ -316,12 +315,12 @@ public class EndToEndInterfaceTest {
 
                @Override
                public StreamResource streamResource() throws IOException {
-                       return 
StreamResource.create().mediaType("text/foo").contents("foo".getBytes()).header("Foo",
 "foo").build();
+                       return 
StreamResource.create().mediaType("text/foo").contents("foo".getBytes()).header("Foo",
 "foo").headers(ETag.forString("bar")).build();
                }
 
                @Override
                public ReaderResource readerResource() throws IOException {
-                       return 
ReaderResource.create().mediaType("text/foo").contents("foo").header("Foo", 
"foo").build();
+                       return 
ReaderResource.create().mediaType("text/foo").contents("foo").header("Foo", 
"foo").headers(ETag.forString("bar")).build();
                }
        }
 
@@ -332,6 +331,7 @@ public class EndToEndInterfaceTest {
                StreamResource r = id.streamResource();
                assertEquals("foo", IOUtils.read(r.getContents()));
                assertEquals("foo", r.getHeaders().get("Foo"));
+               assertEquals("bar", r.getHeaders().get("ETag"));
                assertEquals("text/foo", r.getMediaType().toString());
        }
 
@@ -340,6 +340,7 @@ public class EndToEndInterfaceTest {
                ReaderResource r = id.readerResource();
                assertEquals("foo", IOUtils.read(r.getContents()));
                assertEquals("foo", r.getHeaders().get("Foo"));
+               assertEquals("bar", r.getHeaders().get("ETag"));
                assertEquals("text/foo", r.getMediaType().toString());
        }
 

Reply via email to