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

commit 62e23b4f140c2b7c6e8beca95e7af780abb422a7
Author: JamesBognar <[email protected]>
AuthorDate: Sun Aug 29 12:56:07 2021 -0400

    Context API refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   | 119 ---------------------
 .../org/apache/juneau/rest/RestContextBuilder.java |  82 --------------
 .../java/org/apache/juneau/rest/RestOpContext.java |  12 +--
 .../apache/juneau/rest/RestOpContextBuilder.java   |  93 ++++++++++++++++
 .../org/apache/juneau/rest/annotation/Rest.java    |  14 ++-
 .../juneau/rest/annotation/RestAnnotation.java     |   4 +-
 .../apache/juneau/rest/annotation/RestDelete.java  |   6 +-
 .../rest/annotation/RestDeleteAnnotation.java      |   4 +-
 .../org/apache/juneau/rest/annotation/RestGet.java |   6 +-
 .../juneau/rest/annotation/RestGetAnnotation.java  |   4 +-
 .../org/apache/juneau/rest/annotation/RestOp.java  |   6 +-
 .../juneau/rest/annotation/RestOpAnnotation.java   |   4 +-
 .../apache/juneau/rest/annotation/RestPost.java    |   6 +-
 .../juneau/rest/annotation/RestPostAnnotation.java |   4 +-
 .../org/apache/juneau/rest/annotation/RestPut.java |   6 +-
 .../juneau/rest/annotation/RestPutAnnotation.java  |   4 +-
 16 files changed, 136 insertions(+), 238 deletions(-)

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 98b97a3..45c3396 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
@@ -1592,125 +1592,6 @@ public class RestContext extends BeanContext {
        public static final String REST_restOperationArgs = PREFIX + 
".restOperationArgs.lo";
 
        /**
-        * Configuration property:  Role guard.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.rest.RestContext#REST_roleGuard REST_roleGuard}
-        *      <li><b>Name:</b>  <js>"RestContext.roleGuard.ss"</js>
-        *      <li><b>Data type:</b>  <c>Set&lt;String&gt;</c>
-        *      <li><b>System property:</b>  <c>RestContext.roleGuard</c>
-        *      <li><b>Environment variable:</b>  <c>RESTCONTEXT_ROLEGUARD</c>
-        *      <li><b>Default:</b>  empty set
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.Rest#roleGuard()}
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.RestOp#roleGuard()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.rest.RestContextBuilder#roleGuard(String)}
-        *              </ul>
-        * </ul>
-        *
-        * <h5 class='section'>Description:</h5>
-        * <p>
-        * An expression defining if a user with the specified roles are 
allowed to access methods on this class.
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <ja>@Rest</ja>(
-        *              path=<js>"/foo"</js>,
-        *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
-        *      )
-        *      <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
-        *              ...
-        *      }
-        * </p>
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Supports any of the following expression constructs:
-        *              <ul>
-        *                      <li><js>"foo"</js> - Single arguments.
-        *                      <li><js>"foo,bar,baz"</js> - Multiple OR'ed 
arguments.
-        *                      <li><js>"foo | bar | bqz"</js> - Multiple OR'ed 
arguments, pipe syntax.
-        *                      <li><js>"foo || bar || bqz"</js> - Multiple 
OR'ed arguments, Java-OR syntax.
-        *                      <li><js>"fo*"</js> - Patterns including 
<js>'*'</js> and <js>'?'</js>.
-        *                      <li><js>"fo* &amp; *oo"</js> - Multiple AND'ed 
arguments, ampersand syntax.
-        *                      <li><js>"fo* &amp;&amp; *oo"</js> - Multiple 
AND'ed arguments, Java-AND syntax.
-        *                      <li><js>"fo* || (*oo || bar)"</js> - 
Parenthesis.
-        *              </ul>
-        *      <li>
-        *              AND operations take precedence over OR operations (as 
expected).
-        *      <li>
-        *              Whitespace is ignored.
-        *      <li>
-        *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
-        *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link Rest#rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
-        *      <li>
-        *              Supports {@doc RestSvlVariables}
-        *              (e.g. <js>"$L{my.localized.variable}"</js>).
-        *      <li>
-        *              Role guards defined at both the class and method level 
must both pass.
-        * </ul>
-        *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_roleGuard}
-        * </ul>
-        */
-       public static final String REST_roleGuard = PREFIX + ".roleGuard.ss";
-
-       /**
-        * Configuration property:  Declared roles.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.rest.RestContext#REST_rolesDeclared REST_rolesDeclared}
-        *      <li><b>Name:</b>  <js>"RestContext.rolesDeclared.ss"</js>
-        *      <li><b>Data type:</b>  <c>Set&lt;String&gt;</c>
-        *      <li><b>System property:</b>  <c>RestContext.rolesDeclared</c>
-        *      <li><b>Environment variable:</b>  
<c>RESTCONTEXT_ROLESDECLARED</c>
-        *      <li><b>Default:</b>  empty list
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.Rest#rolesDeclared()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.rest.RestContextBuilder#rolesDeclared(String...)}
-        *              </ul>
-        * </ul>
-        *
-        *
-        * <h5 class='section'>Description:</h5>
-        * <p>
-        * A comma-delimited list of all possible user roles.
-        *
-        * <p>
-        * Used in conjunction with {@link 
RestContextBuilder#roleGuard(String)} is used with patterns.
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <ja>@Rest</ja>(
-        *              
rolesDeclared=<js>"ROLE_ADMIN,ROLE_READ_WRITE,ROLE_READ_ONLY,ROLE_SPECIAL"</js>,
-        *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
-        *      )
-        *      <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
-        *              ...
-        *      }
-        * </p>
-        *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
-        * </ul>
-        */
-       public static final String REST_rolesDeclared = PREFIX + 
".rolesDeclared.ss";
-
-       /**
         * Configuration property:  Serializers.
         *
         * <h5 class='section'>Property:</h5>
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 7947d73..5bb24b5 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
@@ -2160,88 +2160,6 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
        }
 
        /**
-        * <i><l>RestContext</l> configuration property:&emsp;</i>  Declared 
roles.
-        *
-        * <p>
-        * A comma-delimited list of all possible user roles.
-        *
-        * <p>
-        * Used in conjunction with {@link 
RestContextBuilder#roleGuard(String)} is used with patterns.
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <ja>@Rest</ja>(
-        *              
rolesDeclared=<js>"ROLE_ADMIN,ROLE_READ_WRITE,ROLE_READ_ONLY,ROLE_SPECIAL"</js>,
-        *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
-        *      )
-        *      <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
-        *              ...
-        *      }
-        * </p>
-        *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
-        * </ul>
-        * @param values The values to add to this setting.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public RestContextBuilder rolesDeclared(String...values) {
-               return addTo(REST_rolesDeclared, values);
-       }
-
-       /**
-        * <i><l>RestContext</l> configuration property:&emsp;</i>  Role guard.
-        *
-        * <p>
-        * An expression defining if a user with the specified roles are 
allowed to access methods on this class.
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <ja>@Rest</ja>(
-        *              path=<js>"/foo"</js>,
-        *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
-        *      )
-        *      <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
-        *              ...
-        *      }
-        * </p>
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              Supports any of the following expression constructs:
-        *              <ul>
-        *                      <li><js>"foo"</js> - Single arguments.
-        *                      <li><js>"foo,bar,baz"</js> - Multiple OR'ed 
arguments.
-        *                      <li><js>"foo | bar | bqz"</js> - Multiple OR'ed 
arguments, pipe syntax.
-        *                      <li><js>"foo || bar || bqz"</js> - Multiple 
OR'ed arguments, Java-OR syntax.
-        *                      <li><js>"fo*"</js> - Patterns including 
<js>'*'</js> and <js>'?'</js>.
-        *                      <li><js>"fo* &amp; *oo"</js> - Multiple AND'ed 
arguments, ampersand syntax.
-        *                      <li><js>"fo* &amp;&amp; *oo"</js> - Multiple 
AND'ed arguments, Java-AND syntax.
-        *                      <li><js>"fo* || (*oo || bar)"</js> - 
Parenthesis.
-        *              </ul>
-        *      <li>
-        *              AND operations take precedence over OR operations (as 
expected).
-        *      <li>
-        *              Whitespace is ignored.
-        *      <li>
-        *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
-        *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link Rest#rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
-        *      <li>
-        *              Supports {@doc RestSvlVariables}
-        *              (e.g. <js>"$L{my.localized.variable}"</js>).
-        * </ul>
-        *
-        * @param value The values to add to this setting.
-        * @return This object (for method chaining).
-        */
-       @FluentSetter
-       public RestContextBuilder roleGuard(String value) {
-               return addTo(REST_roleGuard, value);
-       }
-
-       /**
         * <i><l>RestContext</l> configuration property:&emsp;</i>  Serializer 
listener.
         *
         * <p>
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 5813cbb..a52b716 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
@@ -165,7 +165,7 @@ public class RestOpContext extends BeanContext implements 
Comparable<RestOpConte
                        converters = createConverters(r, cp, bs).asArray();
                        bs.addBean(RestConverter[].class, converters);
 
-                       guards = createGuards(r, cp, bs).asArray();
+                       guards = createGuards(r, builder, bs).asArray();
                        bs.addBean(RestGuard[].class, guards);
 
                        RestMatcherList matchers = createMatchers(r, builder, 
bs);
@@ -298,23 +298,23 @@ public class RestOpContext extends BeanContext implements 
Comparable<RestOpConte
         * </ul>
         *
         * @param resource The REST resource object.
-        * @param properties xxx
+        * @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.
         * @see RestContext#REST_guards
         */
-       protected RestGuardList createGuards(Object resource, ContextProperties 
properties, BeanStore beanStore) throws Exception {
+       protected RestGuardList createGuards(Object resource, 
RestOpContextBuilder builder, BeanStore beanStore) throws Exception {
 
                RestGuardList x = RestGuardList.create();
 
-               x.append(properties.getInstanceArray(REST_guards, 
RestGuard.class, beanStore).orElse(new RestGuard[0]));
+               
x.append(builder.getContextProperties().getInstanceArray(REST_guards, 
RestGuard.class, beanStore).orElse(new RestGuard[0]));
 
                if (x.isEmpty())
                        x = beanStore.getBean(RestGuardList.class).orElse(x);
 
-               Set<String> rolesDeclared = 
properties.getSet(REST_rolesDeclared, String.class).orElse(null);
-               Set<String> roleGuard = properties.getSet(REST_roleGuard, 
String.class).orElse(Collections.emptySet());
+               Set<String> rolesDeclared = builder.rolesDeclared;
+               Set<String> roleGuard = 
ofNullable(builder.roleGuard).orElseGet(()->new LinkedHashSet<>());
 
                for (String rg : roleGuard) {
                        try {
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 5b9e916..c30f999 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
@@ -12,11 +12,13 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest;
 
+import static java.util.Arrays.*;
 import static org.apache.juneau.rest.HttpRuntimeException.*;
 import java.lang.annotation.*;
 import java.util.*;
 import org.apache.http.*;
 import org.apache.juneau.*;
+import org.apache.juneau.collections.*;
 import org.apache.juneau.cp.*;
 import org.apache.juneau.http.header.*;
 import org.apache.juneau.http.part.*;
@@ -45,6 +47,7 @@ public class RestOpContextBuilder extends BeanContextBuilder {
        HeaderListBuilder defaultRequestHeaders, defaultResponseHeaders;
        RestMatcherListBuilder restMatchers;
        List<MediaType> produces, consumes;
+       Set<String> roleGuard, rolesDeclared;
 
        Charset defaultCharset;
        Long maxInput;
@@ -669,6 +672,96 @@ public class RestOpContextBuilder extends 
BeanContextBuilder {
        }
 
        /**
+        * Declared roles.
+        *
+        * <p>
+        * A comma-delimited list of all possible user roles.
+        *
+        * <p>
+        * Used in conjunction with {@link 
RestOpContextBuilder#roleGuard(String)} is used with patterns.
+        *
+        * <h5 class='section'>Example:</h5>
+        * <p class='bcode w800'>
+        *      <ja>@Rest</ja>(
+        *              
rolesDeclared=<js>"ROLE_ADMIN,ROLE_READ_WRITE,ROLE_READ_ONLY,ROLE_SPECIAL"</js>,
+        *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
+        *      )
+        *      <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
+        *              ...
+        *      }
+        * </p>
+        *
+        * <ul class='seealso'>
+        *      <li class='ja'>{@link Rest#rolesDeclared}
+        * </ul>
+        *
+        * @param values The values to add to this setting.
+        * @return This object (for method chaining).
+        */
+       @FluentSetter
+       public RestOpContextBuilder rolesDeclared(String...values) {
+               if (rolesDeclared == null)
+                       rolesDeclared = ASet.of(values);
+               else
+                       rolesDeclared.addAll(asList(values));
+               return this;
+       }
+
+       /**
+        * Role guard.
+        *
+        * <p>
+        * An expression defining if a user with the specified roles are 
allowed to access methods on this class.
+        *
+        * <h5 class='section'>Example:</h5>
+        * <p class='bcode w800'>
+        *      <ja>@Rest</ja>(
+        *              path=<js>"/foo"</js>,
+        *              roleGuard=<js>"ROLE_ADMIN || (ROLE_READ_WRITE 
&amp;&amp; ROLE_SPECIAL)"</js>
+        *      )
+        *      <jk>public class</jk> MyResource <jk>extends</jk> RestServlet {
+        *              ...
+        *      }
+        * </p>
+        *
+        * <ul class='notes'>
+        *      <li>
+        *              Supports any of the following expression constructs:
+        *              <ul>
+        *                      <li><js>"foo"</js> - Single arguments.
+        *                      <li><js>"foo,bar,baz"</js> - Multiple OR'ed 
arguments.
+        *                      <li><js>"foo | bar | bqz"</js> - Multiple OR'ed 
arguments, pipe syntax.
+        *                      <li><js>"foo || bar || bqz"</js> - Multiple 
OR'ed arguments, Java-OR syntax.
+        *                      <li><js>"fo*"</js> - Patterns including 
<js>'*'</js> and <js>'?'</js>.
+        *                      <li><js>"fo* &amp; *oo"</js> - Multiple AND'ed 
arguments, ampersand syntax.
+        *                      <li><js>"fo* &amp;&amp; *oo"</js> - Multiple 
AND'ed arguments, Java-AND syntax.
+        *                      <li><js>"fo* || (*oo || bar)"</js> - 
Parenthesis.
+        *              </ul>
+        *      <li>
+        *              AND operations take precedence over OR operations (as 
expected).
+        *      <li>
+        *              Whitespace is ignored.
+        *      <li>
+        *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
+        *      <li>
+        *              If patterns are used, you must specify the list of 
declared roles using {@link Rest#rolesDeclared()} or {@link 
RestOpContextBuilder#rolesDeclared(String...)}.
+        *      <li>
+        *              Supports {@doc RestSvlVariables}
+        *              (e.g. <js>"$L{my.localized.variable}"</js>).
+        * </ul>
+        *
+        * @param value The values to add to this setting.
+        * @return This object (for method chaining).
+        */
+       @FluentSetter
+       public RestOpContextBuilder roleGuard(String value) {
+               if (roleGuard == null)
+                       roleGuard = ASet.of(value);
+               else
+                       roleGuard.add(value);
+               return this;
+       }
+       /**
         * Supported content media types.
         *
         * <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 a6838a9..a426707 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
@@ -986,6 +986,9 @@ public @interface Rest {
         * <p>
         * An expression defining if a user with the specified roles are 
allowed to access methods on this class.
         *
+        * <p>
+        * This is a shortcut for specifying {@link RestOp#roleGuard()} on all 
the REST operations on a class.
+        *
         * <h5 class='section'>Example:</h5>
         * <p class='bcode w800'>
         *      <ja>@Rest</ja>(
@@ -1017,14 +1020,14 @@ public @interface Rest {
         *      <li>
         *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
         *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
+        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestOpContextBuilder#rolesDeclared(String...)}.
         *      <li>
         *              Supports {@doc RestSvlVariables}
         *              (e.g. <js>"$L{my.localized.variable}"</js>).
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_roleGuard}
+        *      <li class='jm'>{@link RestOpContextBuilder#roleGuard(String)}
         * </ul>
         */
        String roleGuard() default "";
@@ -1038,6 +1041,9 @@ public @interface Rest {
         * <p>
         * Used in conjunction with {@link #roleGuard()} is used with patterns.
         *
+        * <p>
+        * This is a shortcut for specifying {@link RestOp#rolesDeclared()} on 
all the REST operations on a class.
+        *
         * <h5 class='section'>Example:</h5>
         * <p class='bcode w800'>
         *      <ja>@Rest</ja>(
@@ -1049,8 +1055,8 @@ public @interface Rest {
         *      }
         * </p>
         *
-        * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
+        * <ul class='seealso'>Builder
+        *      <li class='jm'>{@link 
RestOpContextBuilder#rolesDeclared(String...)}
         * </ul>
         */
        String rolesDeclared() 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 b2375fd..d2d5a44 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
@@ -1109,8 +1109,8 @@ public class RestAnnotation {
                        b.prependTo(REST_guards, reverse(a.guards()));
                        
value(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
                        value(a.maxInput()).ifPresent(x -> b.maxInput(x));
-                       cdStream(a.rolesDeclared()).forEach(x -> 
b.addTo(REST_rolesDeclared, x));
-                       b.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
+                       cdStream(a.rolesDeclared()).forEach(x -> 
b.rolesDeclared(x));
+                       value(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                }
        }
 }
\ No newline at end of file
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 4310381..33156e8 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
@@ -424,7 +424,7 @@ public @interface RestDelete {
         *      <li>
         *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
         *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
+        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestOpContextBuilder#rolesDeclared(String...)}.
         *      <li>
         *              Supports {@doc RestSvlVariables}
         *              (e.g. <js>"$L{my.localized.variable}"</js>).
@@ -433,7 +433,7 @@ public @interface RestDelete {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_roleGuard}
+        *      <li class='jm'>{@link RestOpContextBuilder#roleGuard(String)}
         * </ul>
         */
        String roleGuard() default "";
@@ -462,7 +462,7 @@ public @interface RestDelete {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
+        *      <li class='jm'>{@link 
RestOpContextBuilder#rolesDeclared(String...)}
         * </ul>
         */
        String rolesDeclared() 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 9356322..b01d6ee 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
@@ -469,8 +469,8 @@ public class RestDeleteAnnotation {
                        
value(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
                        stringStream(a.path()).forEach(x -> b.path(x));
                        value(a.value()).ifPresent(x -> b.path(x));
-                       cdStream(a.rolesDeclared()).forEach(x -> 
b.addTo(REST_rolesDeclared, x));
-                       b.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
+                       cdStream(a.rolesDeclared()).forEach(x -> 
b.rolesDeclared(x));
+                       value(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
value(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(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 aef77f1..a3cfb9d 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
@@ -457,7 +457,7 @@ public @interface RestGet {
         *      <li>
         *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
         *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
+        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestOpContextBuilder#rolesDeclared(String...)}.
         *      <li>
         *              Supports {@doc RestSvlVariables}
         *              (e.g. <js>"$L{my.localized.variable}"</js>).
@@ -466,7 +466,7 @@ public @interface RestGet {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_roleGuard}
+        *      <li class='jm'>{@link RestOpContextBuilder#roleGuard(String)}
         * </ul>
         */
        String roleGuard() default "";
@@ -495,7 +495,7 @@ public @interface RestGet {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
+        *      <li class='jm'>{@link 
RestOpContextBuilder#rolesDeclared(String...)}
         * </ul>
         */
        String rolesDeclared() 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 b0f6498..5e162ed 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
@@ -526,8 +526,8 @@ public class RestGetAnnotation {
                        
value(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
                        stringStream(a.path()).forEach(x -> b.path(x));
                        value(a.value()).ifPresent(x -> b.path(x));
-                       cdStream(a.rolesDeclared()).forEach(x -> 
b.addTo(REST_rolesDeclared, x));
-                       b.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
+                       cdStream(a.rolesDeclared()).forEach(x -> 
b.rolesDeclared(x));
+                       value(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
value(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(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 185b0bd..7b1dc97 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
@@ -659,7 +659,7 @@ public @interface RestOp {
         *      <li>
         *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
         *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
+        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestOpContextBuilder#rolesDeclared(String...)}.
         *      <li>
         *              Supports {@doc RestSvlVariables}
         *              (e.g. <js>"$L{my.localized.variable}"</js>).
@@ -668,7 +668,7 @@ public @interface RestOp {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_roleGuard}
+        *      <li class='jm'>{@link RestOpContextBuilder#roleGuard(String)}
         * </ul>
         */
        String roleGuard() default "";
@@ -698,7 +698,7 @@ public @interface RestOp {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
+        *      <li class='jm'>{@link 
RestOpContextBuilder#rolesDeclared(String...)}
         * </ul>
         */
        String rolesDeclared() 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 d59271f..6fffef0 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
@@ -630,8 +630,8 @@ public class RestOpAnnotation {
                        
value(a.defaultCharset()).map(Charset::forName).ifPresent(x -> 
b.defaultCharset(x));
                        value(a.maxInput()).ifPresent(x -> b.maxInput(x));
                        stringStream(a.path()).forEach(x -> b.path(x));
-                       cdStream(a.rolesDeclared()).forEach(x -> 
b.addTo(REST_rolesDeclared, x));
-                       b.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
+                       cdStream(a.rolesDeclared()).forEach(x -> 
b.rolesDeclared(x));
+                       value(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
 
                        value(a.method()).ifPresent(x -> b.httpMethod(x));
                        
value(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(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 60a353c..6e10b81 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
@@ -584,7 +584,7 @@ public @interface RestPost {
         *      <li>
         *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
         *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
+        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestOpContextBuilder#rolesDeclared(String...)}.
         *      <li>
         *              Supports {@doc RestSvlVariables}
         *              (e.g. <js>"$L{my.localized.variable}"</js>).
@@ -593,7 +593,7 @@ public @interface RestPost {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_roleGuard}
+        *      <li class='jm'>{@link RestOpContextBuilder#roleGuard(String)}
         * </ul>
         */
        String roleGuard() default "";
@@ -622,7 +622,7 @@ public @interface RestPost {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
+        *      <li class='jm'>{@link 
RestOpContextBuilder#rolesDeclared(String...)}
         * </ul>
         */
        String rolesDeclared() 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 7a6bd92..ce348f9 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
@@ -616,8 +616,8 @@ public class RestPostAnnotation {
                        value(a.maxInput()).ifPresent(x -> b.maxInput(x));
                        stringStream(a.path()).forEach(x -> b.path(x));
                        value(a.value()).ifPresent(x -> b.path(x));
-                       cdStream(a.rolesDeclared()).forEach(x -> 
b.addTo(REST_rolesDeclared, x));
-                       b.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
+                       cdStream(a.rolesDeclared()).forEach(x -> 
b.rolesDeclared(x));
+                       value(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
value(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(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 f8207f9..cb675c7 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
@@ -584,7 +584,7 @@ public @interface RestPut {
         *      <li>
         *              <jk>null</jk> or empty expressions always match as 
<jk>false</jk>.
         *      <li>
-        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestContext#REST_rolesDeclared}.
+        *              If patterns are used, you must specify the list of 
declared roles using {@link #rolesDeclared()} or {@link 
RestOpContextBuilder#rolesDeclared(String...)}.
         *      <li>
         *              Supports {@doc RestSvlVariables}
         *              (e.g. <js>"$L{my.localized.variable}"</js>).
@@ -593,7 +593,7 @@ public @interface RestPut {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_roleGuard}
+        *      <li class='jm'>{@link RestOpContextBuilder#roleGuard(String)}
         * </ul>
         */
        String roleGuard() default "";
@@ -622,7 +622,7 @@ public @interface RestPut {
         * </p>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_rolesDeclared}
+        *      <li class='jm'>{@link 
RestOpContextBuilder#rolesDeclared(String...)}
         * </ul>
         */
        String rolesDeclared() 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 7045d3c..bb5975b 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
@@ -616,8 +616,8 @@ public class RestPutAnnotation {
                        value(a.maxInput()).ifPresent(x -> b.maxInput(x));
                        stringStream(a.path()).forEach(x -> b.path(x));
                        value(a.value()).ifPresent(x -> b.path(x));
-                       cdStream(a.rolesDeclared()).forEach(x -> 
b.addTo(REST_rolesDeclared, x));
-                       b.addToIfNotEmpty(REST_roleGuard, 
string(a.roleGuard()));
+                       cdStream(a.rolesDeclared()).forEach(x -> 
b.rolesDeclared(x));
+                       value(a.roleGuard()).ifPresent(x -> b.roleGuard(x));
                        
value(a.debug()).map(Enablement::fromString).ifPresent(x -> b.debug(x));
                }
        }

Reply via email to