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 76e1429  org.apache.juneau.http tests.
76e1429 is described below

commit 76e142986b7cca9ead5dda215d0a78fbabb67e76
Author: JamesBognar <[email protected]>
AuthorDate: Mon Jul 13 08:53:06 2020 -0400

    org.apache.juneau.http tests.
---
 .../java/org/apache/juneau/http/BasicHeader.java   | 15 ++---
 .../org/apache/juneau/http/BasicHttpEntity.java    | 71 ++++++----------------
 .../org/apache/juneau/http/BasicHttpResource.java  | 57 ++++++++---------
 .../org/apache/juneau/http/BasicNameValuePair.java | 17 +-----
 .../java/org/apache/juneau/http/HttpResource.java  | 65 --------------------
 .../apache/juneau/http/SerializedHttpEntity.java   | 26 +-------
 .../org/apache/juneau/http/BasicHeader_Test.java   | 10 ---
 .../apache/juneau/http/BasicHttpEntity_Test.java   |  6 +-
 .../apache/juneau/http/BasicHttpResource_Test.java |  6 +-
 .../juneau/http/BasicNameValuePair_Test.java       | 10 ---
 .../rest/client2/Remote_CommonInterfaces_Test.java |  2 +-
 .../rest/client2/RestClient_BasicCalls_Test.java   | 16 ++---
 .../juneau/rest/client2/RestClient_Body_Test.java  | 56 ++++++++++++++---
 .../rest/client2/RestClient_FormData_Test.java     | 13 +++-
 .../rest/client2/RestClient_Headers_Test.java      | 13 +++-
 .../org/apache/juneau/rest/client/RestCall.java    | 17 ------
 .../juneau/rest/client2/RestResponseBody.java      |  5 +-
 .../juneau/rest/helper/BasicHttpResourceTest.java  | 14 ++---
 .../java/org/apache/juneau/rest/RestRequest.java   |  4 +-
 19 files changed, 152 insertions(+), 271 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
index 7c0f373..7809f26 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHeader.java
@@ -13,6 +13,8 @@
 package org.apache.juneau.http;
 
 import static org.apache.juneau.internal.StringUtils.*;
+import static org.apache.juneau.internal.ObjectUtils.*;
+
 import java.io.*;
 import java.util.*;
 import java.util.function.*;
@@ -28,7 +30,7 @@ import org.apache.juneau.svl.*;
 
 /**
  * Superclass of all headers defined in this package.
- * 
+ *
  * Provides the following features:
  * <ul class='spaced-list'>
  *     <li>
@@ -170,8 +172,7 @@ public class BasicHeader implements Header, Cloneable, 
Serializable {
         */
        @FluentSetter
        public BasicHeader resolving(VarResolver varResolver) {
-               this.varSession = varResolver == null ? null : 
varResolver.createSession();
-               return this;
+               return resolving(varResolver == null ? null : 
varResolver.createSession());
        }
 
        /**
@@ -271,16 +272,16 @@ public class BasicHeader implements Header, Cloneable, 
Serializable {
 
        @Override /* Object */
        public boolean equals(Object o) {
+               // Functionality provided for HttpRequest.removeHeader().
+               // Not a perfect equality operator if using SVL vars.
                if (! (o instanceof Header))
                        return false;
-               if (varSession != null)
-                       return false;
-               return ObjectUtils.eq(this, (Header)o, (x,y)->isEquals(x.name, 
y.getName()) && isEquals(x.getValue(), y.getValue()));
+               return eq(this, (Header)o, (x,y)->eq(x.name,y.getName()) && 
eq(x.getValue(),y.getValue()));
        }
 
        @Override /* Object */
        public int hashCode() {
-               return HashCode.create().add(name).add(value).get();
+               return super.hashCode();
        }
 
        @Override /* Object */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpEntity.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpEntity.java
index f77437d..fa891d7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpEntity.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpEntity.java
@@ -17,12 +17,13 @@ import java.util.function.*;
 
 import org.apache.http.*;
 import org.apache.juneau.assertions.*;
+import org.apache.juneau.http.header.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.svl.*;
 
 /**
  * An extension of {@link org.apache.http.entity.BasicHttpEntity} with 
additional features.
- * 
+ *
  * Provides the following features:
  * <ul class='spaced-list'>
  *     <li>
@@ -47,15 +48,6 @@ public class BasicHttpEntity extends 
org.apache.http.entity.BasicHttpEntity {
        /**
         * Creator.
         *
-        * @return A new empty {@link BasicHttpEntity} object.
-        */
-       public static BasicHttpEntity create() {
-               return new BasicHttpEntity();
-       }
-
-       /**
-        * Creator.
-        *
         * @param content
         *      The content.
         *      <br>Can be any of the following:
@@ -97,16 +89,6 @@ public class BasicHttpEntity extends 
org.apache.http.entity.BasicHttpEntity {
 
        /**
         * Creates a new basic entity.
-        * 
-        * The content is initially missing, the content length
-        * is set to a negative number.
-        */
-       public BasicHttpEntity() {
-               super();
-       }
-
-       /**
-        * Creates a new basic entity.
         *
         * @param content
         *      The content.
@@ -122,37 +104,13 @@ public class BasicHttpEntity extends 
org.apache.http.entity.BasicHttpEntity {
         * </ul>
         */
        public BasicHttpEntity(Object content) {
-               super();
-               content(content);
+               this(content, null, null);
        }
 
        /**
-        * Sets the content on this entity.
+        * Constructor.
         *
-        * @param value
-        *      The content.
-        *      <br>Can be any of the following:
-        *      <ul>
-        *              <li><c>InputStream</c>
-        *              <li><c>Reader</c> - Converted to UTF-8 bytes.
-        *              <li><c>File</c>
-        *              <li><c>CharSequence</c> - Converted to UTF-8 bytes.
-        *              <li><c><jk>byte</jk>[]</c>.
-        *              <li>A {@link Supplier} of anything on this list.
-        *      </ul>
-        * </ul>
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public BasicHttpEntity content(Object value) {
-               this.content = value;
-               return this;
-       }
-
-       /**
-        * Sets the content on this entity.
-        *
-        * @param value
+        * @param content
         *      The content.
         *      <br>Can be any of the following:
         *      <ul>
@@ -164,12 +122,18 @@ public class BasicHttpEntity extends 
org.apache.http.entity.BasicHttpEntity {
         *              <li>A {@link Supplier} of anything on this list.
         *      </ul>
         * </ul>
-        * @return This object (for method chaining).
+        * @param contentType
+        *      The content type of the contents.
+        *      <br>Can be <jk>null</jk>.
+        * @param contentEncoding
+        *      The content encoding of the contents.
+        *      <br>Can be <jk>null</jk>.
         */
-       @FluentSetter
-       public BasicHttpEntity content(Supplier<?> value) {
-               this.content = value;
-               return this;
+       public BasicHttpEntity(Object content, ContentType contentType, 
ContentEncoding contentEncoding) {
+               super();
+               this.content = content;
+               contentType(contentType);
+               contentEncoding(contentEncoding);
        }
 
        /**
@@ -297,8 +261,7 @@ public class BasicHttpEntity extends 
org.apache.http.entity.BasicHttpEntity {
         */
        @FluentSetter
        public BasicHttpEntity resolving(VarResolver varResolver) {
-               this.varSession = varResolver == null ? null : 
varResolver.createSession();
-               return this;
+               return resolving(varResolver == null ? null : 
varResolver.createSession());
        }
 
        /**
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java
index 74a12f7..fc6bc09 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicHttpResource.java
@@ -24,7 +24,7 @@ import org.apache.juneau.http.header.ContentType;
 
 /**
  * An extension of an {@link HttpEntity} with support for arbitrary headers.
- * 
+ *
  * Provides the following features:
  * <ul class='spaced-list'>
  *     <li>
@@ -48,15 +48,6 @@ public class BasicHttpResource extends BasicHttpEntity 
implements HttpResource {
        /**
         * Creator.
         *
-        * @return A new empty {@link BasicHttpResource} object.
-        */
-       public static BasicHttpResource create() {
-               return new BasicHttpResource();
-       }
-
-       /**
-        * Creator.
-        *
         * @param content
         *      The content.
         *      <br>Can be any of the following:
@@ -72,7 +63,7 @@ public class BasicHttpResource extends BasicHttpEntity 
implements HttpResource {
         * @return A new empty {@link BasicHttpResource} object.
         */
        public static BasicHttpResource of(Object content) {
-               return new BasicHttpResource().content(content);
+               return new BasicHttpResource(content);
        }
 
        /**
@@ -93,18 +84,32 @@ public class BasicHttpResource extends BasicHttpEntity 
implements HttpResource {
         * @return A new empty {@link BasicHttpResource} object.
         */
        public static BasicHttpResource of(Supplier<?> content) {
-               return new BasicHttpResource().content(content);
+               return new BasicHttpResource(content);
        }
 
        /**
         * Constructor.
+        *
+        * @param content
+        *      The content.
+        *      <br>Can be any of the following:
+        *      <ul>
+        *              <li><c>InputStream</c>
+        *              <li><c>Reader</c> - Converted to UTF-8 bytes.
+        *              <li><c>File</c>
+        *              <li><c>CharSequence</c> - Converted to UTF-8 bytes.
+        *              <li><c><jk>byte</jk>[]</c>.
+        *              <li>A {@link Supplier} of anything on this list.
+        *      </ul>
+        * </ul>
         */
-       public BasicHttpResource() {
-               super();
+       public BasicHttpResource(Object content) {
+               super(content);
        }
 
        /**
         * Constructor.
+        *
         * @param content
         *      The content.
         *      <br>Can be any of the following:
@@ -125,10 +130,7 @@ public class BasicHttpResource extends BasicHttpEntity 
implements HttpResource {
         *      <br>Can be <jk>null</jk>.
         */
        public BasicHttpResource(Object content, ContentType contentType, 
ContentEncoding contentEncoding) {
-               super();
-               content(content);
-               contentType(contentType);
-               contentEncoding(contentEncoding);
+               super(content, contentType, contentEncoding);
        }
 
        /**
@@ -145,7 +147,12 @@ public class BasicHttpResource extends BasicHttpEntity 
implements HttpResource {
                return this;
        }
 
-       @Override
+       /**
+        * Adds an arbitrary header to this resource.
+        *
+        * @param value The header.
+        * @return This object (for method chaining).
+        */
        @FluentSetter
        public BasicHttpResource header(Header value) {
                if (value != null)
@@ -248,18 +255,6 @@ public class BasicHttpResource extends BasicHttpEntity 
implements HttpResource {
        }
 
        @Override /* GENERATED - BasicHttpEntity */
-       public BasicHttpResource content(Object value) {
-               super.content(value);
-               return this;
-       }
-
-       @Override /* GENERATED - BasicHttpEntity */
-       public BasicHttpResource content(Supplier<?> value) {
-               super.content(value);
-               return this;
-       }
-
-       @Override /* GENERATED - BasicHttpEntity */
        public BasicHttpResource contentEncoding(String value) {
                super.contentEncoding(value);
                return this;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
index f0477d5..9967051 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/BasicNameValuePair.java
@@ -141,8 +141,7 @@ public class BasicNameValuePair implements NameValuePair, 
Headerable {
         */
        @FluentSetter
        public BasicNameValuePair resolving(VarResolver varResolver) {
-               this.varSession = varResolver == null ? null : 
varResolver.createSession();
-               return this;
+               return resolving(varResolver == null ? null : 
varResolver.createSession());
        }
 
        /**
@@ -195,20 +194,6 @@ public class BasicNameValuePair implements NameValuePair, 
Headerable {
        }
 
        @Override /* Object */
-       public boolean equals(Object o) {
-               if (! (o instanceof NameValuePair))
-                       return false;
-               if (varSession != null)
-                       return false;
-               return ObjectUtils.eq(this, (NameValuePair)o, 
(x,y)->isEquals(x.name, y.getName()) && isEquals(x.getValue(), y.getValue()));
-       }
-
-       @Override /* Object */
-       public int hashCode() {
-               return HashCode.create().add(name).add(value).get();
-       }
-
-       @Override /* Object */
        public String toString() {
                return urlEncode(getName()) + "=" + urlEncode(getValue());
        }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpResource.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpResource.java
index a117fdc..0b8a417 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpResource.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HttpResource.java
@@ -17,7 +17,6 @@ import java.util.*;
 import org.apache.http.*;
 import org.apache.http.Header;
 import org.apache.juneau.http.annotation.*;
-import org.apache.juneau.internal.*;
 
 /**
  * An extension of an {@link HttpEntity} that also includes arbitrary headers.
@@ -32,68 +31,4 @@ public interface HttpResource extends HttpEntity {
         */
        @ResponseHeader("*")
        List<Header> getHeaders();
-
-       /**
-        * Shortcut for calling {@link #chunked()} with <jk>true</jk>.
-        *
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public HttpResource chunked();
-
-       /**
-        * Shortcut for calling {@link #contentType(Header)}.
-        *
-        * @param value The new <c>Content-Type</ header, or <jk>null</jk> to 
unset.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public HttpResource contentType(Header value);
-
-       /**
-        * Shortcut for calling {@link #contentEncoding(Header)}.
-        *
-        * @param value The new <c>Content-Encoding</ header, or <jk>null</jk> 
to unset.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public HttpResource contentEncoding(Header value);
-
-       /**
-        * Adds an arbitrary header to this resource.
-        *
-        * @param value The header.  Ignored if <jk>null</jk>.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public HttpResource header(Header value);
-
-       /**
-        * Sets the content of this resource.
-        *
-        * <p>
-        * Can be any of the following:
-        *      <ul>
-        *              <li><c>InputStream</c>
-        *              <li><c>Reader</c> - Converted to UTF-8 bytes.
-        *              <li><c>File</c>
-        *              <li><c>CharSequence</c> - Converted to UTF-8 bytes.
-        *              <li><c><jk>byte</jk>[]</c>.
-        *      </ul>
-        * </ul>
-        *
-        * @param value The new contents of this resource.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public HttpResource content(Object value);
-
-       /**
-        * Specifies that the contents of this resource should be cached into 
an internal byte array so that it can
-        * be read multiple times.
-        *
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public HttpResource cache();
 }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
index 0ea4f0e..b87859e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/SerializedHttpEntity.java
@@ -29,7 +29,7 @@ import org.apache.juneau.utils.*;
  * HttpEntity for serializing POJOs as the body of HTTP requests.
  */
 public class SerializedHttpEntity extends BasicHttpEntity {
-       private Serializer serializer;
+       private final Serializer serializer;
        private HttpPartSchema schema;
        private byte[] cache;
 
@@ -57,36 +57,16 @@ public class SerializedHttpEntity extends BasicHttpEntity {
 
        /**
         * Constructor.
-        */
-       public SerializedHttpEntity() {}
-
-       /**
-        * Constructor.
         *
         * @param content The POJO to serialize.  Can also be a {@link Reader} 
or {@link InputStream}.
         * @param serializer The serializer to use to serialize this response.
         */
        public SerializedHttpEntity(Object content, Serializer serializer) {
-               super(content);
+               super(content, ContentType.of(serializer == null ? null : 
serializer.getResponseContentType()), null);
                this.serializer = serializer;
        }
 
        /**
-        * Sets the serializer to use to serialize the content.
-        *
-        * <p>
-        * Value is ignored if the content is a stream or reader.
-        *
-        * @param value The serializer.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public SerializedHttpEntity serializer(Serializer value) {
-               this.serializer = value;
-               return this;
-       }
-
-       /**
         * Sets the schema to use to serialize the content.
         *
         * <p>
@@ -144,8 +124,6 @@ public class SerializedHttpEntity extends BasicHttpEntity {
                Object o = getRawContent();
                if (o instanceof InputStream || o instanceof Reader || o 
instanceof File)
                        return null;
-               if (serializer != null)
-                       return 
ContentType.of(serializer.getResponseContentType());
                return null;
        }
 
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
index 7c7b5d5..026cd24 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHeader_Test.java
@@ -113,16 +113,6 @@ public class BasicHeader_Test {
        }
 
        @Test
-       public void a06_hashSet() {
-               Set<BasicHeader> x = 
ASet.of(header("X1","1"),header("X1","1"),header("X1","2"),header("X2","1"),header("X2","2"),header("X3","3"),null);
-               assertObject(x).json().stderr().is("['X1: 1','X1: 2','X2: 
1','X2: 2','X3: 3',null]");
-               assertFalse(header("X1","1").equals(null));
-               assertFalse(header("X1","1").equals(header("X1","2")));
-               assertFalse(header("X1","1").equals(header("X2","1")));
-               assertTrue(header("X1","1").equals(header("X1","1")));
-       }
-
-       @Test
        public void a07_eqIC() {
                BasicHeader x = header("X1","1");
                assertTrue(x.eqIC("1"));
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpEntity_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpEntity_Test.java
index 797e63c..1f7b8bb 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpEntity_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpEntity_Test.java
@@ -23,7 +23,7 @@ import org.junit.*;
 public class BasicHttpEntity_Test {
        @Test
        public void a01_basic() throws Exception {
-               BasicHttpEntity x = create();
+               BasicHttpEntity x = of(null);
                File f = File.createTempFile("test", "txt");
 
                assertNull(x.getContentType());
@@ -132,13 +132,13 @@ public class BasicHttpEntity_Test {
                assertLong(of(new 
StringReader("foo")).getContentLength()).is(-1l);
                assertLong(of(new 
StringReader("foo")).contentLength(3).getContentLength()).is(3l);
 
-               BasicHttpEntity x2 = new BasicHttpEntity() {
+               BasicHttpEntity x2 = new BasicHttpEntity(new 
StringReader("foo")) {
                        @Override
                        protected byte[] readBytes(Object o) throws IOException 
{
                                throw new IOException("bad");
                        }
                };
-               x2.cache().content(new StringReader("foo"));
+               x2.cache();
                assertLong(x2.getContentLength()).is(-1l);
 
                assertThrown(()->x2.writeTo(new 
ByteArrayOutputStream())).contains("bad");
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java
index 604972c..21e2f11 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicHttpResource_Test.java
@@ -23,7 +23,7 @@ import org.junit.*;
 public class BasicHttpResource_Test {
        @Test
        public void a01_basic() throws Exception {
-               BasicHttpResource x = create();
+               BasicHttpResource x = of(null);
                File f = File.createTempFile("test", "txt");
 
                assertNull(x.getContentType());
@@ -109,13 +109,13 @@ public class BasicHttpResource_Test {
                assertObject(x.getLastHeader("Bar")).doesNotExist();
                assertObject(x.getHeaders()).json().is("['Foo: bar','Foo: 
baz']");
 
-               BasicHttpResource x2 = new BasicHttpResource() {
+               BasicHttpResource x2 = new BasicHttpResource(new 
StringReader("foo")) {
                        @Override
                        protected byte[] readBytes(Object o) throws IOException 
{
                                throw new IOException("bad");
                        }
                };
-               x2.cache().content(new StringReader("foo"));
+               x2.cache();
                assertLong(x2.getContentLength()).is(-1l);
                assertThrown(()->x2.writeTo(new 
ByteArrayOutputStream())).contains("bad");
        }
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicNameValuePair_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicNameValuePair_Test.java
index 699baea..50cce71 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicNameValuePair_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/BasicNameValuePair_Test.java
@@ -114,16 +114,6 @@ public class BasicNameValuePair_Test {
                x.assertName().is("X1").assertValue().is("1");
        }
 
-       @Test
-       public void a06_hashSet() {
-               Set<BasicNameValuePair> x = 
ASet.of(pair("X1","1"),pair("X1","1"),pair("X1","2"),pair("X2","1"),pair("X2","2"),pair("X3","3"),null);
-               
assertObject(x).json().stderr().is("['X1=1','X1=2','X2=1','X2=2','X3=3',null]");
-               assertFalse(pair("X1","1").equals(null));
-               assertFalse(pair("X1","1").equals(pair("X1","2")));
-               assertFalse(pair("X1","1").equals(pair("X2","1")));
-               assertTrue(pair("X1","1").equals(pair("X1","1")));
-       }
-
        
//------------------------------------------------------------------------------------------------------------------
        // Utility methods
        
//------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
index 635708a..91daebb 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_CommonInterfaces_Test.java
@@ -210,7 +210,7 @@ public class Remote_CommonInterfaces_Test {
        public static class D1 implements D {
                @Override
                public BasicHttpResource httpResource() throws IOException {
-                       return 
BasicHttpResource.create().contentType("text/foo").content("foo".getBytes()).header("Foo","foo").headers(ETag.of("bar"));
+                       return 
BasicHttpResource.of("foo".getBytes()).contentType("text/foo").header("Foo","foo").headers(ETag.of("bar"));
                }
        }
 
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_BasicCalls_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_BasicCalls_Test.java
index 2ec3b24..566e225 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_BasicCalls_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_BasicCalls_Test.java
@@ -163,7 +163,7 @@ public class RestClient_BasicCalls_Test {
                List<Object> bodies = AList.<Object>of(
                        new StringReader("{f:1}"),
                        new ByteArrayInputStream("{f:1}".getBytes()),
-                       BasicHttpResource.create().content("{f:1}"),
+                       BasicHttpResource.of("{f:1}"),
                        bean,
                        new StringEntity("{f:1}"),
                        pairs("f",1)
@@ -206,7 +206,7 @@ public class RestClient_BasicCalls_Test {
                List<Object> bodies = AList.<Object>of(
                        new StringReader("{f:1}"),
                        new ByteArrayInputStream("{f:1}".getBytes()),
-                       BasicHttpResource.create().content("{f:1}"),
+                       BasicHttpResource.of("{f:1}"),
                        bean,
                        new StringEntity("{f:1}"),
                        pairs("f",1)
@@ -312,10 +312,10 @@ public class RestClient_BasicCalls_Test {
                        /*[ 3]*/ new 
StringEntity("f=1",org.apache.http.entity.ContentType.APPLICATION_FORM_URLENCODED),
                        /*[ 4]*/ new 
StringEntity("f=1",(org.apache.http.entity.ContentType)null),
                        /*[ 5]*/ pair("f","1"),
-                       /*[ 6]*/ BasicHttpResource.create().content("f=1"),
-                       /*[ 7]*/ BasicHttpResource.create().content("f=1"),
-                       /*[ 8]*/ 
BasicHttpResource.create().content("f=1").contentType("application/x-www-form-urlencoded"),
-                       /*[ 9]*/ 
BasicHttpResource.create().content("f=1").contentType("application/x-www-form-urlencoded"),
+                       /*[ 6]*/ BasicHttpResource.of("f=1"),
+                       /*[ 7]*/ BasicHttpResource.of("f=1"),
+                       /*[ 8]*/ 
BasicHttpResource.of("f=1").contentType("application/x-www-form-urlencoded"),
+                       /*[ 9]*/ 
BasicHttpResource.of("f=1").contentType("application/x-www-form-urlencoded"),
                        /*[14]*/ s1,
                        /*[15]*/ s2
                );
@@ -346,7 +346,7 @@ public class RestClient_BasicCalls_Test {
                List<Object> bodies = AList.<Object>of(
                        new StringReader("{f:1}"),
                        new ByteArrayInputStream("{f:1}".getBytes()),
-                       BasicHttpResource.create().content("{f:1}"),
+                       BasicHttpResource.of("{f:1}"),
                        bean,
                        new StringEntity("{f:1}"),
                        pairs("f",1)
@@ -383,7 +383,7 @@ public class RestClient_BasicCalls_Test {
                List<Object> bodies = AList.<Object>of(
                        new StringReader("{f:1}"),
                        new ByteArrayInputStream("{f:1}".getBytes()),
-                       BasicHttpResource.create().content("{f:1}"),
+                       BasicHttpResource.of("{f:1}"),
                        bean,
                        new StringEntity("{f:1}"),
                        pairs("f",1)
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Body_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Body_Test.java
index 1cced7d..16cfaca 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Body_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Body_Test.java
@@ -105,6 +105,51 @@ public class RestClient_Body_Test {
        }
 
        @Test
+       public void a02_BasicHttpEntity() throws Exception {
+               BasicHttpEntity x1 = httpEntity("foo");
+               client().build().post("/", x1).run()
+                       .assertIntegerHeader("X-Content-Length").is(3)
+                       .assertHeader("X-Content-Encoding").doesNotExist()
+                       .assertHeader("X-Content-Type").doesNotExist()
+                       .assertHeader("X-Transfer-Encoding").doesNotExist()
+               ;
+
+               BasicHttpEntity x2 = 
httpEntity("foo").contentType("text/plain").contentEncoding("identity");
+               client().build().post("/",x2).run()
+                       .assertIntegerHeader("X-Content-Length").is(3)
+                       .assertHeader("X-Content-Encoding").is("identity")
+                       .assertHeader("X-Content-Type").is("text/plain")
+                       .assertHeader("X-Transfer-Encoding").doesNotExist()
+               ;
+
+               BasicHttpEntity x3 = 
httpEntity("foo").contentType(contentType("text/plain")).contentEncoding(contentEncoding("identity")).chunked();
+               client().build().post("/",x3).run()
+                       .assertIntegerHeader("X-Content-Length").doesNotExist() 
 // Missing when chunked.
+                       .assertHeader("X-Content-Encoding").is("identity")
+                       .assertHeader("X-Content-Type").is("text/plain")
+                       .assertHeader("X-Transfer-Encoding").is("chunked")
+               ;
+
+               BasicHttpEntity x4 = new BasicHttpEntity("foo", 
contentType("text/plain"), contentEncoding("identity"));
+               client().build().post("/",x4).run()
+                       .assertIntegerHeader("X-Content-Length").is(3)
+                       .assertHeader("X-Content-Encoding").is("identity")
+                       .assertHeader("X-Content-Type").is("text/plain")
+                       .assertHeader("X-Transfer-Encoding").doesNotExist()
+               ;
+
+               BasicHttpEntity x7 = httpEntity(new StringReader("foo"));
+               
client().build().post("/",x7).run().getBody().assertString().is("foo");
+
+               BasicHttpEntity x8 = httpEntity(new 
StringReader("foo")).cache();
+               
client().build().post("/",x8).run().getBody().assertString().is("foo");
+               
client().build().post("/",x8).run().getBody().assertString().is("foo");
+
+               BasicHttpEntity x9 = httpEntity(null);
+               
client().build().post("/",x9).run().getBody().assertString().isEmpty();
+       }
+
+       @Test
        public void a03_SerializedHttpEntity() throws Exception {
                Serializer js = JsonSerializer.DEFAULT;
                File f = File.createTempFile("test", "txt");
@@ -117,13 +162,6 @@ public class RestClient_Body_Test {
                        .assertHeader("X-Transfer-Encoding").is("chunked")  // 
Because content length is -1.
                ;
 
-               x.serializer(js);
-               client().build().post("/",x).run()
-                       .assertHeader("X-Content-Length").doesNotExist()
-                       .assertHeader("X-Content-Encoding").doesNotExist()
-                       .assertHeader("X-Content-Type").is("application/json")
-                       
.getBody().assertObject(ABean.class).json().is("{a:1,b:'foo'}");
-
                x = serializedHttpEntity(ABean.get(),js);
                client().build().post("/",x).run()
                        .assertHeader("X-Content-Length").doesNotExist()
@@ -168,6 +206,10 @@ public class RestClient_Body_Test {
                return BasicHttpResource.of(val);
        }
 
+       private static BasicHttpEntity httpEntity(Object val) {
+               return BasicHttpEntity.of(val);
+       }
+
        private static SerializedHttpEntity serializedHttpEntity(Object val, 
Serializer s) {
                return SerializedHttpEntity.of(val, s);
        }
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
index bf67232..eaf6047 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_FormData_Test.java
@@ -29,6 +29,7 @@ import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.mock2.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.svl.*;
 import org.apache.juneau.testutils.*;
 import org.apache.juneau.testutils.pojos.ABean;
 import org.apache.juneau.uon.*;
@@ -213,10 +214,20 @@ public class RestClient_FormData_Test {
        }
 
        @Test
-       public void a12_formData_BadSerialization() throws Exception {
+       public void a12_badSerialization() throws Exception {
                
assertThrown(()->client().formData(SerializedNameValuePair.of("Foo","bar").serializer(new
 A12())).build().get()).contains("bad");
        }
 
+       @Test
+       public void a13_svlVars() throws Exception {
+               System.setProperty("Test", "bar");
+               NameValuePair x = 
BasicNameValuePair.of("foo","$S{Test}").resolving(VarResolver.DEFAULT);
+               
client().formData(x).build().post("/formData").run().assertBody().urlDecode().is("foo=bar");
+               x = 
BasicNameValuePair.of("foo","$S{Test}").resolving((VarResolver)null);
+               
client().formData(x).build().post("/formData").run().assertBody().urlDecode().is("foo=$S{Test}");
+               System.clearProperty("Test");
+       }
+
        
//------------------------------------------------------------------------------------------------------------------
        // Helper methods.
        
//------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Headers_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Headers_Test.java
index 20d5921..2e2114e 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Headers_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Headers_Test.java
@@ -32,6 +32,7 @@ import org.apache.juneau.rest.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.mock2.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.svl.*;
 import org.apache.juneau.testutils.*;
 import org.apache.juneau.uon.*;
 import org.junit.*;
@@ -200,10 +201,20 @@ public class RestClient_Headers_Test {
        }
 
        @Test
-       public void a12_headers_BadSerialization() throws Exception {
+       public void a12_badSerialization() throws Exception {
                
assertThrown(()->checkFooClient().header(SerializedHeader.of("Foo","bar").serializer(new
 A12())).build().get()).contains("bad");
        }
 
+       @Test
+       public void a13_svlVars() throws Exception {
+               System.setProperty("Test", "bar");
+               Header x = 
BasicHeader.of("Foo","$S{Test}").resolving(VarResolver.DEFAULT);
+               
checkFooClient().header(x).build().get("/headers").run().assertBody().is("['bar']");
+               x = 
BasicHeader.of("Foo","$S{Test}").resolving((VarResolver)null);
+               
checkFooClient().header(x).build().get("/headers").run().assertBody().is("['$S{Test}']");
+               System.clearProperty("Test");
+       }
+
        
//------------------------------------------------------------------------------------------------------------------
        // Other tests
        
//------------------------------------------------------------------------------------------------------------------
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
index 23f770e..84d972a 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestCall.java
@@ -2258,23 +2258,6 @@ public final class RestCall extends BeanSession 
implements Closeable {
                                return (T)getReader();
                        if (ic.equals(InputStream.class))
                                return (T)getInputStream();
-                       if (type.isType(HttpResource.class)) {
-                               HttpResource r;
-                               try {
-                                       r = (HttpResource)type.newInstance();
-                                       for (Header h : 
response.getAllHeaders()) {
-                                               if 
(h.getName().equalsIgnoreCase("Content-Type"))
-                                                       r.contentType(h);
-                                               else if 
(h.getName().equalsIgnoreCase("Content-Encoding"))
-                                                       r.contentEncoding(h);
-                                               else
-                                                       r.header(h);
-                                       }
-                                       return (T)r;
-                               } catch (ExecutableException e) {
-                                       throw new IOException(e);
-                               }
-                       }
 
                        connect(type);
                        Header h = response.getFirstHeader("Content-Type");
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
index 7243a0e..a2828b9 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestResponseBody.java
@@ -757,7 +757,7 @@ public class RestResponseBody implements HttpEntity {
                                return (T)response;
 
                        if (type.isType(HttpResource.class)) {
-                               HttpResource r = 
(HttpResource)type.newInstance();
+                               BasicHttpResource r = 
BasicHttpResource.of(asInputStream());
                                for (Header h : response.getAllHeaders()) {
                                        if 
(h.getName().equalsIgnoreCase("Content-Type"))
                                                r.contentType(h);
@@ -766,7 +766,6 @@ public class RestResponseBody implements HttpEntity {
                                        else
                                                r.header(h);
                                }
-                               r.content(asInputStream());
                                return (T)r;
                        }
 
@@ -822,7 +821,7 @@ public class RestResponseBody implements HttpEntity {
                                response.getStringHeader("Content-Type")
                        );
 
-               } catch (ParseException | IOException | ExecutableException e) {
+               } catch (ParseException | IOException e) {
                        response.close();
                        throw new RestCallException(response, e, "Could not 
parse response body.");
                }
diff --git 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/helper/BasicHttpResourceTest.java
 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/helper/BasicHttpResourceTest.java
index ae64926..b3aa6eb 100644
--- 
a/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/helper/BasicHttpResourceTest.java
+++ 
b/juneau-rest/juneau-rest-server-utest/src/test/java/org/apache/juneau/rest/helper/BasicHttpResourceTest.java
@@ -30,37 +30,37 @@ public class BasicHttpResourceTest {
 
                @RestMethod
                public BasicHttpResource a01() throws Exception {
-                       return BasicHttpResource.create().content("foo");
+                       return BasicHttpResource.of("foo");
                }
 
                @RestMethod
                public BasicHttpResource a02() throws Exception {
-                       return BasicHttpResource.create().header("Foo", "Bar");
+                       return BasicHttpResource.of(null).header("Foo", "Bar");
                }
 
                @RestMethod
                public BasicHttpResource a03() throws Exception {
-                       return 
BasicHttpResource.create().contentType("application/json");
+                       return 
BasicHttpResource.of(null).contentType("application/json");
                }
 
                @RestMethod
                public BasicHttpResource a04(RestRequest req) throws Exception {
-                       return 
BasicHttpResource.create().resolving(req.getVarResolverSession()).content("$RQ{foo}");
+                       return 
BasicHttpResource.of("$RQ{foo}").resolving(req.getVarResolverSession());
                }
 
                @RestMethod
                public BasicHttpResource a05() throws Exception {
-                       return BasicHttpResource.create().content(new 
ByteArrayInputStream("foo".getBytes()));
+                       return BasicHttpResource.of(new 
ByteArrayInputStream("foo".getBytes()));
                }
 
                @RestMethod
                public BasicHttpResource a06() throws Exception {
-                       return BasicHttpResource.create().content(new 
StringReader("foo"));
+                       return BasicHttpResource.of(new StringReader("foo"));
                }
 
                @RestMethod
                public BasicHttpResource a07() throws Exception {
-                       return BasicHttpResource.create().content(new 
StringBuilder("foo"));
+                       return BasicHttpResource.of(new StringBuilder("foo"));
                }
        }
 
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index fba70ca..be6e86a 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -1450,9 +1450,7 @@ public final class RestRequest extends 
HttpServletRequestWrapper {
                String s = context.getClasspathResourceAsString(name, 
getLocale());
                if (s == null)
                        return null;
-               BasicHttpResource b = BasicHttpResource
-                       .create()
-                       .content(s)
+               BasicHttpResource b = BasicHttpResource.of(s)
                        .contentType(mediaType == null ? null : 
ContentType.of(mediaType.toString()));
                if (resolveVars)
                        b.resolving(getVarResolverSession());

Reply via email to