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 ceacf70 RestClient tests.
ceacf70 is described below
commit ceacf70e220d7e6e8645a7ea830fb49489ebbc55
Author: JamesBognar <[email protected]>
AuthorDate: Wed Jul 1 14:00:33 2020 -0400
RestClient tests.
---
.../org/apache/juneau/http/HeaderSupplier.java | 155 +++++++++++++-
.../apache/juneau/http/NameValuePairSupplier.java | 159 ++++++++++++++-
.../org/apache/juneau/http/NameValuePairs.java | 224 ---------------------
.../rest/test/client/ThirdPartyProxyTest.java | 12 +-
.../rest/client2/Remote_BodyAnnotation_Test.java | 12 +-
.../client2/Remote_FormDataAnnotation_Test.java | 22 +-
.../rest/client2/Remote_HeaderAnnotation_Test.java | 37 ++--
.../rest/client2/Remote_PathAnnotation_Test.java | 16 +-
.../rest/client2/Remote_QueryAnnotation_Test.java | 16 +-
.../rest/client2/RestClient_BasicCalls_Test.java | 12 +-
.../rest/client2/RestClient_FormData_Test.java | 4 +-
.../rest/client2/RestClient_Headers_Test.java | 11 -
.../juneau/rest/client2/RestClient_Paths_Test.java | 4 +-
.../juneau/rest/client2/RestClient_Query_Test.java | 4 +-
.../apache/juneau/rest/client/NameValuePairs.java | 2 +-
.../org/apache/juneau/rest/client2/RestClient.java | 22 +-
.../juneau/rest/client2/RestClientBuilder.java | 5 -
.../apache/juneau/rest/client2/RestRequest.java | 78 ++++---
18 files changed, 425 insertions(+), 370 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
index e78861f..3094642 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/HeaderSupplier.java
@@ -12,12 +12,19 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
+import static org.apache.juneau.internal.StringUtils.*;
+
import java.util.*;
import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.stream.*;
import org.apache.http.*;
import org.apache.juneau.*;
+import org.apache.juneau.http.header.*;
+import org.apache.juneau.httppart.*;
import org.apache.juneau.internal.*;
+import org.apache.juneau.oapi.*;
/**
* Specifies a dynamic supplier of {@link Header} objects.
@@ -29,6 +36,8 @@ public class HeaderSupplier implements Iterable<Header> {
/** Represents no header supplier */
public final class Null extends HeaderSupplier {}
+ private final List<Iterable<Header>> headers = new
CopyOnWriteArrayList<>();
+
/**
* Convenience creator.
*
@@ -39,6 +48,43 @@ public class HeaderSupplier implements Iterable<Header> {
}
/**
+ * Creates an empty instance.
+ *
+ * @return A new empty instance.
+ */
+ public static HeaderSupplier of() {
+ return new HeaderSupplier();
+ }
+
+ /**
+ * Creates an instance initialized with the specified headers.
+ *
+ * @param headers The headers to add to this list.
+ * @return A new instance.
+ */
+ public static HeaderSupplier of(Collection<Header> headers) {
+ return new HeaderSupplier().addAll(headers);
+ }
+
+ /**
+ * Creates an instance initialized with the specified name/value pairs.
+ *
+ * @param parameters
+ * Initial list of parameters.
+ * <br>Must be an even number of parameters representing key/value
pairs.
+ * @throws RuntimeException If odd number of parameters were specified.
+ * @return A new instance.
+ */
+ public static HeaderSupplier ofPairs(Object...parameters) {
+ List<Header> l = new ArrayList<>();
+ if (parameters.length % 2 != 0)
+ throw new BasicRuntimeException("Odd number of
parameters passed into HeaderSupplier.ofPairs()");
+ for (int i = 0; i < parameters.length; i+=2)
+ l.add(new BasicHeader(stringify(parameters[i]),
parameters[i+1]));
+ return HeaderSupplier.of(l);
+ }
+
+ /**
* Convenience creator.
*
* @param values
@@ -63,8 +109,6 @@ public class HeaderSupplier implements Iterable<Header> {
return s;
}
- private final List<Iterable<Header>> headers = new
CopyOnWriteArrayList<>();
-
/**
* Add a header to this supplier.
*
@@ -89,8 +133,115 @@ public class HeaderSupplier implements Iterable<Header> {
return this;
}
+ /**
+ * Adds all the specified headers to this supplier.
+ *
+ * @param headers The headers to add to this supplier.
+ * @return This object(for method chaining).
+ */
+ private HeaderSupplier addAll(Collection<Header> headers) {
+
this.headers.addAll(headers.stream().map(x->Collections.singleton(x)).collect(Collectors.toList()));
+ return this;
+ }
+
+
//------------------------------------------------------------------------------------------------------------------
+ // Appenders
+
//------------------------------------------------------------------------------------------------------------------
+
+ /**
+ * Appends the specified header to the end of this list.
+ *
+ * <p>
+ * The header is added as a {@link BasicHeader}.
+ *
+ * @param name The header name.
+ * @param value The header value.
+ * @return This object (for method chaining).
+ */
+ public HeaderSupplier add(String name, Object value) {
+ return add(new BasicHeader(name, value));
+ }
+
+ /**
+ * Appends the specifiedheader to the end of this list using a value
supplier.
+ *
+ * <p>
+ * The header is added as a {@link BasicHeader}.
+ *
+ * <p>
+ * Value is re-evaluated on each call to {@link BasicHeader#getValue()}.
+ *
+ * @param name The header name.
+ * @param value The header value supplier.
+ * @return This object (for method chaining).
+ */
+ public HeaderSupplier add(String name, Supplier<?> value) {
+ return add(new BasicHeader(name, value));
+ }
+
+ /**
+ * Appends the specified header to the end of this list.
+ *
+ * @param name The header name.
+ * @param value The header value.
+ * @param serializer
+ * The serializer to use for serializing the value to a string
value.
+ * @param schema
+ * The schema object that defines the format of the output.
+ * <br>If <jk>null</jk>, defaults to the schema defined on the
parser.
+ * <br>If that's also <jk>null</jk>, defaults to {@link
HttpPartSchema#DEFAULT}.
+ * <br>Only used if serializer is schema-aware (e.g. {@link
OpenApiSerializer}).
+ * @param skipIfEmpty If value is a blank string, the value should
return as <jk>null</jk>.
+ * @return This object (for method chaining).
+ */
+ public HeaderSupplier add(String name, Object value,
HttpPartSerializerSession serializer, HttpPartSchema schema, boolean
skipIfEmpty) {
+ return add(new SerializedHeader(name, value, serializer,
schema, skipIfEmpty));
+ }
+
+ /**
+ * Returns this list as a URL-encoded custom query.
+ */
+ @Override /* Object */
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ for (Header h : this) {
+ String v = h.getValue();
+ if (v != null) {
+ if (sb.length() > 0)
+ sb.append("&");
+
sb.append(urlEncode(h.getName())).append('=').append(urlEncode(h.getValue()));
+ }
+ }
+ return sb.toString();
+ }
+
@Override
public Iterator<Header> iterator() {
return CollectionUtils.iterator(headers);
}
+
+ /**
+ * Returns these headers as an array.
+ *
+ * @return These headers as an array.
+ */
+ public Header[] toArray() {
+ ArrayList<Header> l = new ArrayList<>();
+ for (Header p : this)
+ l.add(p);
+ return l.toArray(new Header[l.size()]);
+ }
+
+ /**
+ * Returns these headers as an array.
+ *
+ * @param array The array to copy in to.
+ * @return These headers as an array.
+ */
+ public <T extends Header> T[] toArray(T[] array) {
+ ArrayList<Header> l = new ArrayList<>();
+ for (Header p : this)
+ l.add(p);
+ return l.toArray(array);
+ }
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
index 55fc012..21be3a5 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairSupplier.java
@@ -12,12 +12,19 @@
//
***************************************************************************************************************************
package org.apache.juneau.http;
+import static org.apache.juneau.internal.StringUtils.*;
+
import java.util.*;
import java.util.concurrent.*;
+import java.util.function.*;
+import java.util.stream.*;
import org.apache.http.*;
import org.apache.juneau.*;
+import org.apache.juneau.httppart.*;
import org.apache.juneau.internal.*;
+import org.apache.juneau.oapi.*;
+import org.apache.juneau.urlencoding.*;
/**
* Specifies a dynamic supplier of {@link NameValuePair} objects.
@@ -29,6 +36,8 @@ public class NameValuePairSupplier implements
Iterable<NameValuePair> {
/** Represents no header supplier */
public final class Null extends NameValuePairSupplier {}
+ private final List<Iterable<NameValuePair>> pairs = new
CopyOnWriteArrayList<>();
+
/**
* Convenience creator.
*
@@ -39,6 +48,43 @@ public class NameValuePairSupplier implements
Iterable<NameValuePair> {
}
/**
+ * Creates an empty instance.
+ *
+ * @return A new empty instance.
+ */
+ public static NameValuePairSupplier of() {
+ return new NameValuePairSupplier();
+ }
+
+ /**
+ * Creates an instance initialized with the specified pairs.
+ *
+ * @param pairs The pairs to add to this list.
+ * @return A new instance.
+ */
+ public static NameValuePairSupplier of(Collection<NameValuePair> pairs)
{
+ return new NameValuePairSupplier().addAll(pairs);
+ }
+
+ /**
+ * Creates an instance initialized with the specified pairs.
+ *
+ * @param parameters
+ * Initial list of parameters.
+ * <br>Must be an even number of parameters representing key/value
pairs.
+ * @throws RuntimeException If odd number of parameters were specified.
+ * @return A new instance.
+ */
+ public static NameValuePairSupplier ofPairs(Object...parameters) {
+ List<NameValuePair> l = new ArrayList<>();
+ if (parameters.length % 2 != 0)
+ throw new BasicRuntimeException("Odd number of
parameters passed into NameValuePairSupplier.ofPairs()");
+ for (int i = 0; i < parameters.length; i+=2)
+ l.add(new BasicNameValuePair(stringify(parameters[i]),
parameters[i+1]));
+ return NameValuePairSupplier.of(l);
+ }
+
+ /**
* Convenience creator.
*
* @param values
@@ -63,8 +109,6 @@ public class NameValuePairSupplier implements
Iterable<NameValuePair> {
return s;
}
- private final List<Iterable<NameValuePair>> pairs = new
CopyOnWriteArrayList<>();
-
/**
* Add a name-value pair to this supplier.
*
@@ -89,8 +133,119 @@ public class NameValuePairSupplier implements
Iterable<NameValuePair> {
return this;
}
+ /**
+ * Adds all the specified name-value pairs to this supplier.
+ *
+ * @param pairs The pairs to add to this supplier.
+ * @return This object(for method chaining).
+ */
+ private NameValuePairSupplier addAll(Collection<NameValuePair> pairs) {
+
this.pairs.addAll(pairs.stream().map(x->Collections.singleton(x)).collect(Collectors.toList()));
+ return this;
+ }
+
+
//------------------------------------------------------------------------------------------------------------------
+ // Appenders
+
//------------------------------------------------------------------------------------------------------------------
+
+ /**
+ * Appends the specified name/value pair to the end of this list.
+ *
+ * <p>
+ * The pair is added as a {@link BasicNameValuePair}.
+ *
+ * @param name The pair name.
+ * @param value The pair value.
+ * @return This object (for method chaining).
+ */
+ public NameValuePairSupplier add(String name, Object value) {
+ return add(new BasicNameValuePair(name, value));
+ }
+
+ /**
+ * Appends the specified name/value pair to the end of this list using
a value supplier.
+ *
+ * <p>
+ * The pair is added as a {@link BasicNameValuePair}.
+ *
+ * <p>
+ * Value is re-evaluated on each call to {@link
BasicNameValuePair#getValue()}.
+ *
+ * @param name The pair name.
+ * @param value The pair value supplier.
+ * @return This object (for method chaining).
+ */
+ public NameValuePairSupplier add(String name, Supplier<?> value) {
+ return add(new BasicNameValuePair(name, value));
+ }
+
+ /**
+ * Appends the specified name/value pair to the end of this list.
+ *
+ * <p>
+ * The value is converted to UON notation using the {@link
UrlEncodingSerializer} defined on the client.
+ *
+ * @param name The pair name.
+ * @param value The pair value.
+ * @param partType The HTTP part type.
+ * @param serializer
+ * The serializer to use for serializing the value to a string
value.
+ * @param schema
+ * The schema object that defines the format of the output.
+ * <br>If <jk>null</jk>, defaults to the schema defined on the
parser.
+ * <br>If that's also <jk>null</jk>, defaults to {@link
HttpPartSchema#DEFAULT}.
+ * <br>Only used if serializer is schema-aware (e.g. {@link
OpenApiSerializer}).
+ * @param skipIfEmpty If value is a blank string, the value should
return as <jk>null</jk>.
+ * @return This object (for method chaining).
+ */
+ public NameValuePairSupplier add(String name, Object value,
HttpPartType partType, HttpPartSerializerSession serializer, HttpPartSchema
schema, boolean skipIfEmpty) {
+ return add(new SerializedNameValuePair(name, value, partType,
serializer, schema, skipIfEmpty));
+ }
+
+ /**
+ * Returns this list as a URL-encoded custom query.
+ */
+ @Override /* Object */
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ for (NameValuePair p : this) {
+ String v = p.getValue();
+ if (v != null) {
+ if (sb.length() > 0)
+ sb.append("&");
+
sb.append(urlEncode(p.getName())).append('=').append(urlEncode(p.getValue()));
+ }
+ }
+ return sb.toString();
+ }
+
@Override
public Iterator<NameValuePair> iterator() {
return CollectionUtils.iterator(pairs);
}
+
+ /**
+ * Returns these pairs as an array.
+ *
+ * @return These pairs as an array.
+ */
+ public NameValuePair[] toArray() {
+ ArrayList<NameValuePair> l = new ArrayList<>();
+ for (NameValuePair p : this)
+ l.add(p);
+ return l.toArray(new NameValuePair[l.size()]);
+ }
+
+ /**
+ * Returns these pairs as an array.
+ *
+ * @param array The array to copy in to.
+ * @return These pairs as an array.
+ */
+ public <T extends NameValuePair> T[] toArray(T[] array) {
+ ArrayList<NameValuePair> l = new ArrayList<>();
+ for (NameValuePair p : this)
+ l.add(p);
+ return l.toArray(array);
+ }
}
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairs.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairs.java
deleted file mode 100644
index 642365d..0000000
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/NameValuePairs.java
+++ /dev/null
@@ -1,224 +0,0 @@
-//
***************************************************************************************************************************
-// * Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file *
-// * distributed with this work for additional information regarding copyright
ownership. The ASF licenses this file *
-// * to you under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance *
-// * with the License. You may obtain a copy of the License at
*
-// *
*
-// * http://www.apache.org/licenses/LICENSE-2.0
*
-// *
*
-// * Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an *
-// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied. See the License for the *
-// * specific language governing permissions and limitations under the
License. *
-//
***************************************************************************************************************************
-package org.apache.juneau.http;
-
-import static org.apache.juneau.internal.StringUtils.*;
-
-import java.util.*;
-import java.util.function.*;
-
-import org.apache.http.*;
-import org.apache.juneau.*;
-import org.apache.juneau.httppart.*;
-import org.apache.juneau.oapi.*;
-import org.apache.juneau.urlencoding.*;
-
-/**
- * Convenience class for constructing instances of
<c>List<NameValuePair></c>.
- *
- * <p>
- * Instances of this method can be passed directly to the
<c>RestClient.post(Object, Object)</c> method or
- * <c>RestRequest.body(Object)</c> methods to perform URL-encoded form posts.
- *
- * <h5 class='section'>Example:</h5>
- * <p class='bcode w800'>
- * NameValuePairs params = <jk>new</jk>
NameValuePairs(<js>"j_username"</js>, user, <js>"j_password"</js>, pw);
- * client.post(<jsf>URL</jsf>, params).execute();
- * </p>
- */
-public class NameValuePairs extends LinkedList<NameValuePair> {
-
- private static final long serialVersionUID = 1L;
-
-
//------------------------------------------------------------------------------------------------------------------
- // Constructors
-
//------------------------------------------------------------------------------------------------------------------
-
- /**
- * Empty constructor.
- */
- public NameValuePairs() {}
-
- /**
- * Constructor.
- *
- * @param parameters Initial list of parameters.
- */
- public NameValuePairs(NameValuePair...parameters) {
- Collections.addAll(this, parameters);
- }
-
- /**
- * Constructor.
- *
- * @param parameters Initial list of parameters.
- */
- public NameValuePairs(Collection<? extends NameValuePair> parameters) {
- addAll(parameters);
- }
-
- /**
- * Constructor.
- *
- * <p>
- * Constructs a set of {@link BasicNameValuePair} objects from a list
of key/value pairs.
- *
- * @param parameters
- * Initial list of parameters.
- * <br>Must be an even number of parameters representing key/value
pairs.
- * @throws RuntimeException If odd number of parameters were specified.
- */
- public NameValuePairs(Object...parameters) {
- if (parameters.length % 2 != 0)
- throw new BasicRuntimeException("Odd number of
parameters passed into NameValuePairs(Object...)");
- for (int i = 0; i < parameters.length; i+=2)
- add(new BasicNameValuePair(stringify(parameters[i]),
parameters[i+1]));
- }
-
-
//------------------------------------------------------------------------------------------------------------------
- // Creators
-
//------------------------------------------------------------------------------------------------------------------
-
- /**
- * Creates an empty instance.
- *
- * @return A new empty instance.
- */
- public static NameValuePairs of() {
- return new NameValuePairs();
- }
-
- /**
- * Creates an instance initialized with the specified pairs.
- *
- * @param pairs The pairs to add to this list.
- * @return A new instance.
- */
- public static NameValuePairs of(NameValuePair...pairs) {
- return new NameValuePairs(pairs);
- }
-
- /**
- * Creates an instance initialized with the specified pairs.
- *
- * @param pairs The pairs to add to this list.
- * @return A new instance.
- */
- public static NameValuePairs of(Collection<? extends NameValuePair>
pairs) {
- return new NameValuePairs(pairs);
- }
-
- /**
- * Creates an instance initialized with the specified pairs.
- *
- * @param parameters
- * Initial list of parameters.
- * <br>Must be an even number of parameters representing key/value
pairs.
- * @throws RuntimeException If odd number of parameters were specified.
- * @return A new instance.
- */
- public static NameValuePairs of(Object...parameters) {
- return new NameValuePairs(parameters);
- }
-
-
//------------------------------------------------------------------------------------------------------------------
- // Appenders
-
//------------------------------------------------------------------------------------------------------------------
-
- /**
- * Appends the specified pair to the end of this list.
- *
- * @param pair The pair to append to this list.
- * @return This object (for method chaining).
- */
- public NameValuePairs append(NameValuePair pair) {
- super.add(pair);
- return this;
- }
-
- /**
- * Appends the specified name/value pair to the end of this list.
- *
- * <p>
- * The pair is added as a {@link BasicNameValuePair}.
- *
- * @param name The pair name.
- * @param value The pair value.
- * @return This object (for method chaining).
- */
- public NameValuePairs append(String name, Object value) {
- super.add(new BasicNameValuePair(name, value));
- return this;
- }
-
- /**
- * Appends the specified name/value pair to the end of this list using
a value supplier.
- *
- * <p>
- * The pair is added as a {@link BasicNameValuePair}.
- *
- * <p>
- * Value is re-evaluated on each call to {@link
BasicNameValuePair#getValue()}.
- *
- * @param name The pair name.
- * @param value The pair value supplier.
- * @return This object (for method chaining).
- */
- public NameValuePairs append(String name, Supplier<?> value) {
- super.add(new BasicNameValuePair(name, value));
- return this;
- }
-
- /**
- * Appends the specified name/value pair to the end of this list.
- *
- * <p>
- * The value is converted to UON notation using the {@link
UrlEncodingSerializer} defined on the client.
- *
- * @param name The pair name.
- * @param value The pair value.
- * @param partType The HTTP part type.
- * @param serializer
- * The serializer to use for serializing the value to a string
value.
- * @param schema
- * The schema object that defines the format of the output.
- * <br>If <jk>null</jk>, defaults to the schema defined on the
parser.
- * <br>If that's also <jk>null</jk>, defaults to {@link
HttpPartSchema#DEFAULT}.
- * <br>Only used if serializer is schema-aware (e.g. {@link
OpenApiSerializer}).
- * @param skipIfEmpty If value is a blank string, the value should
return as <jk>null</jk>.
- * @return This object (for method chaining).
- */
- public NameValuePairs append(String name, Object value, HttpPartType
partType, HttpPartSerializerSession serializer, HttpPartSchema schema, boolean
skipIfEmpty) {
- super.add(new SerializedNameValuePair(name, value, partType,
serializer, schema, skipIfEmpty));
- return this;
- }
-
- /**
- * Returns this list as a URL-encoded custom query.
- */
- @Override /* Object */
- public String toString() {
- if (isEmpty())
- return null;
- StringBuilder sb = new StringBuilder();
- for (NameValuePair p : this) {
- String v = p.getValue();
- if (v != null) {
- if (sb.length() > 0)
- sb.append("&");
-
sb.append(urlEncode(p.getName())).append('=').append(urlEncode(p.getValue()));
- }
- }
- return sb.toString();
- }
-}
diff --git
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
index 349ff0d..e1c6990 100644
---
a/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
+++
b/juneau-microservice/juneau-microservice-ftest/src/test/java/org/apache/juneau/rest/test/client/ThirdPartyProxyTest.java
@@ -233,7 +233,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@Test
public void a10_nameValuePairsHeader() throws Exception {
String r = proxy.nameValuePairsHeader(
- new NameValuePairs().append("a", "foo").append("b",
"").append("c", null)
+ HeaderSupplier.ofPairs("a","foo","b","","c",null)
);
assertEquals("OK", r);
}
@@ -374,7 +374,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@Test
public void b12_nameValuePairsQuery() throws Exception {
String r = proxy.nameValuePairsQuery(
- new NameValuePairs().append("a", "foo").append("b",
"").append("c", null)
+ NameValuePairSupplier.ofPairs("a","foo","b","","c",null)
);
assertEquals("OK", r);
}
@@ -503,7 +503,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@Test
public void c10_nameValuePairsFormData() throws Exception {
String r = proxy.nameValuePairsFormData(
- new NameValuePairs().append("a", "foo").append("b",
"").append("c", null)
+ NameValuePairSupplier.ofPairs("a","foo","b","","c",null)
);
assertEquals("OK", r);
}
@@ -1618,7 +1618,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@RemoteMethod(method="GET", path="/nameValuePairsHeader")
String nameValuePairsHeader(
- @Header(value="*", allowEmptyValue=true) NameValuePairs
a
+ @Header(value="*", allowEmptyValue=true) HeaderSupplier
a
);
//-------------------------------------------------------------------------------------------------------------
@@ -1726,7 +1726,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@RemoteMethod(method="GET", path="/nameValuePairsQuery")
String nameValuePairsQuery(
- @Query("*") NameValuePairs a
+ @Query("*") NameValuePairSupplier a
);
//-------------------------------------------------------------------------------------------------------------
@@ -1824,7 +1824,7 @@ public class ThirdPartyProxyTest extends RestTestcase {
@RemoteMethod(method="POST", path="/nameValuePairsFormData")
String nameValuePairsFormData(
- @FormData("*") NameValuePairs a
+ @FormData("*") NameValuePairSupplier a
);
//-------------------------------------------------------------------------------------------------------------
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
index 6e2a6ca..9880ba7 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_BodyAnnotation_Test.java
@@ -133,7 +133,7 @@ public class Remote_BodyAnnotation_Test {
String postX7(@Body Reader b);
String postX8(@Body InputStream b);
String postX9(@Body HttpEntity b);
- String postX10(@Body NameValuePairs b);
+ String postX10(@Body NameValuePairSupplier b);
}
@Test
@@ -148,7 +148,7 @@ public class Remote_BodyAnnotation_Test {
assertEquals("xxx",x.postX7(new StringReader("xxx")));
assertEquals("xxx",x.postX8(new StringInputStream("xxx")));
assertEquals("xxx",x.postX9(new StringEntity("xxx")));
- assertEquals("foo=bar",x.postX10(new
NameValuePairs().append("foo","bar")));
+
assertEquals("foo=bar",x.postX10(NameValuePairSupplier.ofPairs("foo","bar")));
}
//-----------------------------------------------------------------------------------------------------------------
@@ -228,7 +228,7 @@ public class Remote_BodyAnnotation_Test {
String postX7(@Body Reader b);
String postX8(@Body InputStream b);
String postX9(@Body HttpEntity b);
- String postX10(@Body NameValuePairs b);
+ String postX10(@Body NameValuePairSupplier b);
}
@Test
@@ -243,7 +243,7 @@ public class Remote_BodyAnnotation_Test {
assertEquals("xxx",x.postX7(new StringReader("xxx")));
assertEquals("xxx",x.postX8(new StringInputStream("xxx")));
assertEquals("xxx",x.postX9(new
StringEntity("xxx",org.apache.http.entity.ContentType.create("text/plain"))));
- assertEquals("foo=bar",x.postX10(new
NameValuePairs().append("foo","bar")));
+
assertEquals("foo=bar",x.postX10(NameValuePairSupplier.ofPairs("foo","bar")));
}
//-----------------------------------------------------------------------------------------------------------------
@@ -309,7 +309,7 @@ public class Remote_BodyAnnotation_Test {
String postX7(@Body Reader b);
String postX8(@Body InputStream b);
String postX9(@Body HttpEntity b);
- String postX10(@Body NameValuePairs b);
+ String postX10(@Body NameValuePairSupplier b);
}
@Test
@@ -323,6 +323,6 @@ public class Remote_BodyAnnotation_Test {
assertEquals("xxx",x.postX7(new StringReader("xxx")));
assertEquals("xxx",x.postX8(new StringInputStream("xxx")));
assertEquals("xxx",x.postX9(new
StringEntity("xxx",org.apache.http.entity.ContentType.create("text/plain"))));
- assertEquals("foo=bar",x.postX10(new
NameValuePairs().append("foo","bar")));
+
assertEquals("foo=bar",x.postX10(NameValuePairSupplier.ofPairs("foo","bar")));
}
}
\ No newline at end of file
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_FormDataAnnotation_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_FormDataAnnotation_Test.java
index a059d6b..cefd38b 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_FormDataAnnotation_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_FormDataAnnotation_Test.java
@@ -94,8 +94,8 @@ public class Remote_FormDataAnnotation_Test {
@RemoteMethod(path="a") String postX16(@FormData Reader b);
@RemoteMethod(path="a") String postX17(@FormData("*")
InputStream b);
@RemoteMethod(path="a") String postX18(@FormData InputStream b);
- @RemoteMethod(path="a") String postX19(@FormData("*")
NameValuePairs b);
- @RemoteMethod(path="a") String postX20(@FormData NameValuePairs
b);
+ @RemoteMethod(path="a") String postX19(@FormData("*")
NameValuePairSupplier b);
+ @RemoteMethod(path="a") String postX20(@FormData
NameValuePairSupplier b);
@RemoteMethod(path="a") String postX21(@FormData NameValuePair
b);
@RemoteMethod(path="a") String postX22(@FormData String b);
@RemoteMethod(path="a") String postX23(@FormData InputStream b);
@@ -827,24 +827,24 @@ public class Remote_FormDataAnnotation_Test {
public static class K3a {
@FormData
- public NameValuePairs getA() {
- return
pairs("a1","v1").append("a2",123).append("a3",null).append("a4","");
+ public NameValuePairSupplier getA() {
+ return pairs("a1","v1","a2",123,"a3",null,"a4","");
}
@FormData("*")
- public NameValuePairs getB() {
- return
pairs("b1","true").append("b2","123").append("b3","null");
+ public NameValuePairSupplier getB() {
+ return pairs("b1","true","b2","123","b3","null");
}
@FormData(n="*")
- public NameValuePairs getC() {
+ public NameValuePairSupplier getC() {
return pairs("c1","v1","c2",123,"c3",null,"c4","");
}
@FormData("*")
- public NameValuePairs getD() {
+ public NameValuePairSupplier getD() {
return null;
}
@FormData
public NameValuePair[] getE() {
- return
pairs("e1","v1","e2",123,"e3",null,"e4","").toArray(new NameValuePair[0]);
+ return
pairs("e1","v1","e2",123,"e3",null,"e4","").toArray();
}
@FormData
public BasicNameValuePair[] getF() {
@@ -971,8 +971,8 @@ public class Remote_FormDataAnnotation_Test {
return BasicNameValuePair.of(name,val);
}
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static NameValuePairSupplier pairs(Object...pairs) {
+ return NameValuePairSupplier.ofPairs(pairs);
}
private static RestClientBuilder client(Class<?> c) {
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_HeaderAnnotation_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_HeaderAnnotation_Test.java
index 708ff71..7bc8337 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_HeaderAnnotation_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_HeaderAnnotation_Test.java
@@ -21,7 +21,6 @@ import java.math.*;
import java.util.*;
import java.util.concurrent.atomic.*;
-import org.apache.http.*;
import org.apache.juneau.collections.*;
import org.apache.juneau.http.*;
import org.apache.juneau.http.annotation.*;
@@ -78,8 +77,8 @@ public class Remote_HeaderAnnotation_Test {
@RemoteMethod(path="a") String getX12(@Header Map<String,Bean>
b);
@RemoteMethod(path="a") String getX13(@Header(n="x",f="uon")
Map<String,Bean> b);
@RemoteMethod(path="a") String getX14(@Header(format="uon")
Map<String,Bean> b);
- @RemoteMethod(path="a") String getX15(@Header("*")
NameValuePairs b);
- @RemoteMethod(path="a") String getX16(@Header NameValuePairs b);
+ @RemoteMethod(path="a") String getX15(@Header("*")
HeaderSupplier b);
+ @RemoteMethod(path="a") String getX16(@Header HeaderSupplier b);
@RemoteMethod(path="a") String getX17(@Header
org.apache.http.Header b);
@RemoteMethod(path="a") String getX18(@Header
org.apache.http.Header[] b);
@RemoteMethod(path="a") String getX19(@Header String b);
@@ -102,8 +101,8 @@ public class Remote_HeaderAnnotation_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("{foo:'bar'}",x.getX15(pairs("foo","bar")));
- assertEquals("{foo:'bar'}",x.getX16(pairs("foo","bar")));
+ assertEquals("{foo:'bar'}",x.getX15(headers("foo","bar")));
+ assertEquals("{foo:'bar'}",x.getX16(headers("foo","bar")));
assertEquals("{foo:'bar'}",x.getX17(header("foo","bar")));
assertEquals("{foo:'bar'}",x.getX18(new
org.apache.http.Header[]{header("foo","bar")}));
assertThrown(()->x.getX19("Foo")).contains("Invalid value
type");
@@ -793,33 +792,33 @@ public class Remote_HeaderAnnotation_Test {
public static class K3a {
@Header(aev=true)
- public NameValuePairs getA() {
- return pairs("a1","v1","a2",123,"a3",null,"a4","");
+ public HeaderSupplier getA() {
+ return headers("a1","v1","a2",123,"a3",null,"a4","");
}
@Header(value="*",aev=true)
- public NameValuePairs getB() {
- return pairs("b1","true","b2","123","b3","null");
+ public HeaderSupplier getB() {
+ return headers("b1","true","b2","123","b3","null");
}
@Header(n="*",aev=true)
- public NameValuePairs getC() {
- return pairs("c1","v1","c2",123,"c3",null,"c4","");
+ public HeaderSupplier getC() {
+ return headers("c1","v1","c2",123,"c3",null,"c4","");
}
@Header(value="*",aev=true)
- public NameValuePairs getD() {
+ public HeaderSupplier getD() {
return null;
}
@Header(aev=true)
- public NameValuePair[] getE() {
- return
pairs("e1","v1","e2",123,"e3",null,"e4","").toArray(new NameValuePair[0]);
+ public org.apache.http.Header[] getE() {
+ return
headers("e1","v1","e2",123,"e3",null,"e4","").toArray();
}
@Header(aev=true)
- public BasicNameValuePair[] getF() {
- return
pairs("f1","v1","f2",123,"f3",null,"f4","").toArray(new BasicNameValuePair[0]);
+ public BasicHeader[] getF() {
+ return
headers("f1","v1","f2",123,"f3",null,"f4","").toArray(new BasicHeader[0]);
}
}
@Test
- public void k03_requestBean_nameValuePairs() throws Exception {
+ public void k03_requestBean_headers() throws Exception {
K3 x1 = remote(K.class,K3.class);
K3 x2 =
client(K.class).partSerializer(UonSerializer.class).build().getRemote(K3.class);
assertEquals("{a1:'v1',a2:'123',a4:'',b1:'true',b2:'123',b3:'null',c1:'v1',c2:'123',c4:'',e1:'v1',e2:'123',e4:'',f1:'v1',f2:'123',f4:''}",x1.getX1(new
K3a()));
@@ -889,8 +888,8 @@ public class Remote_HeaderAnnotation_Test {
// Helper methods.
//------------------------------------------------------------------------------------------------------------------
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static HeaderSupplier headers(Object...pairs) {
+ return HeaderSupplier.ofPairs(pairs);
}
private static org.apache.http.Header header(String key,Object val) {
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_PathAnnotation_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_PathAnnotation_Test.java
index f7e2304..f3757b6 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_PathAnnotation_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_PathAnnotation_Test.java
@@ -75,8 +75,8 @@ public class Remote_PathAnnotation_Test {
@RemoteMethod(path="a/{x}") String getX12(@Path
Map<String,Bean> b);
@RemoteMethod(path="a/{x}") String getX13(@Path(n="x",cf="uon")
Map<String,Bean> b);
@RemoteMethod(path="a/{x}") String getX14(@Path(f="uon")
Map<String,Bean> b);
- @RemoteMethod(path="a/{x}") String getX15(@Path("*")
NameValuePairs b);
- @RemoteMethod(path="a/{x}") String getX16(@Path NameValuePairs
b);
+ @RemoteMethod(path="a/{x}") String getX15(@Path("*")
NameValuePairSupplier b);
+ @RemoteMethod(path="a/{x}") String getX16(@Path
NameValuePairSupplier b);
@RemoteMethod(path="a/{x}") String
getX17(@Path(n="x",serializer=UonSerializer.class) Map<String,Bean> b);
@RemoteMethod(path="a/{x}") String getX18(@Path(n="*")
NameValuePair b);
@RemoteMethod(path="a/{x}") String getX19(@Path NameValuePair
b);
@@ -684,19 +684,19 @@ public class Remote_PathAnnotation_Test {
public static class K3a {
@Path(n="*",aev=true)
- public NameValuePairs getA() {
+ public NameValuePairSupplier getA() {
return pairs("a1","v1","a2",123,"a3",null,"a4","");
}
@Path("/*")
- public NameValuePairs getB() {
+ public NameValuePairSupplier getB() {
return pairs("b1","true","b2","123","b3","null");
}
@Path(n="*",aev=true)
- public NameValuePairs getC() {
+ public NameValuePairSupplier getC() {
return pairs("c1","v1","c2",123,"c3",null,"c4","");
}
@Path("/*")
- public NameValuePairs getD() {
+ public NameValuePairSupplier getD() {
return null;
}
@Path(aev=true)
@@ -772,8 +772,8 @@ public class Remote_PathAnnotation_Test {
// Helper methods.
//------------------------------------------------------------------------------------------------------------------
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static NameValuePairSupplier pairs(Object...pairs) {
+ return NameValuePairSupplier.ofPairs(pairs);
}
private static NameValuePair pair(String key, Object val) {
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_QueryAnnotation_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_QueryAnnotation_Test.java
index c802790..aac3729 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_QueryAnnotation_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/Remote_QueryAnnotation_Test.java
@@ -82,8 +82,8 @@ public class Remote_QueryAnnotation_Test {
@RemoteMethod(path="a") String getX16(@Query Reader b);
@RemoteMethod(path="a") String getX17(@Query("*") InputStream
b);
@RemoteMethod(path="a") String getX18(@Query InputStream b);
- @RemoteMethod(path="a") String getX19(@Query("*")
NameValuePairs b);
- @RemoteMethod(path="a") String getX20(@Query NameValuePairs b);
+ @RemoteMethod(path="a") String getX19(@Query("*")
NameValuePairSupplier b);
+ @RemoteMethod(path="a") String getX20(@Query
NameValuePairSupplier b);
@RemoteMethod(path="a") String getX21(@Query NameValuePair b);
@RemoteMethod(path="a") String getX22(@Query NameValuePair[] b);
@RemoteMethod(path="a") String getX23(@Query
BasicNameValuePair[] b);
@@ -795,19 +795,19 @@ public class Remote_QueryAnnotation_Test {
public static class K3a {
@Query(aev=true)
- public NameValuePairs getA() {
+ public NameValuePairSupplier getA() {
return pairs("a1","v1","a2",123,"a3",null,"a4","");
}
@Query("*")
- public NameValuePairs getB() {
+ public NameValuePairSupplier getB() {
return pairs("b1","true","b2","123","b3","null");
}
@Query(n="*",aev=true)
- public NameValuePairs getC() {
+ public NameValuePairSupplier getC() {
return pairs("c1","v1","c2",123,"c3",null,"c4","");
}
@Query("*")
- public NameValuePairs getD() {
+ public NameValuePairSupplier getD() {
return null;
}
@Query(aev=true)
@@ -935,8 +935,8 @@ public class Remote_QueryAnnotation_Test {
// Helper methods.
//------------------------------------------------------------------------------------------------------------------
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static NameValuePairSupplier pairs(Object...pairs) {
+ return NameValuePairSupplier.ofPairs(pairs);
}
private static NameValuePair pair(String key,Object val) {
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 c75762a..1badc57 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
@@ -172,7 +172,7 @@ public class RestClient_BasicCalls_Test {
pairs("f",1)
);
for (Object body : bodies) {
- client().contentType(body instanceof NameValuePairs ?
"application/x-www-form-urlencoded" :
"application/json").build().put("/bean",body).run().assertBody().is("{f:1}");
+ client().contentType(body instanceof
NameValuePairSupplier ? "application/x-www-form-urlencoded" :
"application/json").build().put("/bean",body).run().assertBody().is("{f:1}");
}
}
@@ -216,7 +216,7 @@ public class RestClient_BasicCalls_Test {
pairs("f",1)
);
for (Object body : bodies) {
- client().contentType(body instanceof NameValuePairs ?
"application/x-www-form-urlencoded" :
"application/json").build().post("/bean",body).run().assertBody().is("{f:1}");
+ client().contentType(body instanceof
NameValuePairSupplier ? "application/x-www-form-urlencoded" :
"application/json").build().post("/bean",body).run().assertBody().is("{f:1}");
}
}
@@ -362,7 +362,7 @@ public class RestClient_BasicCalls_Test {
);
RestClient x = client().build();
for (Object body : bodies) {
- x.patch("/bean",body).contentType(body instanceof
NameValuePairs ? "application/x-www-form-urlencoded" :
"application/json").run().assertBody().is("{f:1}");
+ x.patch("/bean",body).contentType(body instanceof
NameValuePairSupplier ? "application/x-www-form-urlencoded" :
"application/json").run().assertBody().is("{f:1}");
}
}
@@ -400,7 +400,7 @@ public class RestClient_BasicCalls_Test {
);
RestClient x = client().build();
for (Object body : bodies) {
-
x.request(HttpMethod.PATCH,"/bean",body).contentType(body instanceof
NameValuePairs ? "application/x-www-form-urlencoded" :
"application/json").run().assertBody().is("{f:1}");
+
x.request(HttpMethod.PATCH,"/bean",body).contentType(body instanceof
NameValuePairSupplier ? "application/x-www-form-urlencoded" :
"application/json").run().assertBody().is("{f:1}");
}
}
@@ -448,8 +448,8 @@ public class RestClient_BasicCalls_Test {
return BasicNameValuePair.of(name, val);
}
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static NameValuePairSupplier pairs(Object...pairs) {
+ return NameValuePairSupplier.ofPairs(pairs);
}
private static RestClientBuilder client() {
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 1fe43b9..3acccf0 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
@@ -203,8 +203,8 @@ public class RestClient_FormData_Test {
return BasicNameValuePair.of(name, val);
}
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static NameValuePairSupplier pairs(Object...pairs) {
+ return NameValuePairSupplier.ofPairs(pairs);
}
private static RestClientBuilder client() {
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 b99f4f0..ba7e5e5 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
@@ -96,11 +96,6 @@ public class RestClient_Headers_Test {
}
@Test
- public void a04_header_NameValuePair() throws Exception {
-
checkFooClient().header(pair("Foo","bar")).build().get("/headers").header(pair("Foo","baz")).run().assertBody().is("['bar','baz']");
- }
-
- @Test
public void a05_headerPairs_Objects() throws Exception {
checkFooClient().headerPairs("Foo","bar").build().get("/headers").headerPairs("Foo","baz").run().assertBody().is("['bar','baz']");
checkFooClient().headerPairs("Foo","bar","Foo","baz").header("Foo","qux").build().get("/headers").headerPairs("Foo","q1x","Foo","q2x").run().assertBody().is("['bar','baz','qux','q1x','q2x']");
@@ -114,8 +109,6 @@ public class RestClient_Headers_Test {
checkFooClient().headers(header("Foo","bar"),header("Baz","baz")).build().get("/headers").headers(header("Foo","baz"),header("Baz","quux")).run().assertBody().is("['bar','baz']");
checkFooClient().headers(OMap.of("Foo","bar")).build().get("/headers").headers(OMap.of("Foo","baz")).run().assertBody().is("['bar','baz']");
checkFooClient().headers(AMap.of("Foo","bar")).build().get("/headers").headers(AMap.of("Foo","baz")).run().assertBody().is("['bar','baz']");
-
checkFooClient().headers(pairs("Foo","bar")).build().get("/headers").headers(pairs("Foo","baz")).run().assertBody().is("['bar','baz']");
- checkFooClient().headers((Object)new
NameValuePair[]{pair("Foo","bar")}).build().get("/headers").headers(pairs("Foo","baz")).run().assertBody().is("['bar','baz']");
checkFooClient().headers(pair("Foo","bar")).build().get("/headers").headers(pair("Foo","baz")).run().assertBody().is("['bar','baz']");
checkFooClient().headers(SerializedNameValuePair.create().name("Foo").value("Bar").serializer(OpenApiSerializer.DEFAULT)).build().get("/headers").headers(SerializedNameValuePair.create().name("Foo").value("Baz").serializer(OpenApiSerializer.DEFAULT)).debug().run().assertBody().is("['Bar','Baz']");
checkFooClient().headers(SerializedHeader.create().name("Foo").value("Bar").serializer(OpenApiSerializer.DEFAULT)).build().get("/headers").headers(SerializedHeader.create().name("Foo").value("Baz").serializer(OpenApiSerializer.DEFAULT)).debug().run().assertBody().is("['Bar','Baz']");
@@ -337,10 +330,6 @@ public class RestClient_Headers_Test {
return BasicNameValuePair.of(name, val);
}
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
- }
-
private static RestClientBuilder client() {
return MockRestClient.create(A.class).simpleJson();
}
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Paths_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Paths_Test.java
index 728b7ac..db996c2 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Paths_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Paths_Test.java
@@ -94,8 +94,8 @@ public class RestClient_Paths_Test {
return BasicNameValuePair.of(name, val);
}
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static NameValuePairSupplier pairs(Object...pairs) {
+ return NameValuePairSupplier.ofPairs(pairs);
}
private static RestClientBuilder client() {
diff --git
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
index 66fdb65..2e9202a 100644
---
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
+++
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/rest/client2/RestClient_Query_Test.java
@@ -194,8 +194,8 @@ public class RestClient_Query_Test {
return BasicNameValuePair.of(name, val);
}
- private static NameValuePairs pairs(Object...pairs) {
- return NameValuePairs.of(pairs);
+ private static NameValuePairSupplier pairs(Object...pairs) {
+ return NameValuePairSupplier.ofPairs(pairs);
}
private static RestClientBuilder client() {
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
index 212f11f..1870f1d 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/NameValuePairs.java
@@ -39,7 +39,7 @@ import org.apache.juneau.urlencoding.*;
* restClient.doPost(url, params).run();
* </p>
*
- * @deprecated Use {@link org.apache.juneau.http.NameValuePairs}
+ * @deprecated Use {@link org.apache.juneau.http.NameValuePairSupplier}
*/
@Deprecated
public final class NameValuePairs extends LinkedList<NameValuePair> {
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
index 39f017b..3caf7eb 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClient.java
@@ -321,7 +321,6 @@ import org.apache.http.client.CookieStore;
* <li class='jm'>{@link RestRequest#header(String,Object)
header(String,Object)}
* <li class='jm'>{@link RestRequest#header(AddFlag,String,Object)
header(EnumSet>AddFlag>,String,Object)}
* <li class='jm'>{@link RestRequest#header(Header) header(Header)}
- * <li class='jm'>{@link RestRequest#header(NameValuePair)
header(NameValuePair)}
* <li class='jm'>{@link RestRequest#headers(Object...)
headers(Object...)}
* <li class='jm'>{@link RestRequest#headers(AddFlag,Object...)
headers(EnumSet>AddFlag>Object...)}
* <li class='jm'>{@link RestRequest#headerPairs(Object...)
headers(Object...)}
@@ -493,7 +492,7 @@ import org.apache.http.client.CookieStore;
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau serialization and
pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a URL-encoded
FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* </ul>
*
* <ul class='notes'>
@@ -1235,7 +1234,6 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* <li class='jm'>{@link
org.apache.juneau.rest.client2.RestRequest#header(String,Object)
header(String,Object)}
* <li class='jm'>{@link
org.apache.juneau.rest.client2.RestRequest#header(AddFlag,String,Object)
header(EnumSet>AddFlag>,String,Object)}
* <li class='jm'>{@link
org.apache.juneau.rest.client2.RestRequest#header(Header) header(Header)}
- * <li class='jm'>{@link
org.apache.juneau.rest.client2.RestRequest#header(NameValuePair)
header(NameValuePair)}
* <li class='jm'>{@link
org.apache.juneau.rest.client2.RestRequest#headers(Object...)
headers(Object...)}
* <li class='jm'>{@link
org.apache.juneau.rest.client2.RestRequest#headers(AddFlag,Object...)
headers(EnumSet>AddFlag>,Object...)}
* <li class='jm'>{@link
org.apache.juneau.rest.client2.RestRequest#headerPairs(Object...)
headerPairs(Object...)}
@@ -2201,7 +2199,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau
serialization and pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* <li class='jc'>
* {@link Supplier} - A supplier of anything on
this list.
* </ul>
@@ -2300,7 +2298,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau
serialization and pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* <li class='jc'>
* {@link Supplier} - A supplier of anything on
this list.
* </ul>
@@ -2454,7 +2452,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* <ul class='spaced-list'>
* <li class='jc'>{@link NameValuePair} - URL-encoded as a
single name-value pair.
* <li class='jc'>{@link NameValuePair} array -
URL-encoded as name value pairs.
- * <li class='jc'>{@link NameValuePairs} - URL-encoded as
name value pairs.
+ * <li class='jc'>{@link NameValuePairSupplier} -
URL-encoded as name value pairs.
* <li class='jc'>{@link Reader}/{@link InputStream}-
Streamed directly and <l>Content-Type</l> set to
<js>"application/x-www-form-urlencoded"</js>
* <li class='jc'>{@link ReaderResource}/{@link
ReaderResourceBuilder}/{@link StreamResource}/{@link
StreamResourceBuilder}/{@link HttpEntity}- Streamed directly and
<l>Content-Type</l> set to <js>"application/x-www-form-urlencoded"</js> if not
already specified on the entity.
* <li class='jc'>{@link Object} - Converted to a {@link
SerializedHttpEntity} using {@link UrlEncodingSerializer} to serialize.
@@ -2474,8 +2472,8 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
return req.body(new
UrlEncodedFormEntity(AList.of((NameValuePair)body)));
if (body instanceof NameValuePair[])
return req.body(new
UrlEncodedFormEntity(Arrays.asList((NameValuePair[])body)));
- if (body instanceof NameValuePairs)
- return req.body(new
UrlEncodedFormEntity((NameValuePairs)body));
+ if (body instanceof NameValuePairSupplier)
+ return req.body(new
UrlEncodedFormEntity((NameValuePairSupplier)body));
if (body instanceof HttpEntity) {
HttpEntity e = (HttpEntity)body;
if (e.getContentType() == null)
@@ -2552,7 +2550,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* @throws RestCallException If any authentication errors occurred.
*/
public RestRequest formPostPairs(Object url, Object...parameters)
throws RestCallException {
- return formPost(url, new NameValuePairs(parameters));
+ return formPost(url, NameValuePairSupplier.ofPairs(parameters));
}
/**
@@ -2586,7 +2584,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau
serialization and pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* <li class='jc'>
* {@link Supplier} - A supplier of anything on
this list.
* </ul>
@@ -2731,7 +2729,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
RestRequest req = request(method, uri,
isNotEmpty(content));
if (headers != null)
for (Map.Entry<String,Object> e :
OMap.ofJson(headers).entrySet())
-
req.header(BasicNameValuePair.of(e.getKey(), e.getValue()));
+ req.header(BasicHeader.of(e.getKey(),
e.getValue()));
if (isNotEmpty(content))
req.bodyString(content);
return req;
@@ -2772,7 +2770,7 @@ public class RestClient extends BeanContext implements
HttpClient, Closeable, Re
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau
serialization and pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* <li class='jc'>
* {@link Supplier} - A supplier of anything on
this list.
* </ul>
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
index 668c170..0c9aff8 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestClientBuilder.java
@@ -1304,11 +1304,8 @@ public class RestClientBuilder extends
BeanContextBuilder {
* <br>Can be any of the following types:
* <ul>
* <li>{@link Header} (including any subclasses such as
{@link Accept})
- * <li>{@link NameValuePair}
* <li>{@link Headerable}
- * <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
* <li>{@link HeaderSupplier}
* <li>{@link Map}
* <ul>
@@ -2058,7 +2055,6 @@ public class RestClientBuilder extends BeanContextBuilder
{
* <li>{@link NameValuePair}
* <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
* <li>{@link NameValuePairSupplier}
* <li>{@link Map}
* <ul>
@@ -2346,7 +2342,6 @@ public class RestClientBuilder extends BeanContextBuilder
{
* <li>{@link NameValuePair}
* <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
* <li>{@link NameValuePairSupplier}
* <li>{@link Map}
* <ul>
diff --git
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
index a9d31a3..b05e1f8 100644
---
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
+++
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client2/RestRequest.java
@@ -81,7 +81,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
private HttpPartSerializerSession partSerializer;
private HttpPartSchema requestBodySchema;
private URIBuilder uriBuilder;
- private NameValuePairs formData;
+ private List<NameValuePair> formData;
private Predicate<Integer> errorCodes;
private HttpHost target;
private HttpContext context;
@@ -939,7 +939,6 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li>{@link NameValuePair}
* <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
* <li>{@link NameValuePairSupplier}
* <li>{@link Map}
* <ul>
@@ -1011,13 +1010,16 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
RestRequest pathArg(String name, Object value, HttpPartSchema schema,
HttpPartSerializerSession serializer) throws RestCallException {
- boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof NameValuePairs || isNameValuePairArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof NameValuePairSupplier || isNameValuePairArray(value);
if (! isMulti)
return innerPath(serializedNameValuePair(name, value,
PATH, serializer, schema, null));
if (BasicNameValuePair.canCast(value)) {
innerPath(BasicNameValuePair.cast(value));
+ } else if (value instanceof NameValuePairSupplier) {
+ for (Object o : (NameValuePairSupplier)value)
+ innerPath(BasicNameValuePair.cast(o));
} else if (value instanceof Collection) {
for (Object o : (Collection<?>)value)
innerPath(BasicNameValuePair.cast(o));
@@ -1228,7 +1230,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li>{@link NameValuePair}
* <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
+ * <li>{@link NameValuePairSupplier}
* <li>{@link Map}
* <ul>
* <li>Values can be any POJO.
@@ -1273,7 +1275,6 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li>{@link NameValuePair}
* <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
* <li>{@link NameValuePairSupplier}
* <li>{@link Map}
* <ul>
@@ -1363,7 +1364,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li class='jc'>
* {@link InputStream} - Raw contents of {@code
InputStream} will be serialized to remote resource.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded query.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded query.
* </ul>
* @return This object (for method chaining).
* @throws RestCallException Invalid input.
@@ -1386,7 +1387,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
RestRequest queryArg(EnumSet<AddFlag> flags, String name, Object value,
HttpPartSchema schema, HttpPartSerializerSession serializer) throws
RestCallException {
flags = AddFlag.orDefault(flags);
- boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof NameValuePairs || isNameValuePairArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof NameValuePairSupplier || isNameValuePairArray(value);
if (! isMulti)
return innerQuery(flags,
AList.of(serializedNameValuePair(name, value, QUERY, serializer, schema,
flags)));
@@ -1395,6 +1396,9 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
if (BasicNameValuePair.canCast(value)) {
l.add(BasicNameValuePair.cast(value));
+ } else if (value instanceof NameValuePairSupplier) {
+ for (Object o : (NameValuePairSupplier)value)
+ l.add(BasicNameValuePair.cast(o));
} else if (value instanceof Collection) {
for (Object o : (Collection<?>)value)
l.add(BasicNameValuePair.cast(o));
@@ -1613,7 +1617,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li>{@link NameValuePair}
* <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
+ * <li>{@link NameValuePairSupplier}
* <li>{@link Map}
* <ul>
* <li>Values can be any POJO.
@@ -1658,7 +1662,6 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li>{@link NameValuePair}
* <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
* <li>{@link NameValuePairSupplier}
* <li>{@link Map}
* <ul>
@@ -1769,7 +1772,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau
serialization and pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* </ul>
* @return This object (for method chaining).
* @throws RestCallException Invalid input.
@@ -1782,7 +1785,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
RestRequest formDataArg(EnumSet<AddFlag> flags, String name, Object
value, HttpPartSchema schema, HttpPartSerializerSession serializer) throws
RestCallException {
flags = AddFlag.orDefault(flags);
- boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof NameValuePairs || isNameValuePairArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof NameValuePairSupplier || isNameValuePairArray(value);
if (! isMulti)
return innerFormData(flags,
AList.of(serializedNameValuePair(name, value, FORMDATA, serializer, schema,
flags)));
@@ -1791,6 +1794,9 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
if (BasicNameValuePair.canCast(value)) {
l.add(BasicNameValuePair.cast(value));
+ } else if (value instanceof NameValuePairSupplier) {
+ for (Object o : (NameValuePairSupplier)value)
+ l.add(BasicNameValuePair.cast(o));
} else if (value instanceof Collection) {
for (Object o : (Collection<?>)value)
l.add(BasicNameValuePair.cast(o));
@@ -1817,7 +1823,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
if (flags.contains(SKIP_IF_EMPTY))
params.removeIf(x -> isEmpty(x.getValue()));
if (formData == null)
- formData = new NameValuePairs();
+ formData = new ArrayList<>();
if (flags.contains(REPLACE)) {
for (NameValuePair p : params)
for (Iterator<NameValuePair> i =
formData.iterator(); i.hasNext();)
@@ -1858,7 +1864,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau
serialization and pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* <li>
* A {@link Supplier} of anything on this list.
* </ul>
@@ -1925,7 +1931,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <li class='jc'>
* {@link HttpEntity} - Bypass Juneau
serialization and pass HttpEntity directly to HttpClient.
* <li class='jc'>
- * {@link NameValuePairs} - Converted to a
URL-encoded FORM post.
+ * {@link NameValuePairSupplier} - Converted to a
URL-encoded FORM post.
* <li>
* A {@link Supplier} of anything on this list.
* </ul>
@@ -2101,26 +2107,6 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
}
/**
- * Appends a header on the request.
- *
- * <h5 class='section'>Example:</h5>
- * <jc>// Adds header "Foo: bar".</jc>
- * <p class='bcode w800'>
- * client
- * .get(<jsf>URL</jsf>)
- *
.header(BasicNameValuePair.<jsm>of</jsm>(<js>"Foo"</js>, <js>"bar"</js>))
- * .run();
- * </p>
- *
- * @param header The header to set.
- * @return This object (for method chaining).
- * @throws RestCallException Invalid input.
- */
- public RestRequest header(NameValuePair header) throws
RestCallException {
- return headers(header);
- }
-
- /**
* Appends multiple headers to the request.
*
* <h5 class='section'>Example:</h5>
@@ -2140,11 +2126,9 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <br>Can be any of the following types:
* <ul>
* <li>{@link Header} (including any subclasses such as
{@link Accept})
- * <li>{@link NameValuePair}
* <li>{@link Headerable}
- * <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
+ * <li>{@link HeaderSupplier}
* <li>{@link Map}
* <ul>
* <li>Values can be any POJO.
@@ -2187,11 +2171,8 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
* <br>Can be any of the following types:
* <ul>
* <li>{@link Header} (including any subclasses such as
{@link Accept})
- * <li>{@link NameValuePair}
* <li>{@link Headerable}
- * <li>{@link NameValuePairable}
* <li>{@link java.util.Map.Entry}
- * <li>{@link NameValuePairs}
* <li>{@link HeaderSupplier}
* <li>{@link Map}
* <ul>
@@ -2262,7 +2243,7 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
RestRequest headerArg(EnumSet<AddFlag> flags, String name, Object
value, HttpPartSchema schema, HttpPartSerializerSession serializer) throws
RestCallException {
flags = AddFlag.orDefault(flags);
- boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof NameValuePairs || isNameValuePairArray(value);
+ boolean isMulti = isEmpty(name) || "*".equals(name) || value
instanceof HeaderSupplier || isHeaderArray(value);
if (! isMulti)
return innerHeaders(flags,
AList.of(serializedHeader(name, value, serializer, schema, flags)));
@@ -2271,6 +2252,9 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
if (BasicHeader.canCast(value)) {
l.add(BasicHeader.cast(value));
+ } else if (value instanceof HeaderSupplier) {
+ for (Object o : (HeaderSupplier)value)
+ l.add(BasicHeader.cast(o));
} else if (value instanceof Collection) {
for (Object o : (Collection<?>)value)
l.add(BasicHeader.cast(o));
@@ -2844,8 +2828,8 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
HttpEntity entity = null;
if (formData != null)
entity = new
UrlEncodedFormEntity(formData);
- else if (input2 instanceof NameValuePairs)
- entity = new
UrlEncodedFormEntity((NameValuePairs)input2);
+ else if (input2 instanceof
NameValuePairSupplier)
+ entity = new
UrlEncodedFormEntity((NameValuePairSupplier)input2);
else if (input2 instanceof HttpEntity)
entity = (HttpEntity)input2;
else if (input2 instanceof Reader)
@@ -3415,6 +3399,14 @@ public class RestRequest extends BeanSession implements
HttpUriRequest, Configur
return false;
}
+ private static boolean isHeaderArray(Object o) {
+ if (o == null || ! o.getClass().isArray())
+ return false;
+ if
(Header.class.isAssignableFrom(o.getClass().getComponentType()))
+ return true;
+ return false;
+ }
+
//-----------------------------------------------------------------------------------------------------------------
// Other methods
//-----------------------------------------------------------------------------------------------------------------