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

commit a186aed62ccf85a505be1e18b25505d824b8cde3
Author: JamesBognar <[email protected]>
AuthorDate: Mon Sep 13 21:03:35 2021 -0400

    Context API refactoring.
---
 .../java/org/apache/juneau/rest/RestContext.java   |  6 ++---
 .../org/apache/juneau/rest/RestContextBuilder.java | 31 +++++++++++++---------
 2 files changed, 21 insertions(+), 16 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 152731c..586b582 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
@@ -178,7 +178,6 @@ public class RestContext extends Context {
        private final SwaggerProvider swaggerProvider;
        private final BasicHttpException initException;
        private final RestContext parentContext;
-       private final BeanStore rootBeanStore;
        private final BeanStore beanStore;
        private final UriResolution uriResolution;
        private final UriRelativity uriRelativity;
@@ -192,6 +191,7 @@ public class RestContext extends Context {
 
        final DefaultClassList defaultClasses;
        final DefaultSettingsMap defaultSettings;
+       final BeanStore rootBeanStore;
 
        // Lifecycle methods
        private final MethodInvoker[]
@@ -236,11 +236,11 @@ public class RestContext extends Context {
                        resourceClass = builder.resourceClass;
                        resource = builder.resource;
                        parentContext = builder.parentContext;
-                       rootBeanStore = builder.beanStore();
+                       rootBeanStore = builder.rootBeanStore();
                        defaultClasses = builder.defaultClasses();
                        defaultSettings = builder.defaultSettings();
 
-                       BeanStore bs = beanStore = rootBeanStore.copy().build();
+                       BeanStore bs = beanStore = builder.beanStore();
                        beanStore
                                .addBean(BeanStore.class, beanStore)
                                .addBean(RestContext.class, this)
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 5969b2a..5cb2d7b 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
@@ -126,7 +126,7 @@ public class RestContextBuilder extends ContextBuilder 
implements ServletConfig
        private DefaultClassList defaultClasses;
        private DefaultSettingsMap defaultSettings;
 
-       private BeanStore beanStore;
+       private BeanStore rootBeanStore, beanStore;
        private Config config;
        private VarResolver.Builder varResolver;
        private Logger logger;
@@ -196,6 +196,7 @@ public class RestContextBuilder extends ContextBuilder 
implements ServletConfig
                        if (parentContext != null) {
                                defaultClasses = 
parentContext.defaultClasses.copy();
                                defaultSettings = 
parentContext.defaultSettings.copy();
+                               rootBeanStore = parentContext.rootBeanStore;
                        } else {
                                defaultClasses = DefaultClassList.create();
                                defaultSettings = DefaultSettingsMap.create();
@@ -207,22 +208,17 @@ public class RestContextBuilder extends ContextBuilder 
implements ServletConfig
                                .addBean(ServletConfig.class, 
ofNullable(servletConfig).orElse(this))
                                .addBean(ServletContext.class, 
ofNullable(servletConfig).orElse(this).getServletContext());
 
-                       varResolver = createVarResolver(beanStore, 
resourceClass);
-
-                       VarResolver vr = varResolver.build();
-                       beanStore.addBean(VarResolver.class, vr);
-
-                       // Find our config file.  It's the last non-empty 
@RestResource(config).
-                       config = createConfig(beanStore, resourceClass);
-                       beanStore.addBean(Config.class, config);
+                       if (rootBeanStore == null)
+                               rootBeanStore = beanStore.copy().build();
 
-                       // Add our config file to the variable resolver.
-                       varResolver.bean(Config.class, config);
-                       vr = varResolver.build();
-                       beanStore.addBean(VarResolver.class, vr);
+                       varResolver = createVarResolver(beanStore, 
resourceClass);
+                       beanStore.add(VarResolver.class, varResolver.build());
+                       config = beanStore.add(Config.class, 
createConfig(beanStore, resourceClass));
+                       beanStore.add(VarResolver.class, 
varResolver.bean(Config.class, config).build());
 
                        // Add the servlet init parameters to our properties.
                        if (servletConfig != null) {
+                               VarResolver vr = 
beanStore.getBean(VarResolver.class).get();
                                for (Enumeration<String> ep = 
servletConfig.getInitParameterNames(); ep.hasMoreElements();) {
                                        String p = ep.nextElement();
                                        String initParam = 
servletConfig.getInitParameter(p);
@@ -423,6 +419,15 @@ public class RestContextBuilder extends ContextBuilder 
implements ServletConfig
        }
 
        /**
+        * Returns the root bean store.
+        *
+        * @return The root bean store.
+        */
+       public final BeanStore rootBeanStore() {
+               return rootBeanStore;
+       }
+
+       /**
         * Sets the bean store for this builder.
         *
         * <p>

Reply via email to