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

commit a83785d972dac282d1a13d6aa65b1bbcbd82debe
Author: JamesBognar <[email protected]>
AuthorDate: Sun Aug 29 15:44:52 2021 -0400

    Context API refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   | 100 ++-------------------
 .../org/apache/juneau/rest/RestContextBuilder.java |  71 +++++++++++++--
 .../org/apache/juneau/rest/annotation/Rest.java    |   3 +-
 .../juneau/rest/annotation/RestAnnotation.java     |   2 +-
 .../juneau/rest/logging/BasicRestLogger.java       |   3 +-
 .../org/apache/juneau/rest/logging/RestLogger.java |   3 +-
 .../juneau/rest/logging/RestLoggerRuleBuilder.java |   3 +-
 7 files changed, 78 insertions(+), 107 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 f8e6685..8d2f9bc 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
@@ -150,91 +150,6 @@ public class RestContext extends BeanContext {
        public static final String REST_beanStore = PREFIX + ".beanStore.o";
 
        /**
-        * Configuration property:  REST call logger.
-        *
-        * <h5 class='section'>Property:</h5>
-        * <ul class='spaced-list'>
-        *      <li><b>ID:</b>  {@link 
org.apache.juneau.rest.RestContext#REST_callLogger REST_callLogger}
-        *      <li><b>Name:</b>  <js>"RestContext.callLogger.o"</js>
-        *      <li><b>Data type:</b>
-        *              <ul>
-        *                      <li>{@link 
org.apache.juneau.rest.logging.RestLogger}
-        *                      <li><c>Class&lt;{@link 
org.apache.juneau.rest.logging.RestLogger}&gt;</c>
-        *              </ul>
-        *      <li><b>Session property:</b>  <jk>false</jk>
-        *      <li><b>Annotations:</b>
-        *              <ul>
-        *                      <li class='ja'>{@link 
org.apache.juneau.rest.annotation.Rest#callLogger()}
-        *              </ul>
-        *      <li><b>Methods:</b>
-        *              <ul>
-        *                      <li class='jm'>{@link 
org.apache.juneau.rest.RestContextBuilder#callLogger(Class)}
-        *                      <li class='jm'>{@link 
org.apache.juneau.rest.RestContextBuilder#callLogger(RestLogger)}
-        *              </ul>
-        * </ul>
-        *
-        * <h5 class='section'>Description:</h5>
-        * <p>
-        * Specifies the logger to use for logging of HTTP requests and 
responses.
-        *
-        * <h5 class='section'>Example:</h5>
-        * <p class='bcode w800'>
-        *      <jc>// Our customized logger.</jc>
-        *      <jk>public class</jk> MyLogger <jk>extends</jk> BasicRestLogger 
{
-        *
-        *              <ja>@Override</ja>
-        *                      <jk>protected void</jk> log(Level 
<jv>level</jv>, String <jv>msg</jv>, Throwable <jv>e</jv>) {
-        *                      <jc>// Handle logging ourselves.</jc>
-        *              }
-        *      }
-        *
-        *      <jc>// Option #1 - Registered via annotation resolving to a 
config file setting with default value.</jc>
-        *      <ja>@Rest</ja>(callLogger=MyLogger.<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>.callLogger(MyLogger.<jk>class</jk>);
-        *
-        *                      <jc>// Same, but using property.</jc>
-        *                      
<jv>builder</jv>.set(<jsf>REST_callLogger</jsf>, MyLogger.<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>.callLogger(MyLogger.<jk>class</jk>);
-        *              }
-        *      }
-        * </p>
-        *
-        * <ul class='notes'>
-        *      <li>
-        *              The default call logger if not specified is {@link 
BasicRestLogger} unless overwritten by {@link 
RestContextBuilder#callLoggerDefault(RestLogger)}.
-        *      <li>
-        *              The resource class itself will be used if it implements 
the {@link RestLogger} interface and not
-        *              explicitly overridden via this annotation.
-        *      <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 RestLoggingAndDebugging}
-        * </ul>
-        */
-       public static final String REST_callLogger = PREFIX + ".callLogger.o";
-
-       /**
         * Configuration property:  Class-level response converters.
         *
         * <h5 class='section'>Property:</h5>
@@ -2274,7 +2189,7 @@ public class RestContext extends BeanContext {
         * Instantiates based on the following logic:
         * <ul>
         *      <li>Returns the resource class itself is an instance of 
RestLogger.
-        *      <li>Looks for {@link #REST_callLogger} value set via any of the 
following:
+        *      <li>Looks for REST call logger set via any of the following:
         *              <ul>
         *                      <li>{@link 
RestContextBuilder#callLogger(Class)}/{@link 
RestContextBuilder#callLogger(RestLogger)}
         *                      <li>{@link Rest#callLogger()}.
@@ -2293,7 +2208,8 @@ public class RestContext extends BeanContext {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link #REST_callLogger}
+        *      <li class='jm'>{@link RestContextBuilder#callLogger(Class)}
+        *      <li class='jm'>{@link RestContextBuilder#callLogger(RestLogger)}
         * </ul>
         *
         * @param resource
@@ -2316,13 +2232,11 @@ public class RestContext extends BeanContext {
 
                RestLogger x = null;
 
-               ContextProperties properties = builder.getContextProperties();
-
                if (resource instanceof RestLogger)
                        x = (RestLogger)resource;
 
                if (x == null)
-                       x = properties.getIfType(REST_callLogger, 
RestLogger.class).orElse(null);
+                       x = builder.callLogger;
 
                if (x == null)
                        x = beanStore.getBean(RestLogger.class).orElse(null);
@@ -2368,8 +2282,7 @@ public class RestContext extends BeanContext {
         */
        protected RestLoggerBuilder createCallLoggerBuilder(Object resource, 
RestContextBuilder builder, BeanStore beanStore, Logger logger, ThrownStore 
thrownStore) throws Exception {
 
-               ContextProperties properties = builder.getContextProperties();
-               Class<? extends RestLogger> c = 
properties.getIfClass(REST_callLogger, RestLogger.class).orElse(null);
+               Class<? extends RestLogger> c = builder.callLoggerClass;
 
                if (c == null)
                        c = builder.callLoggerDefaultClass;
@@ -4105,7 +4018,8 @@ public class RestContext extends BeanContext {
         * Returns the call logger to use for this resource.
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link #REST_callLogger}
+        *      <li class='jm'>{@link RestContextBuilder#callLogger(Class)}
+        *      <li class='jm'>{@link RestContextBuilder#callLogger(RestLogger)}
         * </ul>
         *
         * @return
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/RestContextBuilder.java
index b267816..d8893db 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
@@ -135,6 +135,9 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
        RestLogger callLoggerDefault;
        Class<? extends RestLogger> callLoggerDefaultClass;
 
+       RestLogger callLogger;
+       Class<? extends RestLogger> callLoggerClass;
+
        @SuppressWarnings("unchecked")
        ResponseProcessorList.Builder responseProcessors = 
ResponseProcessorList.create().append(
                ReaderProcessor.class,
@@ -697,14 +700,62 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
        }
 
        /**
-        * <i><l>RestContext</l> configuration property:&emsp;</i>  REST call 
logger.
+        * REST call logger.
         *
         * <p>
         * Specifies the logger to use for logging of HTTP requests and 
responses.
         *
+        * <h5 class='section'>Example:</h5>
+        * <p class='bcode w800'>
+        *      <jc>// Our customized logger.</jc>
+        *      <jk>public class</jk> MyLogger <jk>extends</jk> BasicRestLogger 
{
+        *
+        *              <ja>@Override</ja>
+        *                      <jk>protected void</jk> log(Level 
<jv>level</jv>, String <jv>msg</jv>, Throwable <jv>e</jv>) {
+        *                      <jc>// Handle logging ourselves.</jc>
+        *              }
+        *      }
+        *
+        *      <jc>// Option #1 - Registered via annotation resolving to a 
config file setting with default value.</jc>
+        *      <ja>@Rest</ja>(callLogger=MyLogger.<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>.callLogger(MyLogger.<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>.callLogger(MyLogger.<jk>class</jk>);
+        *              }
+        *      }
+        * </p>
+        *
+        * <ul class='notes'>
+        *      <li>
+        *              The default call logger if not specified is {@link 
BasicRestLogger} unless overwritten by {@link 
RestContextBuilder#callLoggerDefault(RestLogger)}.
+        *      <li>
+        *              The resource class itself will be used if it implements 
the {@link RestLogger} interface and not
+        *              explicitly overridden via this annotation.
+        *      <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 RestLoggingAndDebugging}
-        *      <li class='jf'>{@link RestContext#REST_callLogger}
+        *      <li class='ja'>{@link Rest#callLogger()}
         * </ul>
         *
         * @param value
@@ -714,18 +765,19 @@ public class RestContextBuilder extends 
BeanContextBuilder implements ServletCon
         */
        @FluentSetter
        public RestContextBuilder callLogger(Class<? extends RestLogger> value) 
{
-               return set(REST_callLogger, value);
+               callLoggerClass = value;
+               return this;
        }
 
        /**
-        * <i><l>RestContext</l> configuration property:&emsp;</i>  REST call 
logger.
+        * REST call logger.
         *
         * <p>
-        * Specifies the logger to use for logging of HTTP requests and 
responses.
+        * Same as {@link #callLogger(Class)} but specifies an 
already-instantiated call logger.
         *
         * <ul class='seealso'>
         *      <li class='link'>{@doc RestLoggingAndDebugging}
-        *      <li class='jf'>{@link RestContext#REST_callLogger}
+        *      <li class='ja'>{@link Rest#callLogger()}
         * </ul>
         *
         * @param value
@@ -735,7 +787,8 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
         */
        @FluentSetter
        public RestContextBuilder callLogger(RestLogger value) {
-               return set(REST_callLogger, value);
+               callLogger = value;
+               return this;
        }
 
        /**
@@ -743,7 +796,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
         *
         * <p>
         * The default logger to use if one is not specified.
-        * 
+        *
         * <p>
         * This logger is inherited by child resources if not specified on 
those resources.
         *
@@ -766,7 +819,7 @@ public class RestContextBuilder extends BeanContextBuilder 
implements ServletCon
         *
         * <p>
         * This logger is inherited by child resources if not specified on 
those resources.
-        * 
+        *
         * @param value
         *      The new value for this setting.
         *      <br>The default is {@link BasicRestLogger}.
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 9de435a..70c2b0b 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
@@ -176,7 +176,8 @@ public @interface Rest {
         * </ul>
         *
         * <ul class='seealso'>
-        *      <li class='jf'>{@link RestContext#REST_callLogger}
+        *      <li class='jm'>{@link RestContextBuilder#callLogger(Class)}
+        *      <li class='jm'>{@link RestContextBuilder#callLogger(RestLogger)}
         *      <li class='link'>{@doc RestLoggingAndDebugging}
         * </ul>
         */
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 559649e..3f64b66 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
@@ -1064,7 +1064,7 @@ public class RestAnnotation {
                        value(a.path()).ifPresent(x -> b.path(x));
                        value(a.clientVersionHeader()).ifPresent(x -> 
b.clientVersionHeader(x));
                        b.setIf(a.beanStore() != BeanStore.Null.class, 
REST_beanStore, a.beanStore());
-                       b.setIf(a.callLogger() != RestLogger.Null.class, 
REST_callLogger, a.callLogger());
+                       value(a.callLogger()).ifPresent(x -> b.callLogger(x));
                        value(a.swaggerProvider()).ifPresent(x -> 
b.swaggerProvider(x));
                        value(a.restOpContextClass()).ifPresent(x -> 
b.restOpContextClass(x));
                        value(a.restChildrenClass()).ifPresent(x -> 
b.restChildrenClass(x));
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
index 9509ad6..d4ed768 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/BasicRestLogger.java
@@ -82,7 +82,8 @@ import org.apache.juneau.rest.util.*;
  * </p>
  *
  * <ul class='seealso'>
- *     <li class='jf'>{@link RestContext#REST_callLogger}
+ *     <li class='jm'>{@link RestContextBuilder#callLogger(Class)}
+ *     <li class='jm'>{@link RestContextBuilder#callLogger(RestLogger)}
  *     <li class='jm'>{@link RestContextBuilder#callLoggerDefault(Class)}
  *     <li class='jm'>{@link RestContextBuilder#callLoggerDefault(RestLogger)}
  *     <li class='jf'>{@link RestContext#REST_debug}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLogger.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLogger.java
index cf0d668..f3fb5d8 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLogger.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLogger.java
@@ -37,7 +37,8 @@ import org.apache.juneau.rest.annotation.*;
  * </ul>
  *
  * <ul class='seealso'>
- *     <li class='jf'>{@link RestContext#REST_callLogger}
+ *     <li class='jm'>{@link RestContextBuilder#callLogger(Class)}
+ *     <li class='jm'>{@link RestContextBuilder#callLogger(RestLogger)}
  *     <li class='jm'>{@link RestContextBuilder#callLoggerDefault(Class)}
  *     <li class='jm'>{@link RestContextBuilder#callLoggerDefault(RestLogger)}
  *     <li class='jf'>{@link RestContext#REST_debug}
diff --git 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLoggerRuleBuilder.java
 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLoggerRuleBuilder.java
index 8fb4b79..57e752c 100644
--- 
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLoggerRuleBuilder.java
+++ 
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/logging/RestLoggerRuleBuilder.java
@@ -27,7 +27,8 @@ import org.apache.juneau.rest.*;
  * See the {@link BasicRestLogger} for usage.
  *
  * <ul class='seealso'>
- *     <li class='jf'>{@link RestContext#REST_callLogger}
+ *     <li class='jm'>{@link RestContextBuilder#callLogger(Class)}
+ *     <li class='jm'>{@link RestContextBuilder#callLogger(RestLogger)}
  *     <li class='link'>{@doc RestLoggingAndDebugging}
  * </ul>
  */

Reply via email to