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 1b2ab81  Remove redundancy in HttpPart annotations.
1b2ab81 is described below

commit 1b2ab8195cbc8515487a610945420974ba17d152
Author: JamesBognar <[email protected]>
AuthorDate: Fri Nov 26 15:38:21 2021 -0500

    Remove redundancy in HttpPart annotations.
---
 .../org/apache/juneau/http/annotation/FormData.java   | 17 -----------------
 .../juneau/http/annotation/FormDataAnnotation.java    | 19 -------------------
 .../org/apache/juneau/http/annotation/Header.java     | 17 -----------------
 .../juneau/http/annotation/HeaderAnnotation.java      | 19 -------------------
 .../java/org/apache/juneau/http/annotation/Query.java | 17 -----------------
 .../juneau/http/annotation/QueryAnnotation.java       | 19 -------------------
 .../java/org/apache/juneau/rest/args/FormDataArg.java | 15 ++++-----------
 .../java/org/apache/juneau/rest/args/HeaderArg.java   | 14 ++------------
 .../java/org/apache/juneau/rest/args/QueryArg.java    | 15 ++++-----------
 .../juneau/http/annotation/AnnotationUtils_Test.java  |  3 ---
 .../http/annotation/FormDataAnnotation_Test.java      |  5 -----
 .../juneau/http/annotation/HeaderAnnotation_Test.java |  5 -----
 .../juneau/http/annotation/QueryAnnotation_Test.java  |  5 -----
 .../apache/juneau/http/header/AcceptCharset_Test.java |  2 +-
 .../juneau/http/header/AcceptEncoding_Test.java       |  2 +-
 .../juneau/http/header/AcceptLanguage_Test.java       |  2 +-
 .../apache/juneau/http/header/AcceptRanges_Test.java  |  2 +-
 .../org/apache/juneau/http/header/Accept_Test.java    |  2 +-
 .../java/org/apache/juneau/http/header/Age_Test.java  |  2 +-
 .../org/apache/juneau/http/header/Allow_Test.java     |  2 +-
 .../apache/juneau/http/header/Authorization_Test.java |  2 +-
 .../juneau/http/header/BasicBooleanHeader_Test.java   |  2 +-
 .../juneau/http/header/BasicCsvArrayHeader_Test.java  |  2 +-
 .../juneau/http/header/BasicDateHeader_Test.java      |  2 +-
 .../http/header/BasicEntityTagArrayHeader_Test.java   |  2 +-
 .../juneau/http/header/BasicEntityTagHeader_Test.java |  2 +-
 .../juneau/http/header/BasicIntegerHeader_Test.java   |  2 +-
 .../juneau/http/header/BasicLongHeader_Test.java      |  2 +-
 .../http/header/BasicMediaRangeArrayHeader_Test.java  |  2 +-
 .../juneau/http/header/BasicMediaTypeHeader_Test.java |  2 +-
 .../juneau/http/header/BasicStringHeader_Test.java    |  2 +-
 .../http/header/BasicStringRangeArrayHeader_Test.java |  2 +-
 .../juneau/http/header/BasicUriHeader_Test.java       |  2 +-
 .../apache/juneau/http/header/CacheControl_Test.java  |  2 +-
 .../apache/juneau/http/header/ClientVersion_Test.java |  2 +-
 .../apache/juneau/http/header/Connection_Test.java    |  2 +-
 .../juneau/http/header/ContentDisposition_Test.java   |  2 +-
 .../juneau/http/header/ContentEncoding_Test.java      |  2 +-
 .../juneau/http/header/ContentLanguage_Test.java      |  2 +-
 .../apache/juneau/http/header/ContentLength_Test.java |  2 +-
 .../juneau/http/header/ContentLocation_Test.java      |  2 +-
 .../apache/juneau/http/header/ContentRange_Test.java  |  2 +-
 .../apache/juneau/http/header/ContentType_Test.java   |  2 +-
 .../java/org/apache/juneau/http/header/Date_Test.java |  2 +-
 .../java/org/apache/juneau/http/header/ETag_Test.java |  2 +-
 .../org/apache/juneau/http/header/Expect_Test.java    |  2 +-
 .../org/apache/juneau/http/header/Expires_Test.java   |  2 +-
 .../org/apache/juneau/http/header/Forwarded_Test.java |  2 +-
 .../java/org/apache/juneau/http/header/From_Test.java |  2 +-
 .../java/org/apache/juneau/http/header/Host_Test.java |  2 +-
 .../org/apache/juneau/http/header/IfMatch_Test.java   |  2 +-
 .../juneau/http/header/IfModifiedSince_Test.java      |  2 +-
 .../apache/juneau/http/header/IfNoneMatch_Test.java   |  2 +-
 .../org/apache/juneau/http/header/IfRange_Test.java   |  2 +-
 .../juneau/http/header/IfUnmodifiedSince_Test.java    |  2 +-
 .../apache/juneau/http/header/LastModified_Test.java  |  2 +-
 .../org/apache/juneau/http/header/Location_Test.java  |  2 +-
 .../apache/juneau/http/header/MaxForwards_Test.java   |  2 +-
 .../org/apache/juneau/http/header/NoTrace_Test.java   |  2 +-
 .../org/apache/juneau/http/header/Origin_Test.java    |  2 +-
 .../org/apache/juneau/http/header/Pragma_Test.java    |  2 +-
 .../juneau/http/header/ProxyAuthenticate_Test.java    |  2 +-
 .../juneau/http/header/ProxyAuthorization_Test.java   |  2 +-
 .../org/apache/juneau/http/header/Range_Test.java     |  2 +-
 .../org/apache/juneau/http/header/Referer_Test.java   |  2 +-
 .../apache/juneau/http/header/RetryAfter_Test.java    |  2 +-
 .../org/apache/juneau/http/header/Server_Test.java    |  2 +-
 .../java/org/apache/juneau/http/header/TE_Test.java   |  2 +-
 .../org/apache/juneau/http/header/Trailer_Test.java   |  2 +-
 .../juneau/http/header/TransferEncoding_Test.java     |  2 +-
 .../org/apache/juneau/http/header/Upgrade_Test.java   |  2 +-
 .../org/apache/juneau/http/header/UserAgent_Test.java |  2 +-
 .../java/org/apache/juneau/http/header/Vary_Test.java |  2 +-
 .../java/org/apache/juneau/http/header/Via_Test.java  |  2 +-
 .../org/apache/juneau/http/header/Warning_Test.java   |  2 +-
 .../juneau/http/header/WwwAuthenticate_Test.java      |  2 +-
 .../client/RestClient_Config_RestClient_Test.java     |  2 +-
 77 files changed, 74 insertions(+), 224 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
index a216d68..df4274e 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormData.java
@@ -119,23 +119,6 @@ import org.apache.juneau.oapi.*;
 public @interface FormData {
 
        /**
-        * Denotes a multi-part parameter (e.g. multiple entries with the same 
name).
-        *
-        * <h5 class='figure'>Example</h5>
-        *      <jk>public void</jk> doPost(
-        *              <ja>@FormData</ja>(name=<js>"beans"</js>, 
multi=<jk>true</jk>) MyBean[] <jv>beans</jv>
-        *      ) {
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Meant to be used on multi-part parameters (e.g. 
<js>"key=1&amp;key=2&amp;key=3"</js> instead of <js>"key=@(1,2,3)"</js>)
-        *      <li>
-        *              The data type must be a collection or array type.
-        * </ul>
-        */
-       boolean multi() default false;
-
-       /**
         * FORM parameter name.
         *
         * <p>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
index 9209152..e2f81a7 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/FormDataAnnotation.java
@@ -108,7 +108,6 @@ public class FormDataAnnotation {
         */
        public static class Builder extends TargetedAnnotationTMFBuilder {
 
-               boolean multi;
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Null.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Null.class;
                Schema schema = SchemaAnnotation.DEFAULT;
@@ -131,17 +130,6 @@ public class FormDataAnnotation {
                }
 
                /**
-                * Sets the {@link FormData#multi} property on this annotation.
-                *
-                * @param value The new value for this property.
-                * @return This object.
-                */
-               public Builder multi(boolean value) {
-                       this.multi = value;
-                       return this;
-               }
-
-               /**
                 * Sets the {@link FormData#name} property on this annotation.
                 *
                 * @param value The new value for this property.
@@ -237,7 +225,6 @@ public class FormDataAnnotation {
 
        private static class Impl extends TargetedAnnotationTImpl implements 
FormData {
 
-               private final boolean multi;
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
                private final String name, value;
@@ -245,7 +232,6 @@ public class FormDataAnnotation {
 
                Impl(Builder b) {
                        super(b);
-                       this.multi = b.multi;
                        this.name = b.name;
                        this.parser = b.parser;
                        this.schema = b.schema;
@@ -255,11 +241,6 @@ public class FormDataAnnotation {
                }
 
                @Override /* FormData */
-               public boolean multi() {
-                       return multi;
-               }
-
-               @Override /* FormData */
                public String name() {
                        return name;
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
index 1019886..ef25f64 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Header.java
@@ -85,23 +85,6 @@ import org.apache.juneau.oapi.*;
 public @interface Header {
 
        /**
-        * Denotes a multi-part parameter (e.g. multiple entries with the same 
name).
-        *
-        * <h5 class='figure'>Example</h5>
-        *      <jk>public void</jk> doPost(
-        *              <ja>@Header</ja>(name=<js>"Beans"</js>, 
multi=<jk>true</jk>) MyBean[] <jv>beans</jv>
-        *      ) {
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Meant to be used on multi-part parameters (e.g. 
<js>"Header: h1"</js>, <js>"Header: h2"</js> instead of <js>"Header: 
@(h1,h2)"</js>)
-        *      <li>
-        *              The data type must be a collection or array type.
-        * </ul>
-        */
-       boolean multi() default false;
-
-       /**
         * HTTP header name.
         * <p>
         * A blank value (the default) indicates to reuse the bean property 
name when used on a request bean property.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
index 03867df..3c75761 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/HeaderAnnotation.java
@@ -108,7 +108,6 @@ public class HeaderAnnotation {
         */
        public static class Builder extends TargetedAnnotationTMFBuilder {
 
-               boolean multi;
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Null.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Null.class;
                Schema schema = SchemaAnnotation.DEFAULT;
@@ -131,17 +130,6 @@ public class HeaderAnnotation {
                }
 
                /**
-                * Sets the {@link Header#multi} property on this annotation.
-                *
-                * @param value The new value for this property.
-                * @return This object.
-                */
-               public Builder multi(boolean value) {
-                       this.multi = value;
-                       return this;
-               }
-
-               /**
                 * Sets the {@link Header#name} property on this annotation.
                 *
                 * @param value The new value for this property.
@@ -237,7 +225,6 @@ public class HeaderAnnotation {
 
        private static class Impl extends TargetedAnnotationTImpl implements 
Header {
 
-               private final boolean multi;
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
                private final String name, value;
@@ -245,7 +232,6 @@ public class HeaderAnnotation {
 
                Impl(Builder b) {
                        super(b);
-                       this.multi = b.multi;
                        this.name = b.name;
                        this.parser = b.parser;
                        this.schema = b.schema;
@@ -255,11 +241,6 @@ public class HeaderAnnotation {
                }
 
                @Override /* Header */
-               public boolean multi() {
-                       return multi;
-               }
-
-               @Override /* Header */
                public String name() {
                        return name;
                }
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
index ed52489..58933cc 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/Query.java
@@ -93,23 +93,6 @@ import org.apache.juneau.oapi.*;
 public @interface Query {
 
        /**
-        * Denotes a multi-part parameter (e.g. multiple entries with the same 
name).
-        *
-        * <h5 class='figure'>Example</h5>
-        *      <jk>public void</jk> doPost(
-        *              <ja>@Query</ja>(name=<js>"beans"</js>, 
multi=<jk>true</jk>) MyBean[] beans
-        *      ) {
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Meant to be used on multi-part parameters (e.g. 
<js>"key=1&amp;key=2&amp;key=3"</js> instead of <js>"key=@(1,2,3)"</js>)
-        *      <li>
-        *              The data type must be a collection or array type.
-        * </ul>
-        */
-       boolean multi() default false;
-
-       /**
         * URL query parameter name.
         *
         * Required. The name of the parameter. Parameter names are case 
sensitive.
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
index c21802d..6965cd3 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/annotation/QueryAnnotation.java
@@ -108,7 +108,6 @@ public class QueryAnnotation {
         */
        public static class Builder extends TargetedAnnotationTMFBuilder {
 
-               boolean multi;
                Class<? extends HttpPartParser> parser = 
HttpPartParser.Null.class;
                Class<? extends HttpPartSerializer> serializer = 
HttpPartSerializer.Null.class;
                Schema schema = SchemaAnnotation.DEFAULT;
@@ -131,17 +130,6 @@ public class QueryAnnotation {
                }
 
                /**
-                * Sets the {@link Query#multi} property on this annotation.
-                *
-                * @param value The new value for this property.
-                * @return This object.
-                */
-               public Builder multi(boolean value) {
-                       this.multi = value;
-                       return this;
-               }
-
-               /**
                 * Sets the {@link Query#name} property on this annotation.
                 *
                 * @param value The new value for this property.
@@ -237,7 +225,6 @@ public class QueryAnnotation {
 
        private static class Impl extends TargetedAnnotationTImpl implements 
Query {
 
-               private final boolean multi;
                private final Class<? extends HttpPartParser> parser;
                private final Class<? extends HttpPartSerializer> serializer;
                private final String name, value;
@@ -245,7 +232,6 @@ public class QueryAnnotation {
 
                Impl(Builder b) {
                        super(b);
-                       this.multi = b.multi;
                        this.name = b.name;
                        this.parser = b.parser;
                        this.schema = b.schema;
@@ -255,11 +241,6 @@ public class QueryAnnotation {
                }
 
                @Override /* Query */
-               public boolean multi() {
-                       return multi;
-               }
-
-               @Override /* Query */
                public String name() {
                        return name;
                }
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/FormDataArg.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/FormDataArg.java
index f01b173..484bf2e 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/FormDataArg.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/FormDataArg.java
@@ -42,6 +42,9 @@ import org.apache.juneau.rest.annotation.*;
  *
  * <p>
  * {@link HttpPartSchema schema} is derived from the {@link FormData} 
annotation.
+ *
+ * <p>
+ * If the {@link Schema#collectionFormat()} value is {@link 
HttpPartCollectionFormat#MULTI}, then the data type can be a {@link Collection} 
or array.
  */
 public class FormDataArg implements RestOpArg {
        private final boolean multi;
@@ -76,22 +79,12 @@ public class FormDataArg implements RestOpArg {
                this.type = pi.getParameterType();
                this.schema = HttpPartSchema.create(FormData.class, pi);
                this.partParser = ofNullable(schema.getParser()).map(x -> 
HttpPartParser.creator().type(x).apply(annotations).create()).orElse(null);
-               this.multi = getMulti(pi) || schema.getCollectionFormat() == 
HttpPartCollectionFormat.MULTI;
+               this.multi = schema.getCollectionFormat() == 
HttpPartCollectionFormat.MULTI;
 
                if (multi && ! type.isCollectionOrArray())
                        throw new ArgException(pi, "Use of multipart flag on 
@FormData parameter that is not an array or Collection");
        }
 
-       private boolean getMulti(ParamInfo paramInfo) {
-               for (FormData f : paramInfo.getAnnotations(FormData.class))
-                       if (f.multi())
-                               return true;
-               for (FormData f : 
paramInfo.getParameterType().getAnnotations(FormData.class))
-                       if (f.multi())
-                               return true;
-               return false;
-       }
-
        @SuppressWarnings({ "rawtypes", "unchecked" })
        @Override /* RestOpArg */
        public Object resolve(RestOpSession opSession) throws Exception {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java
index 8b2c875..7df9293 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/HeaderArg.java
@@ -85,7 +85,7 @@ import org.apache.juneau.rest.annotation.*;
  * {@link HttpPartSchema schema} is derived from the {@link Header} annotation.
  *
  * <p>
- * If the {@link Header#multi()} flag is set, then the data type can be a 
{@link Collection} or array.
+ * If the {@link Schema#collectionFormat()} value is {@link 
HttpPartCollectionFormat#MULTI}, then the data type can be a {@link Collection} 
or array.
  */
 public class HeaderArg implements RestOpArg {
        private final HttpPartParser partParser;
@@ -120,22 +120,12 @@ public class HeaderArg implements RestOpArg {
                this.type = pi.getParameterType();
                this.schema = HttpPartSchema.create(Header.class, pi);
                this.partParser = ofNullable(schema.getParser()).map(x -> 
HttpPartParser.creator().type(x).apply(annotations).create()).orElse(null);
-               this.multi = getMulti(pi);
+               this.multi = schema.getCollectionFormat() == 
HttpPartCollectionFormat.MULTI;
 
                if (multi && ! type.isCollectionOrArray())
                        throw new ArgException(pi, "Use of multipart flag on 
@Header parameter that is not an array or Collection");
        }
 
-       private boolean getMulti(ParamInfo paramInfo) {
-               for (Header h : paramInfo.getAnnotations(Header.class))
-                       if (h.multi())
-                               return true;
-               for (Header h : 
paramInfo.getParameterType().getAnnotations(Header.class))
-                       if (h.multi())
-                               return true;
-               return false;
-       }
-
        @SuppressWarnings({ "rawtypes", "unchecked" })
        @Override /* RestOpArg */
        public Object resolve(RestOpSession opSession) throws Exception {
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/QueryArg.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/QueryArg.java
index f35f3a3..dea1166 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/QueryArg.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/args/QueryArg.java
@@ -41,6 +41,9 @@ import org.apache.juneau.rest.annotation.*;
  *
  * <p>
  * {@link HttpPartSchema schema} is derived from the {@link Query} annotation.
+ *
+ * <p>
+ * If the {@link Schema#collectionFormat()} value is {@link 
HttpPartCollectionFormat#MULTI}, then the data type can be a {@link Collection} 
or array.
  */
 public class QueryArg implements RestOpArg {
        private final boolean multi;
@@ -75,22 +78,12 @@ public class QueryArg implements RestOpArg {
                this.type = pi.getParameterType();
                this.schema = HttpPartSchema.create(Query.class, pi);
                this.partParser = ofNullable(schema.getParser()).map(x -> 
HttpPartParser.creator().type(x).apply(annotations).create()).orElse(null);
-               this.multi = getMulti(pi) || schema.getCollectionFormat() == 
HttpPartCollectionFormat.MULTI;
+               this.multi = schema.getCollectionFormat() == 
HttpPartCollectionFormat.MULTI;
 
                if (multi && ! type.isCollectionOrArray())
                        throw new ArgException(pi, "Use of multipart flag on 
@Query parameter that is not an array or Collection");
        }
 
-       private boolean getMulti(ParamInfo paramInfo) {
-               for (Query q : paramInfo.getAnnotations(Query.class))
-                       if (q.multi())
-                               return true;
-               for (Query q : 
paramInfo.getParameterType().getAnnotations(Query.class))
-                       if (q.multi())
-                               return true;
-               return false;
-       }
-
        @SuppressWarnings({ "rawtypes", "unchecked" })
        @Override /* RestOpArg */
        public Object resolve(RestOpSession opSession) throws Exception {
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java
index 1cff11f..93b050f 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/AnnotationUtils_Test.java
@@ -92,7 +92,6 @@ public class AnnotationUtils_Test {
                assertTrue(FormDataAnnotation.empty((FormData)null));
                assertTrue(FormDataAnnotation.empty(formData().build()));
 
-               
assertFalse(FormDataAnnotation.empty(formData().multi(true).build()));
                
assertFalse(FormDataAnnotation.empty(formData().name("foo").build()));
                
assertFalse(FormDataAnnotation.empty(formData().parser(OpenApiParser.class).build()));
                
assertFalse(FormDataAnnotation.empty(formData().serializer(OpenApiSerializer.class).build()));
@@ -119,7 +118,6 @@ public class AnnotationUtils_Test {
                assertTrue(QueryAnnotation.empty((Query)null));
                assertTrue(QueryAnnotation.empty(query().build()));
 
-               assertFalse(QueryAnnotation.empty(query().multi(true).build()));
                assertFalse(QueryAnnotation.empty(query().name("foo").build()));
                
assertFalse(QueryAnnotation.empty(query().parser(OpenApiParser.class).build()));
                
assertFalse(QueryAnnotation.empty(query().serializer(OpenApiSerializer.class).build()));
@@ -146,7 +144,6 @@ public class AnnotationUtils_Test {
                assertTrue(HeaderAnnotation.empty((Header)null));
                assertTrue(HeaderAnnotation.empty(header().build()));
 
-               
assertFalse(HeaderAnnotation.empty(header().multi(true).build()));
                
assertFalse(HeaderAnnotation.empty(header().name("foo").build()));
                
assertFalse(HeaderAnnotation.empty(header().parser(OpenApiParser.class).build()));
                
assertFalse(HeaderAnnotation.empty(header().serializer(OpenApiSerializer.class).build()));
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java
index 58b3b34..239cd33 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/FormDataAnnotation_Test.java
@@ -32,7 +32,6 @@ public class FormDataAnnotation_Test {
        
//------------------------------------------------------------------------------------------------------------------
 
        FormData a1 = FormDataAnnotation.create()
-               .multi(true)
                .name("name")
                .on("on")
                .onClass(X1.class)
@@ -42,7 +41,6 @@ public class FormDataAnnotation_Test {
                .build();
 
        FormData a2 = FormDataAnnotation.create()
-               .multi(true)
                .name("name")
                .on("on")
                .onClass(X1.class)
@@ -55,7 +53,6 @@ public class FormDataAnnotation_Test {
        public void a01_basic() {
                assertObject(a1).asJson().matches(""
                        + "{"
-                               + "multi:true,"
                                + "name:'name',"
                                + "on:['on'],"
                                + 
"onClass:['org.apache.juneau.http.annotation.FormDataAnnotation_Test$X1'],"
@@ -115,7 +112,6 @@ public class FormDataAnnotation_Test {
        
//------------------------------------------------------------------------------------------------------------------
 
        @FormData(
-               multi=true,
                name="name",
                on="on",
                onClass=X1.class,
@@ -127,7 +123,6 @@ public class FormDataAnnotation_Test {
        FormData d1 = D1.class.getAnnotationsByType(FormData.class)[0];
 
        @FormData(
-               multi=true,
                name="name",
                on="on",
                onClass=X1.class,
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java
index 4ec5b15..5fdf82d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/HeaderAnnotation_Test.java
@@ -32,7 +32,6 @@ public class HeaderAnnotation_Test {
        
//------------------------------------------------------------------------------------------------------------------
 
        Header a1 = HeaderAnnotation.create()
-               .multi(true)
                .name("name")
                .on("on")
                .onClass(X1.class)
@@ -42,7 +41,6 @@ public class HeaderAnnotation_Test {
                .build();
 
        Header a2 = HeaderAnnotation.create()
-               .multi(true)
                .name("name")
                .on("on")
                .onClass(X1.class)
@@ -55,7 +53,6 @@ public class HeaderAnnotation_Test {
        public void a01_basic() {
                assertObject(a1).asJson().matches(""
                        + "{"
-                               + "multi:true,"
                                + "name:'name',"
                                + "on:['on'],"
                                + "onClass:['"+CNAME+"$X1'],"
@@ -115,7 +112,6 @@ public class HeaderAnnotation_Test {
        
//------------------------------------------------------------------------------------------------------------------
 
        @Header(
-               multi=true,
                name="name",
                on="on",
                onClass=X1.class,
@@ -127,7 +123,6 @@ public class HeaderAnnotation_Test {
        Header d1 = D1.class.getAnnotationsByType(Header.class)[0];
 
        @Header(
-               multi=true,
                name="name",
                on="on",
                onClass=X1.class,
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java
index c2fc24d..c287266 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/annotation/QueryAnnotation_Test.java
@@ -32,7 +32,6 @@ public class QueryAnnotation_Test {
        
//------------------------------------------------------------------------------------------------------------------
 
        Query a1 = QueryAnnotation.create()
-               .multi(true)
                .name("name")
                .on("on")
                .onClass(X1.class)
@@ -42,7 +41,6 @@ public class QueryAnnotation_Test {
                .build();
 
        Query a2 = QueryAnnotation.create()
-               .multi(true)
                .name("name")
                .on("on")
                .onClass(X1.class)
@@ -55,7 +53,6 @@ public class QueryAnnotation_Test {
        public void a01_basic() {
                assertObject(a1).asJson().matches(""
                        + "{"
-                               + "multi:true,"
                                + "name:'name',"
                                + "on:['on'],"
                                + "onClass:['"+CNAME+"$X1'],"
@@ -115,7 +112,6 @@ public class QueryAnnotation_Test {
        
//------------------------------------------------------------------------------------------------------------------
 
        @Query(
-               multi=true,
                name="name",
                on="on",
                onClass=X1.class,
@@ -127,7 +123,6 @@ public class QueryAnnotation_Test {
        Query d1 = D1.class.getAnnotationsByType(Query.class)[0];
 
        @Query(
-               multi=true,
                name="name",
                on="on",
                onClass=X1.class,
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
index 502e41c..544eb15 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptCharset_Test.java
@@ -36,7 +36,7 @@ public class AcceptCharset_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
index f7a22d8..e8c3ae3 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptEncoding_Test.java
@@ -36,7 +36,7 @@ public class AcceptEncoding_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
index aa7f56c..53d98f7 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptLanguage_Test.java
@@ -36,7 +36,7 @@ public class AcceptLanguage_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
index 368281b..6abd356 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/AcceptRanges_Test.java
@@ -35,7 +35,7 @@ public class AcceptRanges_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java
index b5a152e..da946d7 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Accept_Test.java
@@ -41,7 +41,7 @@ public class Accept_Test {
        @Rest
        public static class A {
                @RestGet
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java
index 0f8f0db..cb863c0 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Age_Test.java
@@ -36,7 +36,7 @@ public class Age_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java
index 94c7187..14e7b90 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Allow_Test.java
@@ -38,7 +38,7 @@ public class Allow_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
index aac2dae..46845ba 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Authorization_Test.java
@@ -35,7 +35,7 @@ public class Authorization_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
index f25c9dc..7eb4896 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicBooleanHeader_Test.java
@@ -38,7 +38,7 @@ public class BasicBooleanHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
index 0069f07..6729c03 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicCsvArrayHeader_Test.java
@@ -41,7 +41,7 @@ public class BasicCsvArrayHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
index 82c11fb..74322a2 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicDateHeader_Test.java
@@ -42,7 +42,7 @@ public class BasicDateHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
index b0ef29d..dc638ef 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagArrayHeader_Test.java
@@ -38,7 +38,7 @@ public class BasicEntityTagArrayHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
@Schema(aev=true) String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi",aev=true) String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
index 3cdd4be..9578fb4 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicEntityTagHeader_Test.java
@@ -37,7 +37,7 @@ public class BasicEntityTagHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
index 0c702bd..bf5ca89 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicIntegerHeader_Test.java
@@ -39,7 +39,7 @@ public class BasicIntegerHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
index c5cb495..20ba175 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicLongHeader_Test.java
@@ -39,7 +39,7 @@ public class BasicLongHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
index 3f024c5..a83981e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
@@ -40,7 +40,7 @@ public class BasicMediaRangeArrayHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
index 803244c..4fbef5e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
@@ -39,7 +39,7 @@ public class BasicMediaTypeHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
index fd4c275..5a40d7e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringHeader_Test.java
@@ -36,7 +36,7 @@ public class BasicStringHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
index 491a55a..35b7cfe 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
@@ -39,7 +39,7 @@ public class BasicStringRangeArrayHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
index 66af972..c87d5d7 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/BasicUriHeader_Test.java
@@ -41,7 +41,7 @@ public class BasicUriHeader_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
'|'));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
index 3274445..7e01c77 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/CacheControl_Test.java
@@ -36,7 +36,7 @@ public class CacheControl_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
index fe1169c..9069bdf 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ClientVersion_Test.java
@@ -37,7 +37,7 @@ public class ClientVersion_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java
index 71aa23c..1fa62ae 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Connection_Test.java
@@ -37,7 +37,7 @@ public class Connection_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
index 93f29d4..d266de1 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentDisposition_Test.java
@@ -36,7 +36,7 @@ public class ContentDisposition_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
index e7e3d8c..af484ea 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentEncoding_Test.java
@@ -36,7 +36,7 @@ public class ContentEncoding_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
index 59b7858..ab35257 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLanguage_Test.java
@@ -38,7 +38,7 @@ public class ContentLanguage_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
index 9f60d0f..49bb7e3 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLength_Test.java
@@ -36,7 +36,7 @@ public class ContentLength_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
index 7c42a0a..d84ec14 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentLocation_Test.java
@@ -37,7 +37,7 @@ public class ContentLocation_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
index 14d82bd..e887c1e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentRange_Test.java
@@ -36,7 +36,7 @@ public class ContentRange_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
index 016e216..79650cd 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ContentType_Test.java
@@ -37,7 +37,7 @@ public class ContentType_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java
index 2e82e14..a54a9bb 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Date_Test.java
@@ -39,7 +39,7 @@ public class Date_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java
index 037c8a8..04d39b4 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/ETag_Test.java
@@ -37,7 +37,7 @@ public class ETag_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java
index abbc908..7aad18a 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expect_Test.java
@@ -36,7 +36,7 @@ public class Expect_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java
index 96df9d7..ec22703 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Expires_Test.java
@@ -39,7 +39,7 @@ public class Expires_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java
index 6b8ed94..c786811 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Forwarded_Test.java
@@ -36,7 +36,7 @@ public class Forwarded_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java
index 77018cb..c83f733 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/From_Test.java
@@ -36,7 +36,7 @@ public class From_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java
index d3fb8f4..735714e 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Host_Test.java
@@ -36,7 +36,7 @@ public class Host_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java
index ca5dede..f21a09b 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfMatch_Test.java
@@ -38,7 +38,7 @@ public class IfMatch_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
@Schema(allowEmptyValue=true) String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi",aev=true) String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
index 6bab1d0..61e0f53 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfModifiedSince_Test.java
@@ -39,7 +39,7 @@ public class IfModifiedSince_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
index 8919915..cfe67dc 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfNoneMatch_Test.java
@@ -38,7 +38,7 @@ public class IfNoneMatch_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
@Schema(allowEmptyValue=true) String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi",aev=true) String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java
index b278aff..03c74e4 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfRange_Test.java
@@ -44,7 +44,7 @@ public class IfRange_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
index 41dd596..7ca2c9d 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/IfUnmodifiedSince_Test.java
@@ -39,7 +39,7 @@ public class IfUnmodifiedSince_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
index 2956fa9..c984a07 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/LastModified_Test.java
@@ -39,7 +39,7 @@ public class LastModified_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java
index e699732..d74c63e 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Location_Test.java
@@ -37,7 +37,7 @@ public class Location_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
index 5a11ecb..19598a7 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/MaxForwards_Test.java
@@ -36,7 +36,7 @@ public class MaxForwards_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java
index bca818a..72f7a99 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/NoTrace_Test.java
@@ -36,7 +36,7 @@ public class NoTrace_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java
index 1274b36..2db8226 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Origin_Test.java
@@ -36,7 +36,7 @@ public class Origin_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java
index 7416147..f4a5647 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Pragma_Test.java
@@ -36,7 +36,7 @@ public class Pragma_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
index 91715d3..e86fee5 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthenticate_Test.java
@@ -36,7 +36,7 @@ public class ProxyAuthenticate_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
index 2a67265..ffdba61 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/ProxyAuthorization_Test.java
@@ -36,7 +36,7 @@ public class ProxyAuthorization_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java
index 9e61d7c..efbc3ce 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Range_Test.java
@@ -36,7 +36,7 @@ public class Range_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java
index 8698de9..7c2656d 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Referer_Test.java
@@ -37,7 +37,7 @@ public class Referer_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java
index 6823780..98bed78 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/RetryAfter_Test.java
@@ -42,7 +42,7 @@ public class RetryAfter_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java
index 3b078ee..35647d4 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Server_Test.java
@@ -36,7 +36,7 @@ public class Server_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java
index 0e58320..50fbd32 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/TE_Test.java
@@ -36,7 +36,7 @@ public class TE_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java
index 605c272..0851da7 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Trailer_Test.java
@@ -36,7 +36,7 @@ public class Trailer_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
index 0609278..02491e1 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/TransferEncoding_Test.java
@@ -36,7 +36,7 @@ public class TransferEncoding_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java
index 2c82624..5686b1a 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Upgrade_Test.java
@@ -38,7 +38,7 @@ public class Upgrade_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java
index 100a033..9daf157 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/UserAgent_Test.java
@@ -36,7 +36,7 @@ public class UserAgent_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java
index 6b054c5..678e075 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Vary_Test.java
@@ -36,7 +36,7 @@ public class Vary_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java
index 69ba1f0..be72ca2 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Via_Test.java
@@ -38,7 +38,7 @@ public class Via_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java
index 2d36d4b..9f971ac 100644
--- a/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java
+++ b/juneau-utest/src/test/java/org/apache/juneau/http/header/Warning_Test.java
@@ -36,7 +36,7 @@ public class Warning_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
index bd5f21f..dc52715 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/http/header/WwwAuthenticate_Test.java
@@ -36,7 +36,7 @@ public class WwwAuthenticate_Test {
        @Rest
        public static class A {
                @RestOp
-               public StringReader get(@Header(name=HEADER,multi=true) 
String[] h) {
+               public StringReader get(@Header(name=HEADER) 
@Schema(cf="multi") String[] h) {
                        return reader(h == null ? "null" : StringUtils.join(h, 
','));
                }
        }
diff --git 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
index b42659d..99ba122 100644
--- 
a/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
+++ 
b/juneau-utest/src/test/java/org/apache/juneau/rest/client/RestClient_Config_RestClient_Test.java
@@ -435,7 +435,7 @@ public class RestClient_Config_RestClient_Test {
        @Rest(partSerializer=A12a.class,partParser=A12b.class)
        public static class A12 extends BasicRestObject {
                @RestGet(path="/")
-               public Ok get(@Header(name="Foo",multi=true) ABean[] 
foo,org.apache.juneau.rest.RestRequest req,org.apache.juneau.rest.RestResponse 
res) throws Exception {
+               public Ok get(@Header(name="Foo") @Schema(cf="multi") ABean[] 
foo,org.apache.juneau.rest.RestRequest req,org.apache.juneau.rest.RestResponse 
res) throws Exception {
                        assertEquals(2,foo.length);
                        
assertObject(req.getHeaders().getAll("Foo").stream().map(RequestHeader::getValue).collect(Collectors.toList())).asJson().is("['x{f:1}','x{f:1}']");
                        assertEquals("{f:1}",foo[0].toString());

Reply via email to