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 2284c5f  Unit tests.
2284c5f is described below

commit 2284c5fc7c2b952899810997ef3797acb027f40d
Author: JamesBognar <[email protected]>
AuthorDate: Fri Jul 23 11:49:36 2021 -0400

    Unit tests.
---
 .../src/test/java/org/apache/juneau/OListTest.java |  4 +-
 .../src/test/java/org/apache/juneau/OMapTest.java  |  4 +-
 .../apache/juneau/assertions/Assertions_Test.java  |  5 ++-
 .../java/org/apache/juneau/config/ConfigTest.java  |  3 +-
 .../juneau/config/store/ConfigFileStoreTest.java   |  9 +++--
 .../apache/juneau/http/BasicHttpResource_Test.java | 13 +++---
 .../juneau/http/SerializedHttpEntity_Test.java     |  3 +-
 .../juneau/http/header/AcceptCharset_Test.java     |  3 +-
 .../juneau/http/header/AcceptEncoding_Test.java    |  3 +-
 .../juneau/http/header/AcceptLanguage_Test.java    |  3 +-
 .../juneau/http/header/AcceptRanges_Test.java      |  3 +-
 .../org/apache/juneau/http/header/Accept_Test.java |  3 +-
 .../org/apache/juneau/http/header/Age_Test.java    |  3 +-
 .../org/apache/juneau/http/header/Allow_Test.java  |  3 +-
 .../juneau/http/header/Authorization_Test.java     |  3 +-
 .../http/header/BasicBooleanHeader_Test.java       |  3 +-
 .../http/header/BasicCsvArrayHeader_Test.java      |  3 +-
 .../juneau/http/header/BasicDateHeader_Test.java   |  3 +-
 .../header/BasicEntityTagArrayHeader_Test.java     |  3 +-
 .../http/header/BasicEntityTagHeader_Test.java     |  3 +-
 .../http/header/BasicIntegerHeader_Test.java       |  3 +-
 .../juneau/http/header/BasicLongHeader_Test.java   |  3 +-
 .../header/BasicMediaRangeArrayHeader_Test.java    |  3 +-
 .../http/header/BasicMediaTypeHeader_Test.java     |  3 +-
 .../juneau/http/header/BasicStringHeader_Test.java |  3 +-
 .../header/BasicStringRangeArrayHeader_Test.java   |  3 +-
 .../juneau/http/header/BasicUriHeader_Test.java    |  3 +-
 .../juneau/http/header/CacheControl_Test.java      |  3 +-
 .../juneau/http/header/ClientVersion_Test.java     |  3 +-
 .../apache/juneau/http/header/Connection_Test.java |  3 +-
 .../http/header/ContentDisposition_Test.java       |  3 +-
 .../juneau/http/header/ContentEncoding_Test.java   |  3 +-
 .../juneau/http/header/ContentLanguage_Test.java   |  3 +-
 .../juneau/http/header/ContentLength_Test.java     |  3 +-
 .../juneau/http/header/ContentLocation_Test.java   |  3 +-
 .../juneau/http/header/ContentRange_Test.java      |  3 +-
 .../juneau/http/header/ContentType_Test.java       |  3 +-
 .../org/apache/juneau/http/header/Date_Test.java   |  3 +-
 .../org/apache/juneau/http/header/ETag_Test.java   |  3 +-
 .../org/apache/juneau/http/header/Expect_Test.java |  3 +-
 .../apache/juneau/http/header/Expires_Test.java    |  3 +-
 .../apache/juneau/http/header/Forwarded_Test.java  |  3 +-
 .../org/apache/juneau/http/header/From_Test.java   |  3 +-
 .../org/apache/juneau/http/header/Host_Test.java   |  3 +-
 .../apache/juneau/http/header/IfMatch_Test.java    |  3 +-
 .../juneau/http/header/IfModifiedSince_Test.java   |  3 +-
 .../juneau/http/header/IfNoneMatch_Test.java       |  3 +-
 .../apache/juneau/http/header/IfRange_Test.java    |  3 +-
 .../juneau/http/header/IfUnmodifiedSince_Test.java |  3 +-
 .../juneau/http/header/LastModified_Test.java      |  3 +-
 .../apache/juneau/http/header/Location_Test.java   |  3 +-
 .../juneau/http/header/MaxForwards_Test.java       |  3 +-
 .../apache/juneau/http/header/NoTrace_Test.java    |  3 +-
 .../org/apache/juneau/http/header/Origin_Test.java |  3 +-
 .../org/apache/juneau/http/header/Pragma_Test.java |  3 +-
 .../juneau/http/header/ProxyAuthenticate_Test.java |  3 +-
 .../http/header/ProxyAuthorization_Test.java       |  3 +-
 .../org/apache/juneau/http/header/Range_Test.java  |  3 +-
 .../apache/juneau/http/header/Referer_Test.java    |  3 +-
 .../apache/juneau/http/header/RetryAfter_Test.java |  3 +-
 .../org/apache/juneau/http/header/Server_Test.java |  3 +-
 .../org/apache/juneau/http/header/TE_Test.java     |  3 +-
 .../apache/juneau/http/header/Trailer_Test.java    |  3 +-
 .../juneau/http/header/TransferEncoding_Test.java  |  3 +-
 .../apache/juneau/http/header/Upgrade_Test.java    |  3 +-
 .../apache/juneau/http/header/UserAgent_Test.java  |  3 +-
 .../org/apache/juneau/http/header/Vary_Test.java   |  3 +-
 .../org/apache/juneau/http/header/Via_Test.java    |  3 +-
 .../apache/juneau/http/header/Warning_Test.java    |  3 +-
 .../juneau/http/header/WwwAuthenticate_Test.java   |  3 +-
 .../http/remote/Remote_BodyAnnotation_Test.java    | 19 +++++----
 .../http/remote/Remote_CommonInterfaces_Test.java  |  6 +--
 .../remote/Remote_FormDataAnnotation_Test.java     | 16 ++++----
 .../http/remote/Remote_QueryAnnotation_Test.java   | 14 +++----
 .../apache/juneau/rest/RestOp_Returns_Test.java    |  6 +--
 .../rest/Rest_PredefinedStatusCodes_Test.java      |  3 +-
 .../apache/juneau/rest/annotation/Body_Test.java   | 15 +++----
 .../rest/client/RestClient_BasicCalls_Test.java    | 23 +++++------
 .../juneau/rest/client/RestClient_Body_Test.java   |  9 +++--
 .../client/RestClient_Config_BeanContext_Test.java | 25 ++++++------
 .../client/RestClient_Config_Context_Test.java     |  3 +-
 .../client/RestClient_Config_OpenApi_Test.java     |  5 ++-
 .../rest/client/RestClient_Config_Parser_Test.java |  5 ++-
 .../rest/client/RestClient_FormData_Test.java      |  3 +-
 .../rest/client/RestClient_Logging_Test.java       |  5 ++-
 .../juneau/rest/client/RestClient_Query_Test.java  |  3 +-
 .../rest/client/RestClient_Response_Body_Test.java |  3 +-
 .../juneau/serializer/ReaderObjectComboTest.java   | 23 +++++------
 .../org/apache/juneau/testutils/StreamUtils.java   | 46 +++++++++++++++++-----
 .../java/org/apache/juneau/testutils/XmlUtils.java |  5 ++-
 .../transforms/InputStreamBase64SwapTest.java      |  7 ++--
 .../apache/juneau/transforms/ReaderFilterTest.java | 13 +++---
 .../juneau/transforms/ReaderObjectSwapTest.java    | 10 +++--
 .../apache/juneau/transforms/ReaderSwapTest.java   |  6 ++-
 .../transforms/SwapsAnnotationComboTest.java       | 23 +++++------
 .../juneau/utils/ByteArrayInOutStreamTest.java     |  3 +-
 96 files changed, 324 insertions(+), 205 deletions(-)

diff --git a/juneau-utest/src/test/java/org/apache/juneau/OListTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/OListTest.java
index 404ba05..adaa192 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/OListTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/OListTest.java
@@ -15,8 +15,8 @@ package org.apache.juneau;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
-import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.collections.*;
@@ -106,7 +106,7 @@ public class OListTest {
        
//====================================================================================================
        @Test
        public void testFromReader() throws Exception {
-               assertObject(new OList(new 
StringReader("[1,2,3]"))).asJson().is("[1,2,3]");
+               assertObject(new 
OList(reader("[1,2,3]"))).asJson().is("[1,2,3]");
        }
 
        
//====================================================================================================
diff --git a/juneau-utest/src/test/java/org/apache/juneau/OMapTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/OMapTest.java
index dce7c28..165e212 100755
--- a/juneau-utest/src/test/java/org/apache/juneau/OMapTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/OMapTest.java
@@ -15,8 +15,8 @@ package org.apache.juneau;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
-import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.collections.*;
@@ -322,7 +322,7 @@ public class OMapTest {
        
//====================================================================================================
        @Test
        public void testFromReader() throws Exception {
-               assertObject(OMap.ofJson(new 
StringReader("{foo:'bar'}"))).asJson().is("{foo:'bar'}");
+               
assertObject(OMap.ofJson(reader("{foo:'bar'}"))).asJson().is("{foo:'bar'}");
        }
 
        
//====================================================================================================
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/assertions/Assertions_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/assertions/Assertions_Test.java
index 5d74c7a..75d25bf 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/assertions/Assertions_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/assertions/Assertions_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.assertions;
 
 import static org.apache.juneau.assertions.Assertions.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 import static org.junit.runners.MethodSorters.*;
 
 import java.io.*;
@@ -90,7 +91,7 @@ public class Assertions_Test {
 
        @Test
        public void a10_assertStream() throws Exception {
-               assertStream(new 
ByteArrayInputStream("foo".getBytes())).asString().is("foo");
+               assertStream(inputStream("foo")).asString().is("foo");
                assertStream((InputStream)null).asString().isNull();
        }
 
@@ -102,7 +103,7 @@ public class Assertions_Test {
 
        @Test
        public void a12_assertReader() throws Exception {
-               assertReader(new StringReader("foo")).is("foo");
+               assertReader(reader("foo")).is("foo");
                assertReader((Reader)null).isNull();
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/config/ConfigTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
index 80e8608..28bcca0 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/config/ConfigTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.config;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.config.ConfigMod.*;
 import static org.junit.Assert.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.net.*;
@@ -1096,7 +1097,7 @@ public class ConfigTest {
 
                assertEquals("mypassword", cf.getString("s1/foo"));
 
-               cf.load(new StringReader("[s1]\nfoo* = mypassword2\n"), true);
+               cf.load(reader("[s1]\nfoo* = mypassword2\n"), true);
 
                assertEquals("mypassword2", cf.getString("s1/foo"));
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
index 51bf5e1..f5ad150 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/config/store/ConfigFileStoreTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.config.store;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.internal.IOUtils.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.concurrent.*;
@@ -171,9 +172,9 @@ public class ConfigFileStoreTest {
                                        latch.countDown();
                        }
                });
-               pipe(new StringReader("zzz"), new File(DIR, "Z.ini"));
-               pipe(new StringReader("xxx"), new File(DIR, "X.cfg"));
-               pipe(new StringReader("yyy"), new File(DIR, "Y.cfg"));
+               pipe(reader("zzz"), new File(DIR, "Z.ini"));
+               pipe(reader("xxx"), new File(DIR, "X.cfg"));
+               pipe(reader("yyy"), new File(DIR, "Y.cfg"));
                if (! latch.await(10, TimeUnit.SECONDS))
                        throw new Exception("CountDownLatch never reached 
zero.");
        }
@@ -233,7 +234,7 @@ public class ConfigFileStoreTest {
                assertFalse(cs.exists("foo.cfg"));
                assertFalse(cs.exists("foo"));
 
-               pipe(new StringReader("xxx"), new File("Foox.cfg"));
+               pipe(reader("xxx"), new File("Foox.cfg"));
                assertTrue(cs.exists("Foox.cfg"));
                assertTrue(cs.exists("Foox"));
                new File("Foox.cfg").delete();
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java
index 1c92a78..1df1e88 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.http.HttpHeaders.*;
 import static org.apache.juneau.http.HttpResources.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
@@ -43,7 +44,7 @@ public class BasicHttpResource_Test {
                assertTrue(x.isRepeatable());
                assertFalse(x.isStreaming());
 
-               x = readerResource(new StringReader("foo")).build();
+               x = readerResource(reader("foo")).build();
                assertStream(x.getContent()).asString().is("foo");
                assertFalse(x.isRepeatable());
                assertTrue(x.isStreaming());
@@ -53,7 +54,7 @@ public class BasicHttpResource_Test {
                assertTrue(x.isRepeatable());
                assertFalse(x.isStreaming());
 
-               x = streamResource(new 
ByteArrayInputStream("foo".getBytes())).build();
+               x = streamResource(inputStream("foo")).build();
                assertStream(x.getContent()).asString().is("foo");
                assertFalse(x.isRepeatable());
                assertTrue(x.isStreaming());
@@ -73,7 +74,7 @@ public class BasicHttpResource_Test {
                assertStream(x.getContent()).asString().is("foo");
                assertTrue(x.isRepeatable());
 
-               x = readerResource(new StringReader("foo")).cached().build();
+               x = readerResource(reader("foo")).cached().build();
                assertStream(x.getContent()).asString().is("foo");
                assertStream(x.getContent()).asString().is("foo");
                assertTrue(x.isRepeatable());
@@ -83,7 +84,7 @@ public class BasicHttpResource_Test {
                assertStream(x.getContent()).asString().is("foo");
                assertTrue(x.isRepeatable());
 
-               x = streamResource(new 
ByteArrayInputStream("foo".getBytes())).cached().build();
+               x = streamResource(inputStream("foo")).cached().build();
                assertStream(x.getContent()).asString().is("foo");
                assertStream(x.getContent()).asString().is("foo");
                assertTrue(x.isRepeatable());
@@ -102,8 +103,8 @@ public class BasicHttpResource_Test {
                
assertLong(byteArrayResource("foo".getBytes()).build().getContentLength()).is(3l);
                assertLong(fileResource(f).build().getContentLength()).is(0l);
 
-               assertLong(readerResource(new 
StringReader("foo")).build().getContentLength()).is(-1l);
-               assertLong(readerResource(new 
StringReader("foo")).contentLength(3).build().getContentLength()).is(3l);
+               
assertLong(readerResource(reader("foo")).build().getContentLength()).is(-1l);
+               
assertLong(readerResource(reader("foo")).contentLength(3).build().getContentLength()).is(3l);
 
                x = stringResource("foo", 
contentType("text/plain")).contentEncoding("identity").build();
                assertString(x.getContentType().getValue()).is("text/plain");
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
index 66238f5..85b0ace 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/SerializedHttpEntity_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
@@ -105,7 +106,7 @@ public class SerializedHttpEntity_Test {
 
        @Test
        public void a12_contentType() throws Exception {
-               checkHeaderClient("Content-Type").post("/",serializedEntity(new 
StringReader("foo"),null).contentType("text/foo").build()).run().assertBody().is("['text/foo']");
+               
checkHeaderClient("Content-Type").post("/",serializedEntity(reader("foo"),null).contentType("text/foo").build()).run().assertBody().is("['text/foo']");
        }
 
        
//------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
index 2b70b05..7b57fb5 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class AcceptCharset_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
index d05f72e..0bd079b 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class AcceptEncoding_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
index 26812b1..b8cb6fe 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class AcceptLanguage_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
index 33dc038..1bd0dea 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -35,7 +36,7 @@ public class AcceptRanges_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java
index 48bf6b9..2d0cce1 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.HttpHeaders.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -41,7 +42,7 @@ public class Accept_Test {
        public static class A {
                @RestGet
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java
index 31bd683..8920929 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Age_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java
index 2a6a724..cb9e4d3 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -38,7 +39,7 @@ public class Allow_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
index 040ec21..f8ff53a 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -35,7 +36,7 @@ public class Authorization_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
index ff27b3b..85adf8f 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -38,7 +39,7 @@ public class BasicBooleanHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
index 8b5a304..b771baa 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -41,7 +42,7 @@ public class BasicCsvArrayHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
index 7465170..68d6d22 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -42,7 +43,7 @@ public class BasicDateHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
index 73221bb..84f562c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -38,7 +39,7 @@ public class BasicEntityTagArrayHeader_Test {
        public static class A {
                @RestOp
                public StringReader 
get(@Header(name=HEADER,multi=true,allowEmptyValue=true) String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
index 9039c06..6140638 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.HttpHeaders.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -37,7 +38,7 @@ public class BasicEntityTagHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
index b40cc4d..2b6da5c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -39,7 +40,7 @@ public class BasicIntegerHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
index e088b37..5674f2c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -39,7 +40,7 @@ public class BasicLongHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
index b467da5..e485152 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -40,7 +41,7 @@ public class BasicMediaRangeArrayHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
index af12b89..62e2210 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -39,7 +40,7 @@ public class BasicMediaTypeHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
index 49dd044..f8917fc 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class BasicStringHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
index d80226d..f7d5f66 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -39,7 +40,7 @@ public class BasicStringRangeArrayHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
index 70d0ca2..2519a98 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.http.header;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.net.*;
@@ -41,7 +42,7 @@ public class BasicUriHeader_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, '|'));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
index 5f3e084..5fd2d7f 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class CacheControl_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
index b796ee7..f7ef802 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -37,7 +38,7 @@ public class ClientVersion_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java
index 40aee42..7f7ac92 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -37,7 +38,7 @@ public class Connection_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
index ec1b3ec..c8d5a53 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class ContentDisposition_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
index 757c08f..7fc506d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class ContentEncoding_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
index 96b2a84..87dcbb9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -38,7 +39,7 @@ public class ContentLanguage_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
index a5e281f..4b0ddcc 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class ContentLength_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
index 84eb6a0..edcfa4c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.net.*;
@@ -37,7 +38,7 @@ public class ContentLocation_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
index 3eb75b3..8e060d6 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class ContentRange_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
index d62474a..d316278 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.HttpHeaders.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -37,7 +38,7 @@ public class ContentType_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java
index 5a31522..a885f65 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java
@@ -16,6 +16,7 @@ import static java.time.format.DateTimeFormatter.*;
 import static java.time.temporal.ChronoUnit.*;
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -39,7 +40,7 @@ public class Date_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java
index 072cd5a..f8e05ab 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java
@@ -15,6 +15,7 @@ package org.apache.juneau.http.header;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.HttpHeaders.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -37,7 +38,7 @@ public class ETag_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java
index 1e4b909..973723e 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Expect_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java
index ac7b657..c5040c8 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java
@@ -16,6 +16,7 @@ import static java.time.format.DateTimeFormatter.*;
 import static java.time.temporal.ChronoUnit.*;
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -39,7 +40,7 @@ public class Expires_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java
index 952486e..dad26d1 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Forwarded_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java
index 7135f2a..44a8370 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class From_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java
index c03cc98..c549c78 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Host_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java
index a3ffe30..1518dcb 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -38,7 +39,7 @@ public class IfMatch_Test {
        public static class A {
                @RestOp
                public StringReader 
get(@Header(name=HEADER,multi=true,allowEmptyValue=true) String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
index 3effb4b..bc1872d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
@@ -16,6 +16,7 @@ import static java.time.format.DateTimeFormatter.*;
 import static java.time.temporal.ChronoUnit.*;
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -39,7 +40,7 @@ public class IfModifiedSince_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
index 9fa2497..9667c93 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -38,7 +39,7 @@ public class IfNoneMatch_Test {
        public static class A {
                @RestOp
                public StringReader 
get(@Header(name=HEADER,multi=true,allowEmptyValue=true) String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java
index c69224e..c5a2945 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java
@@ -17,6 +17,7 @@ import static java.time.format.DateTimeFormatter.*;
 import static java.time.temporal.ChronoUnit.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.HttpHeaders.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -44,7 +45,7 @@ public class IfRange_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
index d5ea8be..8bcb919 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
@@ -16,6 +16,7 @@ import static java.time.format.DateTimeFormatter.*;
 import static java.time.temporal.ChronoUnit.*;
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -39,7 +40,7 @@ public class IfUnmodifiedSince_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
index fb8285d..a89e94b 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
@@ -16,6 +16,7 @@ import static java.time.format.DateTimeFormatter.*;
 import static java.time.temporal.ChronoUnit.*;
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -39,7 +40,7 @@ public class LastModified_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java
index c4412da..365cd49 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.net.*;
@@ -37,7 +38,7 @@ public class Location_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
index cf1fc51..014c32e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class MaxForwards_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java
index ee05372..4a4c026 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class NoTrace_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java
index 4cb2fe8..12bb249 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Origin_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java
index 199ddde..71235c7 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Pragma_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
index 0247086..9674669 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class ProxyAuthenticate_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
index 9520f0a..cc1de6f 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class ProxyAuthorization_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java
index ba794c1..164981c 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Range_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java
index 134d47e..5cf2c1e 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.net.*;
@@ -37,7 +38,7 @@ public class Referer_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java
index 18e4cb3..997a2ae 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java
@@ -17,6 +17,7 @@ import static java.time.format.DateTimeFormatter.*;
 import static java.time.temporal.ChronoUnit.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.HttpHeaders.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.time.*;
@@ -42,7 +43,7 @@ public class RetryAfter_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java
index a99e5f8..fd44fab 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Server_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java
index bf15c24..74ee341 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class TE_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java
index 736fd59..568161b 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Trailer_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
index 1a35774..4f190fe 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class TransferEncoding_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java
index e29ea1a..84a0f01 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -38,7 +39,7 @@ public class Upgrade_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java
index c8c0b26..c08fe30 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class UserAgent_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java
index 52c85a5..f9f1163 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Vary_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java
index 5e5c5b8..ae05a91 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -38,7 +39,7 @@ public class Via_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java
index 95cf3bb..7e85008 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class Warning_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
index 0ca5cc4..e112877 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.http.header;
 
 import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.function.*;
@@ -36,7 +37,7 @@ public class WwwAuthenticate_Test {
        public static class A {
                @RestOp
                public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
-                       return new StringReader(h == null ? "null" : 
StringUtils.join(h, ','));
+                       return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_BodyAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_BodyAnnotation_Test.java
index 8b3b370..1f758ad 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_BodyAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_BodyAnnotation_Test.java
@@ -16,7 +16,7 @@ import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.http.HttpParts.*;
 import static org.apache.juneau.internal.IOUtils.*;
-
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -32,7 +32,6 @@ import org.apache.juneau.marshall.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.mock.*;
-import org.apache.juneau.utils.*;
 import org.junit.*;
 
 /**
@@ -41,6 +40,10 @@ import org.junit.*;
 @FixMethodOrder(NAME_ASCENDING)
 public class Remote_BodyAnnotation_Test {
 
+       
//------------------------------------------------------------------------------------------------------------------
+       // Helpers
+       
//------------------------------------------------------------------------------------------------------------------
+
        public static class Bean {
                public int f;
 
@@ -146,8 +149,8 @@ public class Remote_BodyAnnotation_Test {
                assertEquals("[{f:1}]",x.postX4(new Bean[]{Bean.create()}));
                assertEquals("[{f:1}]",x.postX5(AList.of(Bean.create())));
                
assertEquals("{k1:{f:1}}",x.postX6(AMap.of("k1",Bean.create())));
-               assertEquals("xxx",x.postX7(new StringReader("xxx")));
-               assertEquals("xxx",x.postX8(new StringInputStream("xxx")));
+               assertEquals("xxx",x.postX7(reader("xxx")));
+               assertEquals("xxx",x.postX8(inputStream("xxx")));
                assertEquals("xxx",x.postX9(new StringEntity("xxx")));
                assertEquals("foo=bar",x.postX10(partList("foo","bar")));
        }
@@ -241,8 +244,8 @@ public class Remote_BodyAnnotation_Test {
                assertEquals("[{f:1}]",x.postX4(new Bean[]{Bean.create()}));
                assertEquals("[{f:1}]",x.postX5(AList.of(Bean.create())));
                
assertEquals("{k1:{f:1}}",x.postX6(AMap.of("k1",Bean.create())));
-               assertEquals("xxx",x.postX7(new StringReader("xxx")));
-               assertEquals("xxx",x.postX8(new StringInputStream("xxx")));
+               assertEquals("xxx",x.postX7(reader("xxx")));
+               assertEquals("xxx",x.postX8(inputStream("xxx")));
                assertEquals("xxx",x.postX9(new 
StringEntity("xxx",org.apache.http.entity.ContentType.create("text/plain"))));
                assertEquals("foo=bar",x.postX10(partList("foo","bar")));
        }
@@ -321,8 +324,8 @@ public class Remote_BodyAnnotation_Test {
                assertEquals("{f:1}",x.postX3(Bean.create()));
                assertEquals("[{f:1}]",x.postX5(AList.of(Bean.create())));
                
assertEquals("{k1={f:1}}",x.postX6(AMap.of("k1",Bean.create())));
-               assertEquals("xxx",x.postX7(new StringReader("xxx")));
-               assertEquals("xxx",x.postX8(new StringInputStream("xxx")));
+               assertEquals("xxx",x.postX7(reader("xxx")));
+               assertEquals("xxx",x.postX8(inputStream("xxx")));
                assertEquals("xxx",x.postX9(new 
StringEntity("xxx",org.apache.http.entity.ContentType.create("text/plain"))));
                assertEquals("foo=bar",x.postX10(partList("foo","bar")));
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
index c023f50..5c8bbec 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_CommonInterfaces_Test.java
@@ -30,8 +30,8 @@ import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.config.*;
 import org.apache.juneau.rest.helper.*;
 import org.apache.juneau.rest.mock.*;
+import org.apache.juneau.testutils.*;
 import org.apache.juneau.http.response.*;
-import org.apache.juneau.utils.*;
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
@@ -836,11 +836,11 @@ public class Remote_CommonInterfaces_Test {
        public static class G1 implements G {
                @Override
                public Reader reader() {
-                       return new StringReader("foo");
+                       return StreamUtils.reader("foo");
                }
                @Override
                public InputStream inputStream() {
-                       return new StringInputStream("foo");
+                       return StreamUtils.inputStream("foo");
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java
index b5b545a..b20ce7f 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_FormDataAnnotation_Test.java
@@ -17,6 +17,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.HttpParts.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.math.*;
@@ -36,7 +37,6 @@ import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.testutils.*;
 import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
-import org.apache.juneau.utils.*;
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
@@ -123,17 +123,17 @@ public class Remote_FormDataAnnotation_Test {
                
assertEquals("{k1:'f=1'}",x.postX12(AMap.of("k1",Bean.create())));
                
assertEquals("{x:'k1=f\\\\=1'}",x.postX13(AMap.of("k1",Bean.create())));
                
assertEquals("{k1:'f=1'}",x.postX14(AMap.of("k1",Bean.create())));
-               assertEquals("{x:'1'}",x.postX15(new StringReader("x=1")));
-               assertEquals("{x:'1'}",x.postX16(new StringReader("x=1")));
-               assertEquals("{x:'1'}",x.postX17(new StringInputStream("x=1")));
-               assertEquals("{x:'1'}",x.postX18(new StringInputStream("x=1")));
+               assertEquals("{x:'1'}",x.postX15(reader("x=1")));
+               assertEquals("{x:'1'}",x.postX16(reader("x=1")));
+               assertEquals("{x:'1'}",x.postX17(inputStream("x=1")));
+               assertEquals("{x:'1'}",x.postX18(inputStream("x=1")));
                assertEquals("{foo:'bar'}",x.postX19(parts("foo","bar")));
                assertEquals("{foo:'bar'}",x.postX20(parts("foo","bar")));
                assertEquals("{foo:'bar'}",x.postX21(part("foo","bar")));
                assertEquals("{foo:'bar'}",x.postX22("foo=bar"));
                assertEquals("{}",x.postX22(null));
-               assertEquals("{foo:'bar'}",x.postX23(new 
ByteArrayInputStream("foo=bar".getBytes())));
-               assertEquals("{foo:'bar'}",x.postX24(new 
StringReader("foo=bar")));
+               assertEquals("{foo:'bar'}",x.postX23(inputStream("foo=bar")));
+               assertEquals("{foo:'bar'}",x.postX24(reader("foo=bar")));
                assertEquals("{f:'1'}",x.postX25(Bean2.create()));
                
assertEquals("{foo:'bar'}",x.postX26(AList.of(part("foo","bar"))));
        }
@@ -895,7 +895,7 @@ public class Remote_FormDataAnnotation_Test {
        public static class K5a {
                @FormData("*")
                public Reader getA() {
-                       return new StringReader("foo=bar&baz=qux");
+                       return reader("foo=bar&baz=qux");
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java
index 72e3767..e00096c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/remote/Remote_QueryAnnotation_Test.java
@@ -17,6 +17,7 @@ import static org.junit.Assert.*;
 import static org.junit.Assert.assertEquals;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.http.HttpParts.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.math.*;
@@ -34,7 +35,6 @@ import org.apache.juneau.rest.mock.*;
 import org.apache.juneau.rest.RestRequest;
 import org.apache.juneau.testutils.*;
 import org.apache.juneau.uon.*;
-import org.apache.juneau.utils.*;
 import org.junit.*;
 
 @SuppressWarnings({"resource"})
@@ -108,10 +108,10 @@ public class Remote_QueryAnnotation_Test {
                
assertEquals("{k1:'f=1'}",x.getX12(AMap.of("k1",Bean.create())));
                
assertEquals("{x:'(k1=(f=1))'}",x.getX13(AMap.of("k1",Bean.create())));
                
assertEquals("{k1:'f=1'}",x.getX14(AMap.of("k1",Bean.create())));
-               assertEquals("{x:'1'}",x.getX15(new StringReader("x=1")));
-               assertEquals("{x:'1'}",x.getX16(new StringReader("x=1")));
-               assertEquals("{x:'1'}",x.getX17(new StringInputStream("x=1")));
-               assertEquals("{x:'1'}",x.getX18(new StringInputStream("x=1")));
+               assertEquals("{x:'1'}",x.getX15(reader("x=1")));
+               assertEquals("{x:'1'}",x.getX16(reader("x=1")));
+               assertEquals("{x:'1'}",x.getX17(inputStream("x=1")));
+               assertEquals("{x:'1'}",x.getX18(inputStream("x=1")));
                assertEquals("{foo:'bar'}",x.getX19(parts("foo","bar")));
                assertEquals("{foo:'bar'}",x.getX20(parts("foo","bar")));
                assertEquals("{foo:'bar'}",x.getX21(part("foo","bar")));
@@ -166,7 +166,7 @@ public class Remote_QueryAnnotation_Test {
                }
                @RestGet
                public Reader b(RestRequest req) {
-                       return new StringReader(req.getQueryString());
+                       return reader(req.getQueryString());
                }
        }
 
@@ -859,7 +859,7 @@ public class Remote_QueryAnnotation_Test {
        public static class K5a {
                @Query("*")
                public Reader getA() {
-                       return new StringReader("foo=bar&baz=qux");
+                       return reader("foo=bar&baz=qux");
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Returns_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Returns_Test.java
index 17a3b2e..65a646a 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Returns_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/rest/RestOp_Returns_Test.java
@@ -17,8 +17,8 @@ import static org.apache.juneau.http.HttpResources.*;
 import static org.apache.juneau.rest.testutils.TestUtils.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
-import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.dto.swagger.*;
@@ -140,11 +140,11 @@ public class RestOp_Returns_Test {
                }
                @RestGet
                public HttpResource e() throws Exception {
-                       return streamResource(new 
ByteArrayInputStream("foo".getBytes())).build();
+                       return streamResource(inputStream("foo")).build();
                }
                @RestGet
                public HttpResource f() throws Exception {
-                       return readerResource(new StringReader("foo")).build();
+                       return readerResource(reader("foo")).build();
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
index 7514eb0..0cc97f8 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/Rest_PredefinedStatusCodes_Test.java
@@ -14,6 +14,7 @@ package org.apache.juneau.rest;
 
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.http.header.ContentType.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
@@ -39,7 +40,7 @@ public class Rest_PredefinedStatusCodes_Test {
        public static class A {
                @RestPut
                public Reader a(@Body String b) {
-                       return new StringReader(b);
+                       return reader(b);
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java
index a1ee503..04d98fc 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/annotation/Body_Test.java
@@ -16,6 +16,7 @@ import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.internal.IOUtils.*;
 import static org.apache.juneau.http.header.ContentType.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -526,7 +527,7 @@ public class Body_Test {
                }
                @RestPut(path="/StringTransform")
                public Reader d(@Body D1 b) throws Exception {
-                       return new StringReader(b.toString());
+                       return reader(b.toString());
                }
                public static class D1 {
                        private String s;
@@ -535,7 +536,7 @@ public class Body_Test {
                }
                @RestPut(path="/InputStreamTransform")
                public Reader e(@Body D2 b) throws Exception {
-                       return new StringReader(b.toString());
+                       return reader(b.toString());
                }
                public static class D2 {
                        String s;
@@ -544,7 +545,7 @@ public class Body_Test {
                }
                @RestPut(path="/ReaderTransform")
                public Reader f(@Body D3 b) throws Exception {
-                       return new StringReader(b.toString());
+                       return reader(b.toString());
                }
                public static class D3 {
                        private String s;
@@ -553,7 +554,7 @@ public class Body_Test {
                }
                @RestPut(path="/StringTransformBodyOnPojo")
                public Reader g(D4 b) throws Exception {
-                       return new StringReader(b.toString());
+                       return reader(b.toString());
                }
                @Body
                public static class D4 {
@@ -563,7 +564,7 @@ public class Body_Test {
                }
                @RestPut(path="/InputStreamTransformBodyOnPojo")
                public Reader h(D5 b) throws Exception {
-                       return new StringReader(b.toString());
+                       return reader(b.toString());
                }
                @Body
                public static class D5 {
@@ -574,7 +575,7 @@ public class Body_Test {
 
                @RestPut(path="/ReaderTransformBodyOnPojo")
                public Reader i(D6 b) throws Exception {
-                       return new StringReader(b.toString());
+                       return reader(b.toString());
                }
                @Body
                public static class D6 {
@@ -736,7 +737,7 @@ public class Body_Test {
                                @Body F1 bean,
                                @HasQuery("p1") boolean hqp1, @HasQuery("p2") 
boolean hqp2,
                                @Query("p1") String qp1, @Query("p2") int qp2) 
throws Exception {
-                       return new 
StringReader("bean=["+SimpleJsonSerializer.DEFAULT.toString(bean)+"],qp1=["+qp1+"],qp2=["+qp2+"],hqp1=["+hqp1+"],hqp2=["+hqp2+"]");
+                       return 
reader("bean=["+SimpleJsonSerializer.DEFAULT.toString(bean)+"],qp1=["+qp1+"],qp2=["+qp2+"],hqp1=["+hqp1+"],hqp2=["+hqp2+"]");
                }
                public static class F1 {
                        public String p1;
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
index 8009cc6..ace2c5e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_BasicCalls_Test.java
@@ -18,6 +18,7 @@ import static org.apache.juneau.http.HttpParts.*;
 import static org.apache.juneau.http.HttpEntities.*;
 import static org.apache.juneau.http.HttpResources.*;
 import static org.apache.juneau.http.header.ContentType.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.net.*;
@@ -91,7 +92,7 @@ public class RestClient_BasicCalls_Test {
                }
                @RestOp(path="/",method="*")
                public Reader echoMethod(@Method String method) {
-                       return new StringReader(method);
+                       return reader(method);
                }
        }
 
@@ -165,8 +166,8 @@ public class RestClient_BasicCalls_Test {
        @Test
        public void a07_put_exhaustiveBodyTypes() throws Exception {
                List<Object> bodies = AList.<Object>of(
-                       new StringReader("{f:1}"),
-                       new ByteArrayInputStream("{f:1}".getBytes()),
+                       reader("{f:1}"),
+                       inputStream("{f:1}"),
                        stringResource("{f:1}").build(),
                        bean,
                        stringEntity("{f:1}").build(),
@@ -208,8 +209,8 @@ public class RestClient_BasicCalls_Test {
        @Test
        public void a11_exhaustiveBodyTypes() throws Exception {
                List<Object> bodies = AList.<Object>of(
-                       new StringReader("{f:1}"),
-                       new ByteArrayInputStream("{f:1}".getBytes()),
+                       reader("{f:1}"),
+                       inputStream("{f:1}"),
                        stringResource("{f:1}").build(),
                        bean,
                        stringEntity("{f:1}").build(),
@@ -307,8 +308,8 @@ public class RestClient_BasicCalls_Test {
        @Test
        public void a20_formPost_exhaustiveBodyTypes() throws Exception {
                Supplier<Object>
-                       s1 = () -> new StringReader("f=1"),
-                       s2 = () -> new ByteArrayInputStream("f=1".getBytes());
+                       s1 = () -> reader("f=1"),
+                       s2 = () -> inputStream("f=1");
                List<Object> bodies = AList.of(
                        /*[ 0]*/ bean,
                        /*[ 1]*/ parts("f","1"),
@@ -348,8 +349,8 @@ public class RestClient_BasicCalls_Test {
        @Test
        public void a24_patch_exhaustiveBodyTypes() throws Exception {
                List<Object> bodies = AList.<Object>of(
-                       new StringReader("{f:1}"),
-                       new ByteArrayInputStream("{f:1}".getBytes()),
+                       reader("{f:1}"),
+                       inputStream("{f:1}"),
                        stringResource("{f:1}").build(),
                        bean,
                        stringEntity("{f:1}").build(),
@@ -385,8 +386,8 @@ public class RestClient_BasicCalls_Test {
        @Test
        public void a27_request_PATCH_exhaustiveBodyTypes() throws Exception {
                List<Object> bodies = AList.<Object>of(
-                       new StringReader("{f:1}"),
-                       new ByteArrayInputStream("{f:1}".getBytes()),
+                       reader("{f:1}"),
+                       inputStream("{f:1}"),
                        stringResource("{f:1}").build(),
                        bean,
                        stringEntity("{f:1}").build(),
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Body_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Body_Test.java
index 93a5290..8616173 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Body_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Body_Test.java
@@ -16,6 +16,7 @@ import static org.apache.juneau.http.HttpHeaders.*;
 import static org.apache.juneau.http.HttpEntities.*;
 import static org.apache.juneau.http.HttpResources.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -94,10 +95,10 @@ public class RestClient_Body_Test {
                        .assertHeader("X-Baz").is("qux")
                ;
 
-               HttpResource x7 = readerResource(new 
StringReader("foo")).build();
+               HttpResource x7 = readerResource(reader("foo")).build();
                client().build().post("/",x7).run().assertBody().is("foo");
 
-               HttpResource x8 = readerResource(new 
StringReader("foo")).cached().build();
+               HttpResource x8 = 
readerResource(reader("foo")).cached().build();
                client().build().post("/",x8).run().assertBody().is("foo");
                client().build().post("/",x8).run().assertBody().is("foo");
 
@@ -139,10 +140,10 @@ public class RestClient_Body_Test {
                        .assertHeader("X-Transfer-Encoding").isNull()
                ;
 
-               HttpEntity x7 = readerEntity(new StringReader("foo")).build();
+               HttpEntity x7 = readerEntity(reader("foo")).build();
                client().build().post("/",x7).run().assertBody().is("foo");
 
-               HttpEntity x8 = readerEntity(new 
StringReader("foo")).cached().build();
+               HttpEntity x8 = readerEntity(reader("foo")).cached().build();
                client().build().post("/",x8).run().assertBody().is("foo");
                client().build().post("/",x8).run().assertBody().is("foo");
 
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 ad6d263..e024d86 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
@@ -16,6 +16,7 @@ import static 
org.apache.juneau.assertions.AssertionPredicates.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -46,11 +47,11 @@ public class RestClient_Config_BeanContext_Test {
                }
                @RestGet
                public Reader checkQuery(org.apache.juneau.rest.RestRequest 
req) {
-                       return new 
StringReader(req.getQueryParams().asQueryString());
+                       return reader(req.getQueryParams().asQueryString());
                }
                @RestPost
                public Reader checkFormData(org.apache.juneau.rest.RestRequest 
req) {
-                       return new 
StringReader(req.getFormParams().asQueryString());
+                       return reader(req.getFormParams().asQueryString());
                }
        }
 
@@ -625,8 +626,8 @@ public class RestClient_Config_BeanContext_Test {
 
        @Test
        public void a18_disableIgnoreUnknownNullBeanProperties() throws 
Exception {
-               client().build().post("/echoBody",new 
StringReader("{foo:'1',bar:null}")).run().cacheBody().assertBody().contains("{foo:'1',bar:null}").getBody().asType(A18.class);;
-               
assertThrown(()->client().disableIgnoreUnknownNullBeanProperties().build().post("/echoBody",new
 
StringReader("{foo:'1',bar:null}")).run().cacheBody().assertBody().contains("{foo:'1',bar:null}").getBody().asType(A18.class)).messages().any(contains("Unknown
 property 'bar'"));
+               
client().build().post("/echoBody",reader("{foo:'1',bar:null}")).run().cacheBody().assertBody().contains("{foo:'1',bar:null}").getBody().asType(A18.class);;
+               
assertThrown(()->client().disableIgnoreUnknownNullBeanProperties().build().post("/echoBody",reader("{foo:'1',bar:null}")).run().cacheBody().assertBody().contains("{foo:'1',bar:null}").getBody().asType(A18.class)).messages().any(contains("Unknown
 property 'bar'"));
        }
 
        public static interface A19 {
@@ -636,9 +637,9 @@ public class RestClient_Config_BeanContext_Test {
 
        @Test
        public void a19_disableInterfaceProxies() throws Exception {
-               A19 x = client().build().post("/echoBody",new 
StringReader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A19.class);;
+               A19 x = 
client().build().post("/echoBody",reader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A19.class);;
                assertEquals("1",x.getFoo());
-               
assertThrown(()->client().disableInterfaceProxies().build().post("/echoBody",new
 
StringReader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A19.class)).messages().any(contains("could
 not be instantiated"));
+               
assertThrown(()->client().disableInterfaceProxies().build().post("/echoBody",reader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A19.class)).messages().any(contains("could
 not be instantiated"));
        }
 
        public static class A20 {
@@ -654,9 +655,9 @@ public class RestClient_Config_BeanContext_Test {
 
        @Test
        public void a20_fluentSetters() throws Exception {
-               A20 x = 
client().findFluentSetters().build().post("/echoBody",new 
StringReader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A20.class);;
+               A20 x = 
client().findFluentSetters().build().post("/echoBody",reader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A20.class);;
                assertEquals("1",x.getFoo());
-               x = 
client().findFluentSetters(A20.class).build().post("/echoBody",new 
StringReader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A20.class);;
+               x = 
client().findFluentSetters(A20.class).build().post("/echoBody",reader("{foo:'1'}")).run().cacheBody().assertBody().contains("{foo:'1'}").getBody().asType(A20.class);;
                assertEquals("1",x.getFoo());
        }
 
@@ -723,8 +724,8 @@ public class RestClient_Config_BeanContext_Test {
 
        @Test
        public void a23_ignoreUnknownBeanProperties() throws Exception {
-               assertThrown(()->client().build().post("/echoBody",new 
StringReader("{foo:'1',bar:'2'}")).run().getBody().asType(A23.class)).messages().any(contains("Unknown
 property 'bar' encountered"));
-               A23 x = 
client().ignoreUnknownBeanProperties().build().post("/echoBody",new 
StringReader("{foo:'1',bar:'2'}")).run().cacheBody().getBody().asType(A23.class);;
+               
assertThrown(()->client().build().post("/echoBody",reader("{foo:'1',bar:'2'}")).run().getBody().asType(A23.class)).messages().any(contains("Unknown
 property 'bar' encountered"));
+               A23 x = 
client().ignoreUnknownBeanProperties().build().post("/echoBody",reader("{foo:'1',bar:'2'}")).run().cacheBody().getBody().asType(A23.class);;
                assertEquals("1",x.foo);
        }
 
@@ -747,11 +748,11 @@ public class RestClient_Config_BeanContext_Test {
 
        @Test
        public void a24_implClass() throws Exception {
-               A24a x = 
client().implClass(A24a.class,A24b.class).build().post("/echoBody",new 
StringReader("{foo:1}")).run().getBody().asType(A24a.class);
+               A24a x = 
client().implClass(A24a.class,A24b.class).build().post("/echoBody",reader("{foo:1}")).run().getBody().asType(A24a.class);
                assertEquals(1,x.getFoo());
                assertTrue(x instanceof A24b);
 
-               x = 
client().implClasses(AMap.of(A24a.class,A24b.class)).build().post("/echoBody",new
 StringReader("{foo:1}")).run().getBody().asType(A24a.class);
+               x = 
client().implClasses(AMap.of(A24a.class,A24b.class)).build().post("/echoBody",reader("{foo:1}")).run().getBody().asType(A24a.class);
                assertEquals(1,x.getFoo());
                assertTrue(x instanceof A24b);
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
index 76a0f54..a02644c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Context_Test.java
@@ -17,6 +17,7 @@ import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.serializer.Serializer.*;
 import static org.apache.juneau.json.JsonSerializer.*;
 import static org.apache.juneau.rest.mock.MockRestClient.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
@@ -183,7 +184,7 @@ public class RestClient_Config_Context_Test {
 
        @Test
        public void a10_putAllTo() throws Exception {
-               A10a x = 
client().implClass(A10a.class,A10b.class).build().post("/echoBody",new 
StringReader("{foo:1}")).run().getBody().asType(A10a.class);
+               A10a x = 
client().implClass(A10a.class,A10b.class).build().post("/echoBody",reader("{foo:1}")).run().getBody().asType(A10a.class);
                assertEquals(1,x.getFoo());
                assertTrue(x instanceof A10b);
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
index 130263c..742f8c1 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_OpenApi_Test.java
@@ -15,6 +15,7 @@ package org.apache.juneau.rest.client;
 import static org.apache.juneau.httppart.HttpPartCollectionFormat.*;
 import static org.apache.juneau.uon.ParamFormat.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
@@ -40,11 +41,11 @@ public class RestClient_Config_OpenApi_Test {
                }
                @RestGet
                public Reader checkQuery(org.apache.juneau.rest.RestRequest 
req) {
-                       return new 
StringReader(req.getQueryParams().asQueryString());
+                       return reader(req.getQueryParams().asQueryString());
                }
                @RestPost
                public Reader checkFormData(org.apache.juneau.rest.RestRequest 
req) {
-                       return new 
StringReader(req.getFormParams().asQueryString());
+                       return reader(req.getFormParams().asQueryString());
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Parser_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Parser_Test.java
index d62c189..9193998 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Parser_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_Parser_Test.java
@@ -16,6 +16,7 @@ import static 
org.apache.juneau.assertions.AssertionPredicates.*;
 import static org.apache.juneau.assertions.Assertions.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
@@ -47,7 +48,7 @@ public class RestClient_Config_Parser_Test {
 
        @Test
        public void a02_parser_strict() throws Exception {
-               
assertThrown(()->MockRestClient.create(A.class).json().strict().build().post("/echoBody",new
 
StringReader("{f:1}")).run().getBody().asType(A2.class)).messages().any(contains("Unquoted
 attribute detected."));
+               
assertThrown(()->MockRestClient.create(A.class).json().strict().build().post("/echoBody",reader("{f:1}")).run().getBody().asType(A2.class)).messages().any(contains("Unquoted
 attribute detected."));
        }
 
        public static class A3 {
@@ -56,7 +57,7 @@ public class RestClient_Config_Parser_Test {
 
        @Test
        public void a03_parser_trimStringsOnRead() throws Exception {
-               A3 x = 
client().trimStringsOnRead().build().post("/echoBody",new StringReader("{f:' 1 
'}")).run().getBody().asType(A3.class);
+               A3 x = 
client().trimStringsOnRead().build().post("/echoBody",reader("{f:' 1 
'}")).run().getBody().asType(A3.class);
                assertEquals("1",x.f);
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_FormData_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_FormData_Test.java
index 18394e4..a7b7869 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_FormData_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_FormData_Test.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.httppart.HttpPartSchema.*;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.ListOperation.*;
 import static org.apache.juneau.http.HttpParts.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -42,7 +43,7 @@ public class RestClient_FormData_Test {
        public static class A extends BasicRestObject {
                @RestPost
                public Reader formData(org.apache.juneau.rest.RestRequest req) {
-                       return new 
StringReader(req.getFormParams().asQueryString());
+                       return reader(req.getFormParams().asQueryString());
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Logging_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Logging_Test.java
index 73fe3c9..8520b5d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Logging_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Logging_Test.java
@@ -13,6 +13,7 @@
 package org.apache.juneau.rest.client;
 
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.logging.*;
@@ -111,7 +112,7 @@ public class RestClient_Logging_Test {
                );
                c.reset();
 
-               
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE,null).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(new ByteArrayInputStream("foo".getBytes()))).complete();
+               
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE,null).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(inputStream("foo"))).complete();
                c.assertContents().isLines(
                        "",
                        "=== HTTP Call (outgoing) 
======================================================",
@@ -130,7 +131,7 @@ public class RestClient_Logging_Test {
                );
                c.reset();
 
-               
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE,(req,res)->false).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(new ByteArrayInputStream("foo".getBytes()))).complete();
+               
clientPlain().logRequests(DetailLevel.FULL,Level.SEVERE,(req,res)->false).logToConsole().logger(l).console(c).build().post("/stream",new
 InputStreamEntity(inputStream("foo"))).complete();
                c.assertContents().isEmpty();
                c.reset();
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Query_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Query_Test.java
index 18b8d97..6a27899 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Query_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Query_Test.java
@@ -17,6 +17,7 @@ import static org.apache.juneau.httppart.HttpPartSchema.*;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.ListOperation.*;
 import static org.apache.juneau.http.HttpParts.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -40,7 +41,7 @@ public class RestClient_Query_Test {
        public static class A extends BasicRestObject {
                @RestGet
                public Reader query(org.apache.juneau.rest.RestRequest req) {
-                       return new 
StringReader(req.getQueryParams().asQueryString());
+                       return reader(req.getQueryParams().asQueryString());
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
index d7a0a22..dd397f9 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Response_Body_Test.java
@@ -18,6 +18,7 @@ import static org.apache.juneau.http.HttpHeaders.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
 import static org.apache.juneau.internal.IOUtils.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -342,7 +343,7 @@ public class RestClient_Response_Body_Test {
        }
 
        private static InputStreamEntity inputStreamEntity(String in) {
-               return new InputStreamEntity(new 
ByteArrayInputStream(in.getBytes()));
+               return new InputStreamEntity(inputStream(in));
        }
 
        private static <T> ClassMeta<T> cm(Class<T> t) {
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/serializer/ReaderObjectComboTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/serializer/ReaderObjectComboTest.java
index 54e4c2a..87995dc 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/serializer/ReaderObjectComboTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/serializer/ReaderObjectComboTest.java
@@ -12,8 +12,9 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.serializer;
 
+import static org.apache.juneau.testutils.StreamUtils.*;
+
 import java.io.*;
-import java.nio.charset.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -36,7 +37,7 @@ public class ReaderObjectComboTest extends ComboSerializeTest 
{
                                new ComboInput<Reader>(
                                        "SimpleReader",
                                        Reader.class,
-                                       () -> new StringReader("foobar")
+                                       () -> reader("foobar")
                                )
                                .json("foobar")
                                .jsonT("foobar")
@@ -64,7 +65,7 @@ public class ReaderObjectComboTest extends ComboSerializeTest 
{
                                new ComboInput<InputStream>(
                                        "SimpleInputStream",
                                        InputStream.class,
-                                       () -> new 
ByteArrayInputStream("foobar".getBytes(Charset.forName("UTF-8")))
+                                       () -> inputStream("foobar")
                                )
                                .json("foobar")
                                .jsonT("foobar")
@@ -299,7 +300,7 @@ public class ReaderObjectComboTest extends 
ComboSerializeTest {
        public static class BeanWithReaderField {
                public Reader f;
                public BeanWithReaderField init() {
-                       f = new StringReader("fv");
+                       f = reader("fv");
                        return this;
                }
        }
@@ -307,7 +308,7 @@ public class ReaderObjectComboTest extends 
ComboSerializeTest {
        public static class BeanWithReader1dField {
                public Reader[] f;
                public BeanWithReader1dField init() {
-                       f = new Reader[]{new StringReader("fv1"),new 
StringReader("fv2"),null};
+                       f = new Reader[]{reader("fv1"),reader("fv2"),null};
                        return this;
                }
        }
@@ -323,7 +324,7 @@ public class ReaderObjectComboTest extends 
ComboSerializeTest {
        public static class BeanWithReaderListField {
                public List<Reader> f;
                public BeanWithReaderListField init() {
-                       f = AList.of(new StringReader("fv1"),new 
StringReader("fv2"),null);
+                       f = AList.of(reader("fv1"),reader("fv2"),null);
                        return this;
                }
        }
@@ -331,7 +332,7 @@ public class ReaderObjectComboTest extends 
ComboSerializeTest {
        public static class BeanWithReaderMapField {
                public Map<String,Reader> f;
                public BeanWithReaderMapField init() {
-                       f = AMap.of("foo",new 
StringReader("fv1"),"bar",null,null,new StringReader("fv2"));
+                       f = 
AMap.of("foo",reader("fv1"),"bar",null,null,reader("fv2"));
                        return this;
                }
        }
@@ -360,12 +361,12 @@ public class ReaderObjectComboTest extends 
ComboSerializeTest {
                public Map<String,Reader> f5;
 
                public B init() {
-                       f1 = new StringReader("f1v");
-                       f2 = new Reader[]{new StringReader("f2v1"),new 
StringReader("f2v2"),null};
+                       f1 = reader("f1v");
+                       f2 = new Reader[]{reader("f2v1"),reader("f2v2"),null};
                        f3 = null;
-                       f4 = AList.of(new StringReader("f4v1"),new 
StringReader("f4v2"),null)
+                       f4 = AList.of(reader("f4v1"),reader("f4v2"),null)
                        ;
-                       f5 = AMap.of("foo",new 
StringReader("f5v1"),"bar",null,null,new StringReader("f5v2"));
+                       f5 = 
AMap.of("foo",reader("f5v1"),"bar",null,null,reader("f5v2"));
                        return this;
                }
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringInputStream.java
 b/juneau-utest/src/test/java/org/apache/juneau/testutils/StreamUtils.java
similarity index 61%
rename from 
juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringInputStream.java
rename to 
juneau-utest/src/test/java/org/apache/juneau/testutils/StreamUtils.java
index 8bfc528..a5c4f63 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/utils/StringInputStream.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/testutils/StreamUtils.java
@@ -10,24 +10,50 @@
 // * "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.utils;
+package org.apache.juneau.testutils;
 
 import java.io.*;
 
 /**
- * Convenience class for creating an input stream from a simple string.
- *
- * <p>
- * Used primarily for testing purposes.
+ * Various stream convenience methods.
  */
-public class StringInputStream extends ByteArrayInputStream {
+public class StreamUtils {
 
        /**
-        * Constructor.
+        * Creates an input stream from the specified string.
         *
-        * @param in The string to create an input stream from.
+        * @param in The contents of the reader.
+        * @return A new input stream.
         */
-       public StringInputStream(String in) {
-               super(in.getBytes());
+       public static final ByteArrayInputStream inputStream(String in) {
+               return new ByteArrayInputStream(in.getBytes());
+       }
+
+       /**
+        * Creates a reader from the specified string.
+        *
+        * @param in The contents of the reader.
+        * @return A new reader.
+        */
+       public static final StringReader reader(String in) {
+               return new StringReader(in);
+       }
+
+       /**
+        * Returns a capturing print stream.
+        *
+        * <p>
+        * Print stream contents can be retrieved by calling {@link 
Object#toString()} on the object.
+        *
+        * @return A new print stream.
+        */
+       public static final PrintStream printStream() {
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               return new PrintStream(baos, true) {
+                       @Override
+                       public String toString() {
+                               return baos.toString();
+                       }
+               };
        }
 }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/testutils/XmlUtils.java 
b/juneau-utest/src/test/java/org/apache/juneau/testutils/XmlUtils.java
index 44d7e06..a499c62 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/testutils/XmlUtils.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/testutils/XmlUtils.java
@@ -12,7 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.testutils;
 
-import java.io.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
+
 import java.util.*;
 import java.util.regex.*;
 
@@ -191,7 +192,7 @@ public class XmlUtils {
 
                DocumentBuilderFactory dbf = 
DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
-               Document doc = db.parse(new InputSource(new StringReader(xml)));
+               Document doc = db.parse(new InputSource(reader(xml)));
 
                XmlUtils.SortedNode n = new 
XmlUtils.SortedNode(doc.getDocumentElement());
                return n.toString();
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/InputStreamBase64SwapTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/InputStreamBase64SwapTest.java
index 9e059a0..cf19f16 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/InputStreamBase64SwapTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/InputStreamBase64SwapTest.java
@@ -12,12 +12,13 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
+import static org.apache.juneau.testutils.StreamUtils.*;
+
 import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.transform.*;
-import org.apache.juneau.utils.*;
 import org.junit.runner.*;
 import org.junit.runners.*;
 
@@ -48,14 +49,14 @@ public class InputStreamBase64SwapTest extends 
OneWayStringSwapTest<InputStream>
                        
//----------------------------------------------------------------------------------------------------------
                        {
                                "[0] Basic string",
-                               new StringInputStream("foo"),
+                               inputStream("foo"),
                                SWAP,
                                "Zm9v",
                                BS
                        },
                        {
                                "[1] Blank string",
-                               new StringInputStream(""),
+                               inputStream(""),
                                SWAP,
                                "",
                                BS
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
index fe441ba..26559d0 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
@@ -14,6 +14,7 @@ package org.apache.juneau.transforms;
 
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 import java.util.*;
@@ -39,7 +40,7 @@ public class ReaderFilterTest {
                Reader r;
                Map<String,Object> m;
 
-               r = new StringReader("{foo:'bar',baz:'quz'}");
+               r = reader("{foo:'bar',baz:'quz'}");
                m = new HashMap<>();
                m.put("X", r);
                assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
@@ -55,7 +56,7 @@ public class ReaderFilterTest {
                Reader r;
                Map<String,Object> m;
 
-               r = new StringReader("<object><foo _type='string'>bar</foo><baz 
_type='string'>quz</baz></object>");
+               r = reader("<object><foo _type='string'>bar</foo><baz 
_type='string'>quz</baz></object>");
                m = new HashMap<>();
                m.put("X", r);
                assertEquals("<object><X 
_type='object'><foo>bar</foo><baz>quz</baz></X></object>", s.serialize(m));
@@ -71,7 +72,7 @@ public class ReaderFilterTest {
                Reader r;
                Map<String,Object> m;
 
-               r = new 
StringReader("<table><tr><td>foo</td><td>bar</td></tr><tr><td>baz</td><td>quz</td></tr></table>");
+               r = 
reader("<table><tr><td>foo</td><td>bar</td></tr><tr><td>baz</td><td>quz</td></tr></table>");
                m = new HashMap<>();
                m.put("X", r);
                
assertEquals("<table><tr><td>X</td><td><table><tr><td>foo</td><td>bar</td></tr><tr><td>baz</td><td>quz</td></tr></table></td></tr></table>",
 s.serialize(m));
@@ -87,7 +88,7 @@ public class ReaderFilterTest {
                Reader r;
                Map<String,Object> m;
 
-               r = new StringReader("{foo:'bar',baz:'quz'}");
+               r = reader("{foo:'bar',baz:'quz'}");
                m = new HashMap<>();
                m.put("X", r);
                assertEquals("{X:'{foo:\\'bar\\',baz:\\'quz\\'}'}", 
s.serialize(m));
@@ -103,7 +104,7 @@ public class ReaderFilterTest {
                Reader r;
                Map<String,Object> m;
 
-               r = new StringReader("(foo=bar,baz=quz)");
+               r = reader("(foo=bar,baz=quz)");
                m = new HashMap<>();
                m.put("X", r);
                assertEquals("(X=(foo=bar,baz=quz))", s.serialize(m));
@@ -119,7 +120,7 @@ public class ReaderFilterTest {
                Reader r;
                Map<String,Object> m;
 
-               r = new StringReader("foo=bar&baz=quz");
+               r = reader("foo=bar&baz=quz");
                m = new HashMap<>();
                m.put("X", r);
                assertEquals("X='foo=bar%26baz=quz'", s.serialize(m));
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderObjectSwapTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderObjectSwapTest.java
index 971f068..4f14480 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderObjectSwapTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderObjectSwapTest.java
@@ -12,6 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
+import static org.apache.juneau.testutils.StreamUtils.*;
+
 import java.io.*;
 import java.util.*;
 
@@ -361,7 +363,7 @@ public class ReaderObjectSwapTest extends 
ComboSerializeTest {
        public static class PojoToSimpleReaderSwap extends 
PojoSwap<PojoToSimpleReader,Reader> {
                @Override
                public Reader swap(BeanSession session, PojoToSimpleReader o) 
throws Exception {
-                       return new StringReader("foo");
+                       return reader("foo");
                }
        }
 
@@ -376,7 +378,7 @@ public class ReaderObjectSwapTest extends 
ComboSerializeTest {
        public static class PojoToDynamicReaderSwap extends 
PojoSwap<PojoToDynamicReader,Object> {
                @Override
                public Object swap(BeanSession session, PojoToDynamicReader o) 
throws Exception {
-                       return new StringReader(o.f + "-" + 
session.getMediaType().getSubTypes().get(0));
+                       return reader(o.f + "-" + 
session.getMediaType().getSubTypes().get(0));
                }
        }
 
@@ -393,7 +395,7 @@ public class ReaderObjectSwapTest extends 
ComboSerializeTest {
                public Object swap(BeanSession session, SometimesSwappedBean1 
o) throws Exception {
                        MediaType mt = session.getMediaType();
                        if (mt.hasSubType("json") || mt.hasSubType("xml"))
-                               return new StringReader(o.f + "-" + mt);
+                               return reader(o.f + "-" + mt);
                        return o;
                }
        }
@@ -412,7 +414,7 @@ public class ReaderObjectSwapTest extends 
ComboSerializeTest {
                        MediaType mt = session.getMediaType();
                        if (mt.hasSubType("json") || mt.hasSubType("xml"))
                                return o;
-                       return new StringReader(o.f + "-" + mt);
+                       return reader(o.f + "-" + mt);
                }
        }
 
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderSwapTest.java 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderSwapTest.java
index 8374a2f..fd5968c 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderSwapTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/ReaderSwapTest.java
@@ -12,6 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
+import static org.apache.juneau.testutils.StreamUtils.*;
+
 import java.io.*;
 import java.util.*;
 
@@ -47,14 +49,14 @@ public class ReaderSwapTest extends 
OneWayStringSwapTest<Reader> {
                        
//----------------------------------------------------------------------------------------------------------
                        {
                                "[0] Basic string",
-                               new StringReader("foo"),
+                               reader("foo"),
                                SWAP,
                                "foo",
                                BS
                        },
                        {
                                "[1] Blank string",
-                               new StringReader(""),
+                               reader(""),
                                SWAP,
                                "",
                                BS
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/SwapsAnnotationComboTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/SwapsAnnotationComboTest.java
index 4d2abc8..49677df 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/transforms/SwapsAnnotationComboTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/transforms/SwapsAnnotationComboTest.java
@@ -12,7 +12,8 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
-import java.io.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
+
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -647,7 +648,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class TemplateSwap extends PojoSwap<Object,Object> {
                @Override
                public Object swap(BeanSession session, Object o, String 
template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
        }
 
@@ -737,7 +738,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwap extends 
PojoSwap<TestContextSwap,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwap o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public String withTemplate() {
@@ -750,7 +751,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwapJson extends 
PojoSwap<TestContextSwaps,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwaps o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public MediaType[] forMediaTypes() {
@@ -764,7 +765,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwapXml extends 
PojoSwap<TestContextSwaps,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwaps o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public MediaType[] forMediaTypes() {
@@ -778,7 +779,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwapHtml extends 
PojoSwap<TestContextSwaps,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwaps o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public MediaType[] forMediaTypes() {
@@ -792,7 +793,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwapUon extends 
PojoSwap<TestContextSwaps,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwaps o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public MediaType[] forMediaTypes() {
@@ -806,7 +807,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwapUrlEncoding extends 
PojoSwap<TestContextSwaps,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwaps o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public MediaType[] forMediaTypes() {
@@ -820,7 +821,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwapMsgPack extends 
PojoSwap<TestContextSwaps,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwaps o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public MediaType[] forMediaTypes() {
@@ -834,7 +835,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class ContextSwapRdfXml extends 
PojoSwap<TestContextSwaps,Object> {
                @Override
                public Object swap(BeanSession session, TestContextSwaps o, 
String template) throws Exception {
-                       return new StringReader(template);
+                       return reader(template);
                }
                @Override
                public MediaType[] forMediaTypes() {
@@ -864,7 +865,7 @@ public class SwapsAnnotationComboTest extends 
ComboSerializeTest {
        public static class BeanSwap extends PojoSwap<Object,Object> {
                @Override
                public Object swap(BeanSession session, Object o, String 
template) throws Exception {
-                       return new StringReader("SWAPPED");
+                       return reader("SWAPPED");
                }
        }
 }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
 
b/juneau-utest/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
index 929e98f..b0c4875 100755
--- 
a/juneau-utest/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/utils/ByteArrayInOutStreamTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.utils;
 import static org.apache.juneau.internal.IOUtils.*;
 import static org.junit.Assert.*;
 import static org.junit.runners.MethodSorters.*;
+import static org.apache.juneau.testutils.StreamUtils.*;
 
 import java.io.*;
 
@@ -29,7 +30,7 @@ public class ByteArrayInOutStreamTest {
        
//====================================================================================================
        @Test
        public void testBasic() throws Exception {
-               InputStream is = new 
ByteArrayInputStream("foobar".getBytes(UTF8));
+               InputStream is = inputStream("foobar");
                ByteArrayInOutStream baios = new ByteArrayInOutStream();
                pipe(is, baios);
                assertEquals("foobar", read(baios.getInputStream()));

Reply via email to