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&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&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&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&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&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