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 720af88  Context API refactoring.
720af88 is described below

commit 720af88c194fbb095750d7f7906f1fc1e9612e9f
Author: JamesBognar <[email protected]>
AuthorDate: Mon Sep 27 09:44:29 2021 -0400

    Context API refactoring.
---
 .../java/org/apache/juneau/oapi/OpenApiCommon.java | 170 ---------------------
 .../java/org/apache/juneau/oapi/OpenApiParser.java |  21 +--
 .../apache/juneau/oapi/OpenApiParserBuilder.java   |  25 +--
 .../org/apache/juneau/oapi/OpenApiSerializer.java  |  21 +--
 .../juneau/oapi/OpenApiSerializerBuilder.java      |  25 +--
 .../juneau/oapi/annotation/OpenApiConfig.java      |  49 +++---
 .../oapi/annotation/OpenApiConfigAnnotation.java   |  41 +++--
 .../juneau/rest/client/RestClientBuilder.java      |  20 +--
 8 files changed, 109 insertions(+), 263 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiCommon.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiCommon.java
deleted file mode 100644
index 7b382c7..0000000
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiCommon.java
+++ /dev/null
@@ -1,170 +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.oapi;
-
-/**
- * Configurable properties common to both the {@link OpenApiSerializer} and 
{@link OpenApiParser} classes.
- */
-public interface OpenApiCommon {
-
-       /**
-        * Property prefix.
-        */
-       static final String PREFIX = "OpenApi";
-
-       /**
-        * Configuration property:  Default format for HTTP parts.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.oapi.OpenApiCommon#OAPI_format OAPI_format}
-        *      <li><b>Name:</b>  <js>"OpenApi.format.s"</js>
-        *      <li><b>Data type:</b>  {@link 
org.apache.juneau.httppart.HttpPartFormat}
-        *      <li><b>System property:</b>  <c>OpenApi.format</c>
-        *      <li><b>Environment variable:</b>  <c>OPENAPI_FORMAT</c>
-        *      <li><b>Default:</b>  <js>"NO_FORMAT"</js>
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.oapi.annotation.OpenApiConfig#format()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiSerializerBuilder#format(org.apache.juneau.httppart.HttpPartFormat)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiParserBuilder#format(org.apache.juneau.httppart.HttpPartFormat)}
-        *              </ul>
-        * </ul>
-        *
-        * <h5 class='section'>Description:</h5>
-        *
-        * <p>
-        * Specifies the format to use for HTTP parts when not otherwise 
specified via {@link org.apache.juneau.jsonschema.annotation.Schema#format()}.
-        *
-        * <p>
-        * Possible values:
-        * <ul class='javatree'>
-        *      <li class='jc'>{@link org.apache.juneau.httppart.HttpPartFormat}
-        *      <ul>
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#UON UON} - UON notation (e.g. 
<js>"'foo bar'"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#INT32 INT32} - Signed 32 bits.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#INT64 INT64} - Signed 64 bits.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#FLOAT FLOAT} - 32-bit floating point 
number.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#DOUBLE DOUBLE} - 64-bit floating 
point number.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#BYTE BYTE} - BASE-64 encoded 
characters.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#BINARY BINARY} - Hexadecimal encoded 
octets (e.g. <js>"00FF"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#BINARY_SPACED BINARY_SPACED} - 
Spaced-separated hexadecimal encoded octets (e.g. <js>"00 FF"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#DATE DATE} - An <a 
href='http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14'>RFC3339 
full-date</a>.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#DATE_TIME DATE_TIME} - An <a 
href='http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14'>RFC3339 
date-time</a>.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#PASSWORD PASSWORD} - Used to hint UIs 
the input needs to be obscured.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#NO_FORMAT NO_FORMAT} - (default) Not 
specified.
-        *      </ul>
-        * </ul>
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <jc>// Create a plain-text serializer.</jc>
-        *      OpenApiSerializer s1 = OpenApiSerializer
-        *              .<jsm>create</jsm>()
-        *              .build();
-        *
-        *      <jc>// Create a UON serializer.</jc>
-        *      OpenApiSerializer s2 = OpenApiSerializer
-        *              .<jsm>create</jsm>()
-        *              .format(<jsf>UON</jsf>)
-        *              .build();
-        *
-        *      String string = <js>"foo bar"</js>;
-        *
-        *      <jc>// Produces: "foo bar"</jc>
-        *      String v1 = s.serialize(string);
-        *
-        *      <jc>// Produces: "'foo bar'"</jc>
-        *      String v2 = s2.serialize(string);
-        * </p>
-        */
-       public static final String OAPI_format = PREFIX + ".format.s";
-
-       /**
-        * Configuration property:  Default collection format for HTTP parts.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.oapi.OpenApiCommon#OAPI_collectionFormat 
OAPI_collectionFormat}
-        *      <li><b>Name:</b>  <js>"OpenApi.format.s"</js>
-        *      <li><b>Data type:</b>  {@link 
org.apache.juneau.httppart.HttpPartCollectionFormat}
-        *      <li><b>System property:</b>  <c>OpenApi.collectionFormat</c>
-        *      <li><b>Environment variable:</b>  
<c>OPENAPI_COLLECTIONFORMAT</c>
-        *      <li><b>Default:</b>  <js>"NO_COLLECTION_FORMAT"</js>
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.oapi.annotation.OpenApiConfig#collectionFormat()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiSerializerBuilder#collectionFormat(org.apache.juneau.httppart.HttpPartCollectionFormat)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.oapi.OpenApiParserBuilder#collectionFormat(org.apache.juneau.httppart.HttpPartCollectionFormat)}
-        *              </ul>
-        * </ul>
-        *
-        * <h5 class='section'>Description:</h5>
-        *
-        * <p>
-        * Specifies the collection format to use for HTTP parts when not 
otherwise specified via {@link 
org.apache.juneau.jsonschema.annotation.Schema#collectionFormat()}.
-        *
-        * <p>
-        * Possible values:
-        * <ul class='javatree'>
-        *      <li class='jc'>{@link org.apache.juneau.httppart.HttpPartFormat}
-        *      <ul>
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#CSV CSV} - (default) 
Comma-separated values (e.g. <js>"foo,bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#SSV SSV} - Space-separated 
values (e.g. <js>"foo bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#TSV TSV} - Tab-separated 
values (e.g. <js>"foo\tbar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#PIPES PIPES} - 
Pipe-separated values (e.g. <js>"foo|bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#MULTI MULTI} - Corresponds 
to multiple parameter instances instead of multiple values for a single 
instance (e.g. <js>"foo=bar&amp;foo=baz"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#UONC UONC} - UON collection 
notation (e.g. <js>"@(foo,bar)"</js>).
-        *      </ul>
-        * </ul>
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <jc>// Create a serializer using CSV for collections.</jc>
-        *      OpenApiSerializer s1 = OpenApiSerializer
-        *              .<jsm>create</jsm>()
-        *              .collectionFormat(<jsf>CSV</jsf>)
-        *              .build();
-        *
-        *      <jc>// Create a serializer using UON for collections.</jc>
-        *      OpenApiSerializer s2 = OpenApiSerializer
-        *              .<jsm>create</jsm>()
-        *              .collectionFormat(<jsf>UON</jsf>)
-        *              .build();
-        *
-        *      <jc>// An arbitrary data structure.</jc>
-        *      OList l = OList.<jsm>of</jsm>(
-        *              <js>"foo"</js>,
-        *              <js>"bar"</js>,
-        *              OMap.<jsm>of</jsm>(
-        *                      <js>"baz"</js>, 
OList.<jsm>of</jsm>(<js>"qux"</js>,<js>"true"</js>,<js>"123"</js>)
-        *              )
-        *      );
-        *
-        *      <jc>// Produces: "foo=bar,baz=qux\,true\,123"</jc>
-        *      String v1 = s1.serialize(l)
-        *
-        * <jc>// Produces: "(foo=bar,baz=@(qux,'true','123'))"</jc>
-        *      String v2 = s2.serialize(l)
-        * </p>
-        */
-       public static final String OAPI_collectionFormat = PREFIX + 
".collectionformat.s";
-}
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
index dfe99bc..2d5a137 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParser.java
@@ -31,30 +31,24 @@ import org.apache.juneau.uon.*;
  * </ul>
  */
 @ConfigurableContext
-public class OpenApiParser extends UonParser implements OpenApiMetaProvider, 
OpenApiCommon {
+public class OpenApiParser extends UonParser implements OpenApiMetaProvider {
 
        
//-------------------------------------------------------------------------------------------------------------------
-       // Configurable properties
-       
//-------------------------------------------------------------------------------------------------------------------
-
-       static final String PREFIX = "OpenApiParser";
-
-       
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined instances
+       // Static
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Reusable instance of {@link OpenApiParser}. */
        public static final OpenApiParser DEFAULT = new OpenApiParser(create());
 
-
        
//-------------------------------------------------------------------------------------------------------------------
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
+       final HttpPartFormat format;
+       final HttpPartCollectionFormat collectionFormat;
+
        private final Map<ClassMeta<?>,OpenApiClassMeta> openApiClassMetas = 
new ConcurrentHashMap<>();
        private final Map<BeanPropertyMeta,OpenApiBeanPropertyMeta> 
openApiBeanPropertyMetas = new ConcurrentHashMap<>();
-       private final HttpPartFormat format;
-       private final HttpPartCollectionFormat collectionFormat;
 
        /**
         * Constructor.
@@ -63,9 +57,8 @@ public class OpenApiParser extends UonParser implements 
OpenApiMetaProvider, Ope
         */
        protected OpenApiParser(OpenApiParserBuilder builder) {
                super(builder);
-               ContextProperties cp = getContextProperties();
-               format = cp.get(OAPI_format, 
HttpPartFormat.class).orElse(HttpPartFormat.NO_FORMAT);
-               collectionFormat = cp.get(OAPI_collectionFormat, 
HttpPartCollectionFormat.class).orElse(HttpPartCollectionFormat.NO_COLLECTION_FORMAT);
+               format = builder.format;
+               collectionFormat = builder.collectionFormat;
        }
 
        @Override /* Context */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
index 91e5eb5..7d961fd 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiParserBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.oapi;
 
-import static org.apache.juneau.oapi.OpenApiCommon.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
@@ -31,6 +29,9 @@ import org.apache.juneau.uon.*;
 @FluentSetters
 public class OpenApiParserBuilder extends UonParserBuilder {
 
+       HttpPartFormat format;
+       HttpPartCollectionFormat collectionFormat;
+
        /**
         * Constructor, default settings.
         */
@@ -38,6 +39,8 @@ public class OpenApiParserBuilder extends UonParserBuilder {
                super();
                consumes("text/openapi");
                type(OpenApiParser.class);
+               format = HttpPartFormat.NO_FORMAT;
+               collectionFormat = 
HttpPartCollectionFormat.NO_COLLECTION_FORMAT;
        }
 
        /**
@@ -47,6 +50,8 @@ public class OpenApiParserBuilder extends UonParserBuilder {
         */
        protected OpenApiParserBuilder(OpenApiParser copyFrom) {
                super(copyFrom);
+               format = copyFrom.format;
+               collectionFormat = copyFrom.collectionFormat;
        }
 
        /**
@@ -56,6 +61,8 @@ public class OpenApiParserBuilder extends UonParserBuilder {
         */
        protected OpenApiParserBuilder(OpenApiParserBuilder copyFrom) {
                super(copyFrom);
+               format = copyFrom.format;
+               collectionFormat = copyFrom.collectionFormat;
        }
 
        @Override /* ContextBuilder */
@@ -118,16 +125,13 @@ public class OpenApiParserBuilder extends 
UonParserBuilder {
         *      String v2 = p2.parse(<js>"'foo bar'"</js>);
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_format}
-        * </ul>
-        *
         * @param value The new value for this property.
         * @return This object (for method chaining).
         */
        @FluentSetter
        public OpenApiParserBuilder format(HttpPartFormat value) {
-               return set(OAPI_format, value);
+               format = value;
+               return this;
        }
 
        /**
@@ -171,16 +175,13 @@ public class OpenApiParserBuilder extends 
UonParserBuilder {
         *      OList l2 = p2.parse(<js>"(foo=bar,baz=@(qux,true,123))"</js>, 
OList.<jk>class</jk>)
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_collectionFormat}
-        * </ul>
-        *
         * @param value The new value for this property.
         * @return This object (for method chaining).
         */
        @FluentSetter
        public OpenApiParserBuilder collectionFormat(HttpPartCollectionFormat 
value) {
-               return set(OAPI_collectionFormat, value);
+               collectionFormat = value;
+               return this;
        }
 
        // <FluentSetters>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java
index 4eeebd3..c0b3560 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializer.java
@@ -31,30 +31,24 @@ import org.apache.juneau.uon.*;
  * </ul>
  */
 @ConfigurableContext
-public class OpenApiSerializer extends UonSerializer implements 
OpenApiMetaProvider, OpenApiCommon {
+public class OpenApiSerializer extends UonSerializer implements 
OpenApiMetaProvider {
 
        
//-------------------------------------------------------------------------------------------------------------------
-       // Configurable properties
-       
//-------------------------------------------------------------------------------------------------------------------
-
-       static final String PREFIX = "OpenApiSerializer";
-
-       
//-------------------------------------------------------------------------------------------------------------------
-       // Predefined instances
+       // Static
        
//-------------------------------------------------------------------------------------------------------------------
 
        /** Reusable instance of {@link OpenApiSerializer}, all default 
settings. */
        public static final OpenApiSerializer DEFAULT = new 
OpenApiSerializer(create());
 
-
        
//-------------------------------------------------------------------------------------------------------------------
        // Instance
        
//-------------------------------------------------------------------------------------------------------------------
 
+       final HttpPartFormat format;
+       final HttpPartCollectionFormat collectionFormat;
+
        private final Map<ClassMeta<?>,OpenApiClassMeta> openApiClassMetas = 
new ConcurrentHashMap<>();
        private final Map<BeanPropertyMeta,OpenApiBeanPropertyMeta> 
openApiBeanPropertyMetas = new ConcurrentHashMap<>();
-       private final HttpPartFormat format;
-       private final HttpPartCollectionFormat collectionFormat;
 
        /**
         * Constructor.
@@ -64,9 +58,8 @@ public class OpenApiSerializer extends UonSerializer 
implements OpenApiMetaProvi
         */
        protected OpenApiSerializer(OpenApiSerializerBuilder builder) {
                super(builder.encoding(false));
-               ContextProperties cp = getContextProperties();
-               format = cp.get(OAPI_format, 
HttpPartFormat.class).orElse(HttpPartFormat.NO_FORMAT);
-               collectionFormat = cp.get(OAPI_collectionFormat, 
HttpPartCollectionFormat.class).orElse(HttpPartCollectionFormat.NO_COLLECTION_FORMAT);
+               format = builder.format;
+               collectionFormat = builder.collectionFormat;
        }
 
        @Override /* Context */
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
index 14bf242..d137375 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/OpenApiSerializerBuilder.java
@@ -12,8 +12,6 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.oapi;
 
-import static org.apache.juneau.oapi.OpenApiSerializer.*;
-
 import java.lang.annotation.*;
 import java.lang.reflect.*;
 import java.nio.charset.*;
@@ -31,6 +29,9 @@ import org.apache.juneau.uon.*;
 @FluentSetters
 public class OpenApiSerializerBuilder extends UonSerializerBuilder {
 
+       HttpPartFormat format;
+       HttpPartCollectionFormat collectionFormat;
+
        /**
         * Constructor, default settings.
         */
@@ -38,6 +39,8 @@ public class OpenApiSerializerBuilder extends 
UonSerializerBuilder {
                super();
                produces("text/openapi");
                type(OpenApiSerializer.class);
+               format = HttpPartFormat.NO_FORMAT;
+               collectionFormat = 
HttpPartCollectionFormat.NO_COLLECTION_FORMAT;
        }
 
        /**
@@ -47,6 +50,8 @@ public class OpenApiSerializerBuilder extends 
UonSerializerBuilder {
         */
        protected OpenApiSerializerBuilder(OpenApiSerializer copyFrom) {
                super(copyFrom);
+               format = copyFrom.format;
+               collectionFormat = copyFrom.collectionFormat;
        }
 
        /**
@@ -56,6 +61,8 @@ public class OpenApiSerializerBuilder extends 
UonSerializerBuilder {
         */
        protected OpenApiSerializerBuilder(OpenApiSerializerBuilder copyFrom) {
                super(copyFrom);
+               format = copyFrom.format;
+               collectionFormat = copyFrom.collectionFormat;
        }
 
        @Override /* ContextBuilder */
@@ -120,16 +127,13 @@ public class OpenApiSerializerBuilder extends 
UonSerializerBuilder {
         *      String v2 = s2.serialize(string);
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_format}
-        * </ul>
-        *
         * @param value The new value for this property.
         * @return This object (for method chaining).
         */
        @FluentSetter
        public OpenApiSerializerBuilder format(HttpPartFormat value) {
-               return set(OAPI_format, value);
+               format = value;
+               return this;
        }
 
        /**
@@ -182,16 +186,13 @@ public class OpenApiSerializerBuilder extends 
UonSerializerBuilder {
         *      String v2 = s2.serialize(l)
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_collectionFormat}
-        * </ul>
-        *
         * @param value The new value for this property.
         * @return This object (for method chaining).
         */
        @FluentSetter
        public OpenApiSerializerBuilder 
collectionFormat(HttpPartCollectionFormat value) {
-               return set(OAPI_collectionFormat, value);
+               collectionFormat = value;
+               return this;
        }
 
        // <FluentSetters>
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java
index 148168f..06d405f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfig.java
@@ -18,6 +18,7 @@ import static java.lang.annotation.RetentionPolicy.*;
 import java.lang.annotation.*;
 
 import org.apache.juneau.annotation.*;
+import org.apache.juneau.httppart.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.oapi.*;
 
@@ -31,7 +32,7 @@ import org.apache.juneau.oapi.*;
 @Target({TYPE,METHOD})
 @Retention(RUNTIME)
 @Inherited
-@ContextApply(OpenApiConfigAnnotation.Apply.class)
+@ContextApply({OpenApiConfigAnnotation.ApplySerializer.class,OpenApiConfigAnnotation.ApplyParser.class})
 public @interface OpenApiConfig {
 
        /**
@@ -55,25 +56,26 @@ public @interface OpenApiConfig {
         * <p>
         * Possible values:
         * <ul class='javatree'>
-        *      <li class='jc'>{@link org.apache.juneau.httppart.HttpPartFormat}
+        *      <li class='jc'>{@link HttpPartFormat}
         *      <ul>
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#UON UON} - UON notation (e.g. 
<js>"'foo bar'"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#INT32 INT32} - Signed 32 bits.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#INT64 INT64} - Signed 64 bits.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#FLOAT FLOAT} - 32-bit floating point 
number.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#DOUBLE DOUBLE} - 64-bit floating 
point number.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#BYTE BYTE} - BASE-64 encoded 
characters.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#BINARY BINARY} - Hexadecimal encoded 
octets (e.g. <js>"00FF"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#BINARY_SPACED BINARY_SPACED} - 
Spaced-separated hexadecimal encoded octets (e.g. <js>"00 FF"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#DATE DATE} - An <a 
href='http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14'>RFC3339 
full-date</a>.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#DATE_TIME DATE_TIME} - An <a 
href='http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14'>RFC3339 
date-time</a>.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#PASSWORD PASSWORD} - Used to hint UIs 
the input needs to be obscured.
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartFormat#NO_FORMAT NO_FORMAT} - (default) Not 
specified.
+        *              <li class='jf'>{@link HttpPartFormat#UON UON} - UON 
notation (e.g. <js>"'foo bar'"</js>).
+        *              <li class='jf'>{@link HttpPartFormat#INT32 INT32} - 
Signed 32 bits.
+        *              <li class='jf'>{@link HttpPartFormat#INT64 INT64} - 
Signed 64 bits.
+        *              <li class='jf'>{@link HttpPartFormat#FLOAT FLOAT} - 
32-bit floating point number.
+        *              <li class='jf'>{@link HttpPartFormat#DOUBLE DOUBLE} - 
64-bit floating point number.
+        *              <li class='jf'>{@link HttpPartFormat#BYTE BYTE} - 
BASE-64 encoded characters.
+        *              <li class='jf'>{@link HttpPartFormat#BINARY BINARY} - 
Hexadecimal encoded octets (e.g. <js>"00FF"</js>).
+        *              <li class='jf'>{@link HttpPartFormat#BINARY_SPACED 
BINARY_SPACED} - Spaced-separated hexadecimal encoded octets (e.g. <js>"00 
FF"</js>).
+        *              <li class='jf'>{@link HttpPartFormat#DATE DATE} - An <a 
href='http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14'>RFC3339 
full-date</a>.
+        *              <li class='jf'>{@link HttpPartFormat#DATE_TIME 
DATE_TIME} - An <a 
href='http://xml2rfc.ietf.org/public/rfc/html/rfc3339.html#anchor14'>RFC3339 
date-time</a>.
+        *              <li class='jf'>{@link HttpPartFormat#PASSWORD PASSWORD} 
- Used to hint UIs the input needs to be obscured.
+        *              <li class='jf'>{@link HttpPartFormat#NO_FORMAT 
NO_FORMAT} - (default) Not specified.
         *      </ul>
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_format}
+        *      <li class='jm'>{@link 
OpenApiSerializerBuilder#format(HttpPartFormat)}
+        *      <li class='jm'>{@link 
OpenApiParserBuilder#format(HttpPartFormat)}
         * </ul>
         */
        String format() default "";
@@ -87,19 +89,20 @@ public @interface OpenApiConfig {
         * <p>
         * Possible values:
         * <ul class='javatree'>
-        *      <li class='jc'>{@link org.apache.juneau.httppart.HttpPartFormat}
+        *      <li class='jc'>{@link HttpPartCollectionFormat}
         *      <ul>
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#CSV CSV} - (default) 
Comma-separated values (e.g. <js>"foo,bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#SSV SSV} - Space-separated 
values (e.g. <js>"foo bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#TSV TSV} - Tab-separated 
values (e.g. <js>"foo\tbar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#PIPES PIPES} - 
Pipe-separated values (e.g. <js>"foo|bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#MULTI MULTI} - Corresponds 
to multiple parameter instances instead of multiple values for a single 
instance (e.g. <js>"foo=bar&amp;foo=baz"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#UONC UONC} - UON collection 
notation (e.g. <js>"@(foo,bar)"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#CSV CSV} 
- (default) Comma-separated values (e.g. <js>"foo,bar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#SSV SSV} 
- Space-separated values (e.g. <js>"foo bar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#TSV TSV} 
- Tab-separated values (e.g. <js>"foo\tbar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#PIPES 
PIPES} - Pipe-separated values (e.g. <js>"foo|bar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#MULTI 
MULTI} - Corresponds to multiple parameter instances instead of multiple values 
for a single instance (e.g. <js>"foo=bar&amp;foo=baz"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#UONC 
UONC} - UON collection notation (e.g. <js>"@(foo,bar)"</js>).
         *      </ul>
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_collectionFormat}
+        *      <li class='jm'>{@link 
OpenApiSerializerBuilder#collectionFormat(HttpPartCollectionFormat)}
+        *      <li class='jm'>{@link 
OpenApiParserBuilder#collectionFormat(HttpPartCollectionFormat)}
         * </ul>
         */
        String collectionFormat() default "";
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
index 25daa0d..3c53d5f 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/oapi/annotation/OpenApiConfigAnnotation.java
@@ -12,9 +12,9 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.oapi.annotation;
 
-import static org.apache.juneau.oapi.OpenApiCommon.*;
-
 import org.apache.juneau.*;
+import org.apache.juneau.httppart.*;
+import org.apache.juneau.oapi.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.svl.*;
 
@@ -24,25 +24,48 @@ import org.apache.juneau.svl.*;
 public class OpenApiConfigAnnotation {
 
        /**
-        * Applies {@link OpenApiConfig} annotations to a {@link 
ContextPropertiesBuilder}.
+        * Applies {@link OpenApiConfig} annotations to a {@link 
OpenApiSerializerBuilder}.
+        */
+       public static class ApplySerializer extends 
AnnotationApplier<OpenApiConfig,OpenApiSerializerBuilder> {
+
+               /**
+                * Constructor.
+                *
+                * @param vr The resolver for resolving values in annotations.
+                */
+               public ApplySerializer(VarResolverSession vr) {
+                       super(OpenApiConfig.class, 
OpenApiSerializerBuilder.class, vr);
+               }
+
+               @Override
+               public void apply(AnnotationInfo<OpenApiConfig> ai, 
OpenApiSerializerBuilder b) {
+                       OpenApiConfig a = ai.getAnnotation();
+
+                       
string(a.format()).map(HttpPartFormat::valueOf).ifPresent(x -> b.format(x));
+                       
string(a.collectionFormat()).map(HttpPartCollectionFormat::valueOf).ifPresent(x 
-> b.collectionFormat(x));
+               }
+       }
+
+       /**
+        * Applies {@link OpenApiConfig} annotations to a {@link 
OpenApiParserBuilder}.
         */
-       public static class Apply extends 
AnnotationApplier<OpenApiConfig,ContextPropertiesBuilder> {
+       public static class ApplyParser extends 
AnnotationApplier<OpenApiConfig,OpenApiParserBuilder> {
 
                /**
                 * Constructor.
                 *
                 * @param vr The resolver for resolving values in annotations.
                 */
-               public Apply(VarResolverSession vr) {
-                       super(OpenApiConfig.class, 
ContextPropertiesBuilder.class, vr);
+               public ApplyParser(VarResolverSession vr) {
+                       super(OpenApiConfig.class, OpenApiParserBuilder.class, 
vr);
                }
 
                @Override
-               public void apply(AnnotationInfo<OpenApiConfig> ai, 
ContextPropertiesBuilder b) {
+               public void apply(AnnotationInfo<OpenApiConfig> ai, 
OpenApiParserBuilder b) {
                        OpenApiConfig a = ai.getAnnotation();
 
-                       string(a.format()).ifPresent(x -> b.set(OAPI_format, 
x));
-                       string(a.collectionFormat()).ifPresent(x -> 
b.set(OAPI_collectionFormat, x));
+                       
string(a.format()).map(HttpPartFormat::valueOf).ifPresent(x -> b.format(x));
+                       
string(a.collectionFormat()).map(HttpPartCollectionFormat::valueOf).ifPresent(x 
-> b.collectionFormat(x));
                }
        }
 }
\ No newline at end of file
diff --git 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
index 1fc8de1..5cfff8c 100644
--- 
a/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
+++ 
b/juneau-rest/juneau-rest-client/src/main/java/org/apache/juneau/rest/client/RestClientBuilder.java
@@ -4574,7 +4574,8 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_format}
+        *      <li class='jm'>{@link 
OpenApiSerializerBuilder#format(HttpPartFormat)}
+        *      <li class='jm'>{@link 
OpenApiParserBuilder#format(HttpPartFormat)}
         * </ul>
         *
         * @param value
@@ -4601,14 +4602,14 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         * <p>
         * Possible values:
         * <ul class='javatree'>
-        *      <li class='jc'>{@link org.apache.juneau.httppart.HttpPartFormat}
+        *      <li class='jc'>{@link HttpPartCollectionFormat}
         *      <ul>
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#CSV CSV} - (default) 
Comma-separated values (e.g. <js>"foo,bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#SSV SSV} - Space-separated 
values (e.g. <js>"foo bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#TSV TSV} - Tab-separated 
values (e.g. <js>"foo\tbar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#PIPES PIPES} - 
Pipe-separated values (e.g. <js>"foo|bar"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#MULTI MULTI} - Corresponds 
to multiple parameter instances instead of multiple values for a single 
instance (e.g. <js>"foo=bar&amp;foo=baz"</js>).
-        *              <li class='jf'>{@link 
org.apache.juneau.httppart.HttpPartCollectionFormat#UONC UONC} - UON collection 
notation (e.g. <js>"@(foo,bar)"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#CSV CSV} 
- (default) Comma-separated values (e.g. <js>"foo,bar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#SSV SSV} 
- Space-separated values (e.g. <js>"foo bar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#TSV TSV} 
- Tab-separated values (e.g. <js>"foo\tbar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#PIPES 
PIPES} - Pipe-separated values (e.g. <js>"foo|bar"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#MULTI 
MULTI} - Corresponds to multiple parameter instances instead of multiple values 
for a single instance (e.g. <js>"foo=bar&amp;foo=baz"</js>).
+        *              <li class='jf'>{@link HttpPartCollectionFormat#UONC 
UONC} - UON collection notation (e.g. <js>"@(foo,bar)"</js>).
         *      </ul>
         * </ul>
         *
@@ -4637,7 +4638,8 @@ public class RestClientBuilder extends 
BeanContextableBuilder {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link OpenApiCommon#OAPI_collectionFormat}
+        *      <li class='jm'>{@link 
OpenApiSerializerBuilder#collectionFormat(HttpPartCollectionFormat)}
+        *      <li class='jm'>{@link 
OpenApiParserBuilder#collectionFormat(HttpPartCollectionFormat)}
         * </ul>
         *
         * @param value

Reply via email to