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<String></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
&& 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* & *oo"</js> - Multiple AND'ed
arguments, ampersand syntax.
- * <li><js>"fo* && *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<String></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
&& 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: </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
&& 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: </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
&& 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* & *oo"</js> - Multiple AND'ed
arguments, ampersand syntax.
- * <li><js>"fo* && *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: </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
&& 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
&& 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* & *oo"</js> - Multiple AND'ed
arguments, ampersand syntax.
+ * <li><js>"fo* && *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));
}
}