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 371ff50 Context API refactoring.
371ff50 is described below
commit 371ff50e6e9e029e0c2f48cec9304d82ed146d33
Author: JamesBognar <[email protected]>
AuthorDate: Sun Aug 29 12:08:55 2021 -0400
Context API refactoring.
---
.../java/org/apache/juneau/AnnotationApplier.java | 11 ++--
.../java/org/apache/juneau/rest/RestContext.java | 64 ++++++----------------
.../org/apache/juneau/rest/RestContextBuilder.java | 25 +++++----
.../java/org/apache/juneau/rest/RestRequest.java | 3 +-
.../org/apache/juneau/rest/annotation/Rest.java | 6 +-
.../juneau/rest/annotation/RestAnnotation.java | 10 ++--
.../rest/annotation/RestDeleteAnnotation.java | 2 +-
.../juneau/rest/annotation/RestGetAnnotation.java | 2 +-
.../juneau/rest/annotation/RestOpAnnotation.java | 2 +-
.../juneau/rest/annotation/RestPostAnnotation.java | 2 +-
.../juneau/rest/annotation/RestPutAnnotation.java | 2 +-
11 files changed, 50 insertions(+), 79 deletions(-)
diff --git
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
index 8090301..b234faa 100644
---
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
+++
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/AnnotationApplier.java
@@ -108,14 +108,13 @@ public abstract class AnnotationApplier<A extends
Annotation, B> {
}
/**
- * Returns the specified value if it's not the specified default.
+ * Returns the specified value if it's simple name is not
<js>"Null"</js>.
*
- * @param in The value to return if it's not the default.
- * @param def The default value.
- * @return An optional containing the specified value if it's not the
default, or {@link Optional#empty()} if it does not.
+ * @param in The value to return.
+ * @return An optional containing the specified value.
*/
- protected <T> Optional<T> value(T in, T def) {
- return in != def ? Optional.of(in) : Optional.empty();
+ protected <T> Optional<Class<T>> value(Class<T> in) {
+ return in.getSimpleName().equals("Null") ? Optional.empty() :
Optional.of(in);
}
/**
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
index ee76301..98b97a3 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -1952,34 +1952,6 @@ public class RestContext extends BeanContext {
*/
public static final String REST_staticFilesDefault = PREFIX +
".staticFilesDefault.o";
- /**
- * Configuration property: Swagger provider class.
- *
- * <h5 class='section'>Property:</h5>
- * <ul class='spaced-list'>
- * <li><b>ID:</b> {@link
org.apache.juneau.rest.RestContext#REST_swaggerProvider REST_swaggerProvider}
- * <li><b>Name:</b> <js>"RestContext.swaggerProvider.o"</js>
- * <li><b>Data type:</b> {@link
org.apache.juneau.rest.SwaggerProvider}
- * <li><b>Default:</b> {@link
org.apache.juneau.rest.BasicSwaggerProvider}
- * <li><b>Session property:</b> <jk>false</jk>
- * <li><b>Annotations:</b>
- * <ul>
- * <li class='ja'>{@link
org.apache.juneau.rest.annotation.Rest#swaggerProvider()}
- * </ul>
- * <li><b>Methods:</b>
- * <ul>
- * <li class='jm'>{@link
org.apache.juneau.rest.RestContextBuilder#swaggerProvider(Class)}
- * <li class='jm'>{@link
org.apache.juneau.rest.RestContextBuilder#swaggerProvider(SwaggerProvider)}
- * </ul>
- *
- * <h5 class='section'>Description:</h5>
- * <p>
- * The swagger provider object or class.
- * <p>
- * This setting is inherited from the parent context.
- */
- public static final String REST_swaggerProvider = PREFIX +
".swaggerProvider.o";
-
//-------------------------------------------------------------------------------------------------------------------
// Static
//-------------------------------------------------------------------------------------------------------------------
@@ -2229,7 +2201,7 @@ public class RestContext extends BeanContext {
restChildren = createRestChildren(r, builder, bf,
builder.inner);
- swaggerProvider = createSwaggerProvider(r, cp, bf, ff,
m, vr);
+ swaggerProvider = createSwaggerProvider(r, builder, bf,
ff, m, vr);
} catch (BasicHttpException e) {
_initException = e;
@@ -3241,7 +3213,7 @@ public class RestContext extends BeanContext {
* Instantiates based on the following logic:
* <ul>
* <li>Returns the resource class itself is an instance of {@link
SwaggerProvider}.
- * <li>Looks for {@link #REST_swaggerProvider} value set via any
of the following:
+ * <li>Looks for swagger provider set via any of the following:
* <ul>
* <li>{@link
RestContextBuilder#swaggerProvider(Class)}/{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
* <li>{@link Rest#swaggerProvider()}.
@@ -3258,14 +3230,14 @@ public class RestContext extends BeanContext {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link #REST_swaggerProvider}
+ * <li class='jm'>{@link RestContextBuilder#swaggerProvider(Class)}
+ * <li class='jm'>{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
* </ul>
*
* @param resource
* The REST servlet or bean that this context defines.
- * @param properties
- * The properties of this bean.
- * <br>Consists of all properties gathered through the builder and
annotations on this class and all parent classes.
+ * @param builder
+ * The builder for this object.
* @param beanStore
* The factory used for creating beans and retrieving injected
beans.
* <br>Created by {@link
#createBeanStore(Object,ContextProperties,RestContext)}.
@@ -3275,9 +3247,9 @@ public class RestContext extends BeanContext {
* @return The info provider for this REST resource.
* @throws Exception If info provider could not be instantiated.
*/
- protected SwaggerProvider createSwaggerProvider(Object resource,
ContextProperties properties, BeanStore beanStore, FileFinder fileFinder,
Messages messages, VarResolver varResolver) throws Exception {
+ protected SwaggerProvider createSwaggerProvider(Object resource,
RestContextBuilder builder, BeanStore beanStore, FileFinder fileFinder,
Messages messages, VarResolver varResolver) throws Exception {
- SwaggerProvider x = null;
+ SwaggerProvider x = builder.swaggerProvider;
if (resource instanceof SwaggerProvider)
x = (SwaggerProvider)resource;
@@ -3286,10 +3258,7 @@ public class RestContext extends BeanContext {
x =
beanStore.getBean(SwaggerProvider.class).orElse(null);
if (x == null)
- x = properties.getIfType(REST_swaggerProvider,
SwaggerProvider.class).orElse(null);
-
- if (x == null)
- x = createSwaggerProviderBuilder(resource, properties,
beanStore, fileFinder, messages, varResolver).build();
+ x = createSwaggerProviderBuilder(resource, builder,
beanStore, fileFinder, messages, varResolver).build();
x = BeanStore
.of(beanStore, resource)
@@ -3306,12 +3275,12 @@ public class RestContext extends BeanContext {
* Instantiates the REST API builder for this REST resource.
*
* <p>
- * Allows subclasses to intercept and modify the builder used by the
{@link
#createSwaggerProvider(Object,ContextProperties,BeanStore,FileFinder,Messages,VarResolver)}
method.
+ * Allows subclasses to intercept and modify the builder used by the
{@link
#createSwaggerProvider(Object,RestContextBuilder,BeanStore,FileFinder,Messages,VarResolver)}
method.
*
* @param resource
* The REST servlet or bean that this context defines.
- * @param properties
- * The properties of this bean.
+ * @param builder
+ * The builder for this object.
* <br>Consists of all properties gathered through the builder and
annotations on this class and all parent classes.
* @param beanStore
* The factory used for creating beans and retrieving injected
beans.
@@ -3322,9 +3291,9 @@ public class RestContext extends BeanContext {
* @return The REST API builder for this REST resource.
* @throws Exception If REST API builder could not be instantiated.
*/
- protected SwaggerProviderBuilder createSwaggerProviderBuilder(Object
resource, ContextProperties properties, BeanStore beanStore, FileFinder
fileFinder, Messages messages, VarResolver varResolver) throws Exception {
+ protected SwaggerProviderBuilder createSwaggerProviderBuilder(Object
resource, RestContextBuilder builder, BeanStore beanStore, FileFinder
fileFinder, Messages messages, VarResolver varResolver) throws Exception {
- Class<? extends SwaggerProvider> c =
properties.getIfClass(REST_swaggerProvider, SwaggerProvider.class).orElse(null);
+ Class<? extends SwaggerProvider> c =
builder.swaggerProviderClass;
SwaggerProviderBuilder x = SwaggerProvider
.create()
@@ -3332,7 +3301,7 @@ public class RestContext extends BeanContext {
.fileFinder(fileFinder)
.messages(messages)
.varResolver(varResolver)
-
.jsonSchemaGenerator(createJsonSchemaGenerator(resource, properties, beanStore))
+
.jsonSchemaGenerator(createJsonSchemaGenerator(resource,
builder.getContextProperties(), beanStore))
.implClass(c);
x = BeanStore
@@ -4517,7 +4486,8 @@ public class RestContext extends BeanContext {
* Returns the Swagger provider used by this resource.
*
* <ul class='seealso'>
- * <li class='jf'>{@link RestContext#REST_swaggerProvider}
+ * <li class='jm'>{@link RestContextBuilder#swaggerProvider(Class)}
+ * <li class='jm'>{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
* </ul>
*
* @return
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index b6508e4..7947d73 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
@@ -129,6 +129,9 @@ public class RestContextBuilder extends BeanContextBuilder
implements ServletCon
Class<? extends RestChildren> childrenClass = RestChildren.class;
Class<? extends RestOpContext> opContextClass = RestOpContext.class;
Class<? extends RestOperations> operationsClass = RestOperations.class;
+ Class<? extends SwaggerProvider> swaggerProviderClass;
+ SwaggerProvider swaggerProvider;
+
List<Object> children = new ArrayList<>();
RestContextBuilder(Optional<RestContext> parentContext,
Optional<ServletConfig> servletConfig, Class<?> resourceClass, Optional<Object>
resource) throws ServletException {
@@ -2521,43 +2524,43 @@ public class RestContextBuilder extends
BeanContextBuilder implements ServletCon
}
/**
- * <i><l>RestContext</l> configuration property: </i> Swagger
provider.
+ * Swagger provider.
*
* <p>
* Class used to retrieve swagger information about a resource.
*
+ * <p>
+ * This setting is inherited from the parent context if not specified.
+ * <br>The default is {@link BasicSwaggerProvider}.
+ *
* <ul class='seealso'>
- * <li class='jf'>{@link RestContext#REST_swaggerProvider}
+ * <li class='ja'>{@link Rest#swaggerProvider}
* </ul>
*
* @param value
* The new value for this setting.
- * <br>The default is {@link BasicSwaggerProvider}.
* @return This object (for method chaining).
*/
@FluentSetter
public RestContextBuilder swaggerProvider(Class<? extends
SwaggerProvider> value) {
- return set(REST_swaggerProvider, value);
+ swaggerProviderClass = value;
+ return this;
}
/**
- * <i><l>RestContext</l> configuration property: </i> Swagger
provider.
+ * Swagger provider.
*
* <p>
* Same as {@link #swaggerProvider(Class)} except input is a
pre-constructed instance.
*
- * <ul class='seealso'>
- * <li class='jf'>{@link RestContext#REST_swaggerProvider}
- * </ul>
- *
* @param value
* The new value for this setting.
- * <br>The default is {@link BasicSwaggerProvider}.
* @return This object (for method chaining).
*/
@FluentSetter
public RestContextBuilder swaggerProvider(SwaggerProvider value) {
- return set(REST_swaggerProvider, value);
+ swaggerProvider = value;
+ return this;
}
/**
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
index 3094795..48c55e1 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestRequest.java
@@ -1530,7 +1530,8 @@ public final class RestRequest {
* </ul>
*
* <ul class='seealso'>
- * <li class='jf'>{@link
org.apache.juneau.rest.RestContext#REST_swaggerProvider}
+ * <li class='jm'>{@link RestContextBuilder#swaggerProvider(Class)}
+ * <li class='jm'>{@link
RestContextBuilder#swaggerProvider(SwaggerProvider)}
* <li class='link'>{@doc RestSwagger}
* </ul>
*
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
index 3b47db9..a6838a9 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/Rest.java
@@ -1154,12 +1154,10 @@ public @interface Rest {
Swagger swagger() default @Swagger;
/**
- * Configuration property: Swagger provider.
- *
- * TODO
+ * Swagger provider.
*
* <ul class='seealso'>
- * <li class='jf'>{@link RestContext#REST_swaggerProvider}
+ * <li class='jm'>{@link RestContextBuilder#swaggerProvider(Class)}
* </ul>
*/
Class<? extends SwaggerProvider> swaggerProvider() default
SwaggerProvider.Null.class;
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
index 7c5eefa..b2375fd 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestAnnotation.java
@@ -1053,7 +1053,7 @@ public class RestAnnotation {
b.prependTo(REST_responseProcessors,
a.responseProcessors());
b.children((Object[])a.children());
b.prependTo(REST_restOperationArgs, a.restOpArgs());
- value(a.contextClass(),
RestContext.Null.class).ifPresent(x -> b.contextClass(x));
+ value(a.contextClass()).ifPresent(x ->
b.contextClass(x));
value(a.uriContext()).ifPresent(x -> b.uriContext(x));
value(a.uriAuthority()).ifPresent(x ->
b.uriAuthority(x));
value(a.uriRelativity()).map(UriRelativity::valueOf).ifPresent(x ->
b.uriRelativity(x));
@@ -1065,10 +1065,10 @@ public class RestAnnotation {
value(a.clientVersionHeader()).ifPresent(x ->
b.clientVersionHeader(x));
b.setIf(a.beanStore() != BeanStore.Null.class,
REST_beanStore, a.beanStore());
b.setIf(a.callLogger() != RestLogger.Null.class,
REST_callLogger, a.callLogger());
- b.setIf(a.swaggerProvider() !=
SwaggerProvider.Null.class, REST_swaggerProvider, a.swaggerProvider());
- value(a.restOpContextClass(),
RestOpContext.Null.class).ifPresent(x -> b.restOpContextClass(x));
- value(a.restChildrenClass(),
RestChildren.Null.class).ifPresent(x -> b.restChildrenClass(x));
- value(a.restOperationsClass(),
RestOperations.Null.class).ifPresent(x -> b.restOperationsClass(x));
+ value(a.swaggerProvider()).ifPresent(x ->
b.swaggerProvider(x));
+ value(a.restOpContextClass()).ifPresent(x ->
b.restOpContextClass(x));
+ value(a.restChildrenClass()).ifPresent(x ->
b.restChildrenClass(x));
+ value(a.restOperationsClass()).ifPresent(x ->
b.restOperationsClass(x));
b.setIf(a.debugEnablement() !=
DebugEnablement.Null.class, REST_debugEnablement, a.debugEnablement());
value(a.disableBodyParam()).map(Boolean::parseBoolean).ifPresent(x ->
b.disableBodyParam(x));
value(a.allowedHeaderParams()).ifPresent(x ->
b.allowedHeaderParams(x));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
index 03b1cb1..9356322 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDeleteAnnotation.java
@@ -457,7 +457,7 @@ public class RestDeleteAnnotation {
b.httpMethod("delete");
b.set(REST_encoders,
merge(ConverterUtils.toType(b.peek(REST_encoders), Object[].class),
a.encoders()));
- value(a.contextClass(),
RestOpContext.Null.class).ifPresent(x -> b.contextClass(x));
+ value(a.contextClass()).ifPresent(x ->
b.contextClass(x));
stringStream(a.defaultRequestHeaders()).map(x ->
stringHeader(x)).forEach(x -> b.defaultRequestHeaders(x));
stringStream(a.defaultResponseHeaders()).map(x ->
stringHeader(x)).forEach(x -> b.defaultResponseHeaders(x));
stringStream(a.defaultRequestAttributes()).map(x ->
BasicNamedAttribute.ofPair(x)).forEach(x -> b.defaultRequestAttributes(x));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
index 593b5d2..b0f6498 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGetAnnotation.java
@@ -512,7 +512,7 @@ public class RestGetAnnotation {
b.set(REST_serializers,
merge(ConverterUtils.toType(b.peek(REST_serializers), Object[].class),
a.serializers()));
b.set(REST_encoders,
merge(ConverterUtils.toType(b.peek(REST_encoders), Object[].class),
a.encoders()));
- value(a.contextClass(),
RestOpContext.Null.class).ifPresent(x -> b.contextClass(x));
+ value(a.contextClass()).ifPresent(x ->
b.contextClass(x));
stringStream(a.produces()).map(MediaType::of).forEach(x
-> b.produces(x));
stringStream(a.defaultRequestHeaders()).map(x ->
stringHeader(x)).forEach(x -> b.defaultRequestHeaders(x));
stringStream(a.defaultResponseHeaders()).map(x ->
stringHeader(x)).forEach(x -> b.defaultResponseHeaders(x));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
index f9c668a..d59271f 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOpAnnotation.java
@@ -613,7 +613,7 @@ public class RestOpAnnotation {
b.set(REST_serializers,
merge(ConverterUtils.toType(b.peek(REST_serializers), Object[].class),
a.serializers()));
b.set(REST_parsers,
merge(ConverterUtils.toType(b.peek(REST_parsers), Object[].class),
a.parsers()));
b.set(REST_encoders,
merge(ConverterUtils.toType(b.peek(REST_encoders), Object[].class),
a.encoders()));
- value(a.contextClass(),
RestOpContext.Null.class).ifPresent(x -> b.contextClass(x));
+ value(a.contextClass()).ifPresent(x ->
b.contextClass(x));
stringStream(a.produces()).map(MediaType::of).forEach(x
-> b.produces(x));
stringStream(a.consumes()).map(MediaType::of).forEach(x
-> b.consumes(x));
stringStream(a.defaultRequestHeaders()).map(x ->
stringHeader(x)).forEach(x -> b.defaultRequestHeaders(x));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
index 0ccf4da..7a6bd92 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPostAnnotation.java
@@ -598,7 +598,7 @@ public class RestPostAnnotation {
b.set(REST_serializers,
merge(ConverterUtils.toType(b.peek(REST_serializers), Object[].class),
a.serializers()));
b.set(REST_parsers,
merge(ConverterUtils.toType(b.peek(REST_parsers), Object[].class),
a.parsers()));
b.set(REST_encoders,
merge(ConverterUtils.toType(b.peek(REST_encoders), Object[].class),
a.encoders()));
- value(a.contextClass(),
RestOpContext.Null.class).ifPresent(x -> b.contextClass(x));
+ value(a.contextClass()).ifPresent(x ->
b.contextClass(x));
stringStream(a.produces()).map(MediaType::of).forEach(x
-> b.produces(x));
stringStream(a.consumes()).map(MediaType::of).forEach(x
-> b.consumes(x));
stringStream(a.defaultRequestHeaders()).map(x ->
stringHeader(x)).forEach(x -> b.defaultRequestHeaders(x));
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
index 9d0124b..7045d3c 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPutAnnotation.java
@@ -598,7 +598,7 @@ public class RestPutAnnotation {
b.set(REST_serializers,
merge(ConverterUtils.toType(b.peek(REST_serializers), Object[].class),
a.serializers()));
b.set(REST_parsers,
merge(ConverterUtils.toType(b.peek(REST_parsers), Object[].class),
a.parsers()));
b.set(REST_encoders,
merge(ConverterUtils.toType(b.peek(REST_encoders), Object[].class),
a.encoders()));
- value(a.contextClass(),
RestOpContext.Null.class).ifPresent(x -> b.contextClass(x));
+ value(a.contextClass()).ifPresent(x ->
b.contextClass(x));
stringStream(a.produces()).map(MediaType::of).forEach(x
-> b.produces(x));
stringStream(a.consumes()).map(MediaType::of).forEach(x
-> b.consumes(x));
stringStream(a.defaultRequestHeaders()).map(x ->
stringHeader(x)).forEach(x -> b.defaultRequestHeaders(x));