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

commit e469f0ec94e56c05e4586331c4e516afa444ecfc
Author: JamesBognar <[email protected]>
AuthorDate: Sun Sep 19 17:54:15 2021 -0400

    Context API refactoring.
---
 .../java/org/apache/juneau/rest/RestOpContext.java |  61 +------
 .../apache/juneau/rest/RestOpContextBuilder.java   | 203 +++++++++++----------
 .../org/apache/juneau/rest/annotation/Rest.java    |   2 +-
 .../juneau/rest/annotation/RestAnnotation.java     |   2 +-
 .../apache/juneau/rest/annotation/RestDelete.java  |   2 +-
 .../rest/annotation/RestDeleteAnnotation.java      |   2 +-
 .../org/apache/juneau/rest/annotation/RestGet.java |   2 +-
 .../juneau/rest/annotation/RestGetAnnotation.java  |   2 +-
 .../org/apache/juneau/rest/annotation/RestOp.java  |   2 +-
 .../juneau/rest/annotation/RestOpAnnotation.java   |   2 +-
 .../apache/juneau/rest/annotation/RestPost.java    |   2 +-
 .../juneau/rest/annotation/RestPostAnnotation.java |   2 +-
 .../org/apache/juneau/rest/annotation/RestPut.java |   2 +-
 .../juneau/rest/annotation/RestPutAnnotation.java  |   2 +-
 14 files changed, 123 insertions(+), 165 deletions(-)

diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
index 8ff1f87..b2ee601 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContext.java
@@ -52,7 +52,6 @@ import org.apache.juneau.parser.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.http.response.*;
-import org.apache.juneau.rest.guards.*;
 import org.apache.juneau.rest.logging.*;
 import org.apache.juneau.rest.util.*;
 import org.apache.juneau.serializer.*;
@@ -153,8 +152,7 @@ public class RestOpContext extends Context implements 
Comparable<RestOpContext>
                        partSerializer = bs.add(HttpPartSerializer.class, 
builder.getPartSerializer().orElse(context.getPartSerializer()));
                        partParser = bs.add(HttpPartParser.class, 
builder.getPartParser().orElse(context.getPartParser()));
                        converters = bs.add(RestConverter[].class, 
builder.converters().build().asArray());
-
-                       guards = createGuards(r, builder, bs).asArray();
+                       guards = bs.add(RestGuard[].class, 
builder.getGuards().asArray());
 
                        RestMatcherList matchers = createMatchers(r, builder, 
bs);
                        optionalMatchers = matchers.getOptionalEntries();
@@ -217,63 +215,6 @@ public class RestOpContext extends Context implements 
Comparable<RestOpContext>
        }
 
        /**
-        * Instantiates the guards for this REST resource method.
-        *
-        * <p>
-        * Instantiates based on the following logic:
-        * <ul>
-        *      <li>Looks for guards set via any of the following:
-        *              <ul>
-        *                      <li>{@link 
RestOpContextBuilder#guards(Class...)}/{@link 
RestOpContextBuilder#guards(RestGuard...)}
-        *                      <li>{@link RestOp#guards()}.
-        *                      <li>{@link Rest#guards()}.
-        *              </ul>
-        *      <li>Looks for a static or non-static <c>createGuards()</> 
method that returns <c>{@link RestGuard}[]</c> on the
-        *              resource class with any of the following arguments:
-        *              <ul>
-        *                      <li>{@link Method} - The Java method this 
context belongs to.
-        *                      <li>{@link RestContext}
-        *                      <li>{@link BeanStore}
-        *                      <li>Any {@doc RestInjection injected beans}.
-        *              </ul>
-        *      <li>Resolves it via the bean store registered in this context.
-        *      <li>Instantiates a <c>RestGuard[0]</c>.
-        * </ul>
-        *
-        * @param resource The REST resource object.
-        * @param builder The builder for this object.
-        * @param beanStore The bean store to use for retrieving and creating 
beans.
-        * @return The guards for this REST resource method.
-        * @throws Exception If guards could not be instantiated.
-        */
-       protected RestGuardList createGuards(Object resource, 
RestOpContextBuilder builder, BeanStore beanStore) throws Exception {
-
-               RestGuardList.Builder x = builder.guards.beanStore(beanStore);
-
-               Set<String> rolesDeclared = builder.rolesDeclared;
-               Set<String> roleGuard = 
ofNullable(builder.roleGuard).orElseGet(()->new LinkedHashSet<>());
-
-               for (String rg : roleGuard) {
-                       try {
-                               x.append(new RoleBasedRestGuard(rolesDeclared, 
rg));
-                       } catch (java.text.ParseException e1) {
-                               throw new ServletException(e1);
-                       }
-               }
-
-               x = BeanStore
-                       .of(beanStore, resource)
-                       .addBean(RestGuardList.Builder.class, x)
-                       .createMethodFinder(RestGuardList.Builder.class, 
resource)
-                       .find("createGuards", Method.class)
-                       .thenFind("createGuards")
-                       .withDefault(x)
-                       .run();
-
-               return x.build();
-       }
-
-       /**
         * Instantiates the method matchers for this REST resource method.
         *
         * <p>
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
index 1aec019..38160f8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestOpContextBuilder.java
@@ -14,6 +14,7 @@ package org.apache.juneau.rest;
 
 import static java.util.Arrays.*;
 import static org.apache.juneau.assertions.Assertions.*;
+import static org.apache.juneau.internal.ExceptionUtils.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 import static java.util.Optional.*;
 
@@ -36,6 +37,7 @@ import org.apache.juneau.parser.*;
 import org.apache.juneau.reflect.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.converters.*;
+import org.apache.juneau.rest.guards.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.svl.*;
 
@@ -57,6 +59,12 @@ public class RestOpContextBuilder extends ContextBuilder {
 
        private RestConverterList.Builder converters;
        private BeanContextBuilder beanContext;
+       private RestGuardList.Builder guards;
+       private EncoderGroup.Builder encoders;
+       private SerializerGroup.Builder serializers;
+       private ParserGroup.Builder parsers;
+       private HttpPartSerializer.Creator partSerializer;
+       private HttpPartParser.Creator partParser;
 
        PartList.Builder defaultFormData, defaultQueryData;
        NamedAttributeList defaultRequestAttributes;
@@ -64,12 +72,6 @@ public class RestOpContextBuilder extends ContextBuilder {
        RestMatcherList.Builder restMatchers;
        List<MediaType> produces, consumes;
        Set<String> roleGuard, rolesDeclared;
-       RestGuardList.Builder guards = RestGuardList.create();
-       EncoderGroup.Builder encoders;
-       SerializerGroup.Builder serializers;
-       ParserGroup.Builder parsers;
-       HttpPartSerializer.Creator partSerializer;
-       HttpPartParser.Creator partParser;
        boolean dotAll;
 
        Charset defaultCharset;
@@ -561,6 +563,108 @@ public class RestOpContextBuilder extends ContextBuilder {
                return v.get();
        }
 
+       
//-----------------------------------------------------------------------------------------------------------------
+       // guards
+       
//-----------------------------------------------------------------------------------------------------------------
+
+       /**
+        * Returns the builder for the {@link RestGuardList} object in the REST 
context.
+        *
+        * @return The builder for the {@link RestGuardList} object in the REST 
context.
+        */
+       public final RestGuardList.Builder guards() {
+               if (guards == null)
+                       guards = createGuards(beanStore(), resource());
+               return guards;
+       }
+
+       /**
+        * Instantiates the guards for this REST resource method.
+        *
+        * <p>
+        * Instantiates based on the following logic:
+        * <ul>
+        *      <li>Looks for guards set via any of the following:
+        *              <ul>
+        *                      <li>{@link RestOpContextBuilder#guards()}}
+        *                      <li>{@link RestOp#guards()}.
+        *                      <li>{@link Rest#guards()}.
+        *              </ul>
+        *      <li>Looks for a static or non-static <c>createGuards()</> 
method that returns <c>{@link RestGuard}[]</c> on the
+        *              resource class with any of the following arguments:
+        *              <ul>
+        *                      <li>{@link Method} - The Java method this 
context belongs to.
+        *                      <li>{@link RestContext}
+        *                      <li>{@link BeanStore}
+        *                      <li>Any {@doc RestInjection injected beans}.
+        *              </ul>
+        *      <li>Resolves it via the bean store registered in this context.
+        *      <li>Instantiates a <c>RestGuard[0]</c>.
+        * </ul>
+        *
+        * @param beanStore
+        *      The factory used for creating beans and retrieving injected 
beans.
+        * @param resource
+        *      The REST servlet/bean instance that this context is defined 
against.
+        * @return The rest converter list builder for this REST method.
+        */
+       protected RestGuardList.Builder createGuards(BeanStore beanStore, 
Supplier<?> resource) {
+
+               // Default value.
+               Value<RestGuardList.Builder> v = Value.of(
+                       RestGuardList
+                               .create()
+                               .beanStore(beanStore)
+               );
+
+               // Specify the implementation class if its set as a default.
+               defaultClasses()
+                       .get(RestGuardList.class)
+                       .ifPresent(x -> v.get().type(x));
+
+               // Replace with builder from bean store.
+               beanStore
+                       .getBean(RestGuardList.Builder.class)
+                       .map(x -> x.copy())
+                       .ifPresent(x->v.set(x));
+
+               // Replace with bean from bean store.
+               beanStore
+                       .getBean(RestGuardList.class)
+                       .ifPresent(x->v.get().impl(x));
+
+               // Replace with builder from:  public [static] 
RestGuardList.Builder createGuards(<args>)
+               beanStore
+                       .beanCreateMethodFinder(RestGuardList.Builder.class)
+                       .addBean(RestGuardList.Builder.class, v.get())
+                       .find("createGuards")
+                       .run(x -> v.set(x));
+
+               // Replace with bean from:  public [static] RestGuardList 
createConverters(<args>)
+               beanStore
+                       .beanCreateMethodFinder(RestGuardList.class)
+                       .addBean(RestGuardList.Builder.class, v.get())
+                       .find("createGuards")
+                       .run(x -> v.get().impl(x));
+
+               return v.get();
+       }
+
+       final RestGuardList getGuards() {
+               RestGuardList.Builder b = guards();
+               Set<String> roleGuard = 
ofNullable(this.roleGuard).orElseGet(()->new LinkedHashSet<>());
+
+               for (String rg : roleGuard) {
+                       try {
+                               b.append(new RoleBasedRestGuard(rolesDeclared, 
rg));
+                       } catch (java.text.ParseException e1) {
+                               throw runtimeException(e1);
+                       }
+               }
+
+               return guards.build();
+       }
+
        /**
         * When enabled, append <js>"/*"</js> to path patterns if not already 
present.
         *
@@ -872,93 +976,6 @@ public class RestOpContextBuilder extends ContextBuilder {
        }
 
        /**
-        * Guards.
-        *
-        * <p>
-        * Associates one or more {@link RestGuard RestGuards} with this method.
-        *
-        * <p>
-        * If multiple guards are specified, <b>ALL</b> guards must pass.
-        * <br>Note that this is different than matchers where only ONE matcher 
needs to pass.
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <jc>// Define a guard that only lets Billy make a request.</jc>
-        *      <jk>public</jk> BillyGuard <jk>extends</jk> RestGuard {
-        *              <ja>@Override</ja>
-        *              <jk>public boolean</jk> isRequestAllowed(RestRequest 
<jv>req</jv>) {
-        *                      <jk>return</jk> 
<jv>req</jv>.getUserPrincipal().getName().equals(<js>"Billy"</js>);
-        *              }
-        *      }
-        *
-        *      <jc>// Option #1 - Registered via annotation.</jc>
-        *      <ja>@Rest</ja>(guards={BillyGuard.<jk>class</jk>})
-        *      <jk>public class</jk> MyResource {
-        *
-        *              <jc>// Option #2 - Registered via builder passed in 
through resource constructor.</jc>
-        *              <jk>public</jk> MyResource(RestContextBuilder 
<jv>builder</jv>) <jk>throws</jk> Exception {
-        *
-        *                      <jc>// Using method on builder.</jc>
-        *                      
<jv>builder</jv>.guards(BillyGuard.<jk>class</jk>);
-        *              }
-        *
-        *              <jc>// Option #3 - Registered via builder passed in 
through init method.</jc>
-        *              <ja>@RestHook</ja>(<jsf>INIT</jsf>)
-        *              <jk>public void</jk> init(RestContextBuilder 
<jv>builder</jv>) <jk>throws</jk> Exception {
-        *                      
<jv>builder</jv>.guards(BillyGuard.<jk>class</jk>);
-        *              }
-        *
-        *              <jc>// Override at the method level.</jc>
-        *              
<ja>@RestGet</ja>(guards={SomeOtherGuard.<jk>class</jk>})
-        *              <jk>public</jk> Object myMethod() {...}
-        *      }
-        * </p>
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              When defined as a class, the implementation must have 
one of the following constructors:
-        *              <ul>
-        *                      <li><code><jk>public</jk> T(RestContext)</code>
-        *                      <li><code><jk>public</jk> T()</code>
-        *                      <li><code><jk>public static</jk> T 
<jsm>create</jsm>(RestContext)</code>
-        *                      <li><code><jk>public static</jk> T 
<jsm>create</jsm>()</code>
-        *              </ul>
-        *      <li>
-        *              Inner classes of the REST resource class are allowed.
-        * </ul>
-        *
-        * <ul class='seealso'>
-        *      <li class='link'>{@doc RestGuards}
-        *      <li class='ja'>{@link Rest#guards()}
-        *      <li class='ja'>{@link RestOp#guards()}
-        * </ul>
-        *
-        * @param values The values to add to this setting.
-        * @return This object (for method chaining).
-        * @throws IllegalArgumentException if any class does not extend from 
{@link RestGuard}.
-        */
-       @FluentSetter
-       public RestOpContextBuilder guards(Class<?>...values) {
-               guards.append(assertClassArrayArgIsType("values", 
RestGuard.class, values));
-               return this;
-       }
-
-       /**
-        * Guards.
-        *
-        * <p>
-        * Same as {@link #guards(Class...)} except input is pre-constructed 
instances.
-        *
-        * @param values The values to add to this setting.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public RestOpContextBuilder guards(RestGuard...values) {
-               guards.append(values);
-               return this;
-       }
-
-       /**
         * HTTP method name.
         *
         * <p>
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 ad85cb9..fa75d39 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
@@ -698,7 +698,7 @@ public @interface Rest {
         * Associates one or more {@link RestGuard RestGuards} with all REST 
methods defined in this class.
         *
         * <ul class='seealso'>
-        *      <li class='jm'>{@link RestOpContextBuilder#guards(Class...)}
+        *      <li class='jm'>{@link RestOpContextBuilder#guards()}
         * </ul>
         */
        Class<? extends RestGuard>[] guards() default {};
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 ee2f9be..7fde14f 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
@@ -1124,7 +1124,7 @@ public class RestAnnotation {
                        strings(a.produces()).map(MediaType::of).forEach(x -> 
b.produces(x));
                        strings(a.consumes()).map(MediaType::of).forEach(x -> 
b.consumes(x));
                        b.converters().append(a.converters());
-                       b.guards(a.guards());
+                       b.guards().append(a.guards());
                        
string(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
                        string(a.maxInput()).ifPresent(x -> b.maxInput(x));
                        strings_cdl(a.rolesDeclared()).forEach(x -> 
b.rolesDeclared(x));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
index bb39a14..a511440 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestDelete.java
@@ -366,7 +366,7 @@ public @interface RestDelete {
         * Associates one or more {@link RestGuard RestGuards} with this method.
         *
         * <ul class='seealso'>
-        *      <li class='jm'>{@link RestOpContextBuilder#guards(Class...)}
+        *      <li class='jm'>{@link RestOpContextBuilder#guards()}
         * </ul>
         */
        Class<? extends RestGuard>[] guards() default {};
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 34b947b..b0dc4dd 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
@@ -476,7 +476,7 @@ public class RestDeleteAnnotation {
                        strings(a.defaultRequestAttributes()).map(x -> 
BasicNamedAttribute.ofPair(x)).forEach(x -> b.defaultRequestAttributes(x));
                        strings(a.defaultQueryData()).map(x -> 
basicPart(x)).forEach(x -> b.defaultQueryData(x));
                        string(a.defaultAccept()).map(x -> 
accept(x)).ifPresent(x -> b.defaultRequestHeaders(x));
-                       b.guards(a.guards());
+                       b.guards().append(a.guards());
                        b.matchers(a.matchers());
                        string(a.clientVersion()).ifPresent(x -> 
b.clientVersion(x));
                        
string(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
index 3ad5a06..540e963 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestGet.java
@@ -383,7 +383,7 @@ public @interface RestGet {
         * Associates one or more {@link RestGuard RestGuards} with this method.
         *
         * <ul class='seealso'>
-        *      <li class='jm'>{@link RestOpContextBuilder#guards(Class...)}
+        *      <li class='jm'>{@link RestOpContextBuilder#guards()}
         * </ul>
         */
        Class<? extends RestGuard>[] guards() default {};
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 56a8ee1..4b2365b 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
@@ -536,7 +536,7 @@ public class RestGetAnnotation {
                        strings(a.defaultQueryData()).map(x -> 
basicPart(x)).forEach(x -> b.defaultQueryData(x));
                        string(a.defaultAccept()).map(x -> 
accept(x)).ifPresent(x -> b.defaultRequestHeaders(x));
                        b.converters().append(a.converters());
-                       b.guards(a.guards());
+                       b.guards().append(a.guards());
                        b.matchers(a.matchers());
                        string(a.clientVersion()).ifPresent(x -> 
b.clientVersion(x));
                        
string(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
index 6b10682..be71dd4 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestOp.java
@@ -439,7 +439,7 @@ public @interface RestOp {
         * Associates one or more {@link RestGuard RestGuards} with this method.
         *
         * <ul class='seealso'>
-        *      <li class='jm'>{@link RestOpContextBuilder#guards(Class...)}
+        *      <li class='jm'>{@link RestOpContextBuilder#guards()}
         * </ul>
         */
        Class<? extends RestGuard>[] guards() default {};
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 1fc5bfd..38db134 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
@@ -643,7 +643,7 @@ public class RestOpAnnotation {
                        string(a.defaultAccept()).map(x -> 
accept(x)).ifPresent(x -> b.defaultRequestHeaders(x));
                        string(a.defaultContentType()).map(x -> 
contentType(x)).ifPresent(x -> b.defaultRequestHeaders(x));
                        b.converters().append(a.converters());
-                       b.guards(a.guards());
+                       b.guards().append(a.guards());
                        b.matchers(a.matchers());
                        string(a.clientVersion()).ifPresent(x -> 
b.clientVersion(x));
                        
string(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
index 39e48cc..8f34f7b 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPost.java
@@ -440,7 +440,7 @@ public @interface RestPost {
         * Associates one or more {@link RestGuard RestGuards} with this method.
         *
         * <ul class='seealso'>
-        *      <li class='jm'>{@link RestOpContextBuilder#guards(Class...)}
+        *      <li class='jm'>{@link RestOpContextBuilder#guards()}
         * </ul>
         */
        Class<? extends RestGuard>[] guards() default {};
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 33087ab..01ea83c 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
@@ -627,7 +627,7 @@ public class RestPostAnnotation {
                        string(a.defaultAccept()).map(x -> 
accept(x)).ifPresent(x -> b.defaultRequestHeaders(x));
                        string(a.defaultContentType()).map(x -> 
contentType(x)).ifPresent(x -> b.defaultRequestHeaders(x));
                        b.converters().append(a.converters());
-                       b.guards(a.guards());
+                       b.guards().append(a.guards());
                        b.matchers(a.matchers());
                        string(a.clientVersion()).ifPresent(x -> 
b.clientVersion(x));
                        
string(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
index 8aed45b..057d5ee 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/annotation/RestPut.java
@@ -440,7 +440,7 @@ public @interface RestPut {
         * Associates one or more {@link RestGuard RestGuards} with this method.
         *
         * <ul class='seealso'>
-        *      <li class='jm'>{@link RestOpContextBuilder#guards(Class...)}
+        *      <li class='jm'>{@link RestOpContextBuilder#guards()}
         * </ul>
         */
        Class<? extends RestGuard>[] guards() default {};
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 8f9a327..725cc4b 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
@@ -627,7 +627,7 @@ public class RestPutAnnotation {
                        string(a.defaultAccept()).map(x -> 
accept(x)).ifPresent(x -> b.defaultRequestHeaders(x));
                        string(a.defaultContentType()).map(x -> 
contentType(x)).ifPresent(x -> b.defaultRequestHeaders(x));
                        b.converters().append(a.converters());
-                       b.guards(a.guards());
+                       b.guards().append(a.guards());
                        b.matchers(a.matchers());
                        string(a.clientVersion()).ifPresent(x -> 
b.clientVersion(x));
                        
string(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));

Reply via email to