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:&emsp;</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:&emsp;</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));

Reply via email to