This is an automated email from the ASF dual-hosted git repository.

thiagohp pushed a commit to branch better-page-invalidation
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git

commit 5f2c5f813ee96c88bccb2c7224c9e87704845661
Author: Thiago H. de Paula Figueiredo <thi...@arsmachina.com.br>
AuthorDate: Fri Jun 9 20:55:39 2023 -0300

    TAP5-2742: preprocessing page classloader context when possible
---
 .../internal/services/PageSourceImpl.java          |  2 +-
 .../apache/tapestry5/modules/PageLoadModule.java   | 22 ++++++++++++++++++++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
index ebf86306e..f0c5936dd 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
@@ -232,7 +232,7 @@ public class PageSourceImpl implements PageSource
     }
 
     private void preprocessPageClassLoaderContexts(String className, final 
List<String> pageDependencies) {
-        for (int i = 0; i < 2; i++)
+        for (int i = 0; i < 5; i++)
         {
             pageClassloaderContextManager.get(className);
             for (String pageClassName : pageDependencies)
diff --git 
a/tapestry-core/src/main/java/org/apache/tapestry5/modules/PageLoadModule.java 
b/tapestry-core/src/main/java/org/apache/tapestry5/modules/PageLoadModule.java
index a55a05833..a431900f5 100644
--- 
a/tapestry-core/src/main/java/org/apache/tapestry5/modules/PageLoadModule.java
+++ 
b/tapestry-core/src/main/java/org/apache/tapestry5/modules/PageLoadModule.java
@@ -17,6 +17,7 @@ import org.apache.tapestry5.http.TapestryHttpSymbolConstants;
 import 
org.apache.tapestry5.internal.pageload.DefaultComponentRequestSelectorAnalyzer;
 import org.apache.tapestry5.internal.pageload.DefaultComponentResourceLocator;
 import org.apache.tapestry5.internal.pageload.PagePreloaderImpl;
+import org.apache.tapestry5.internal.services.ComponentDependencyRegistry;
 import org.apache.tapestry5.internal.services.ComponentTemplateSource;
 import org.apache.tapestry5.internal.services.ComponentTemplateSourceImpl;
 import org.apache.tapestry5.ioc.ServiceBinder;
@@ -58,4 +59,25 @@ public class PageLoadModule
             preloader.preloadPages();
         }
     }
+    
+    @Startup
+    public void preloadPageClassLoaderContexts(
+            PageClassloaderContextManager pageClassloaderContextManager,
+            ComponentDependencyRegistry componentDependencyRegistry,
+            @Symbol(SymbolConstants.PRODUCTION_MODE) boolean productionMode)
+    {
+        if (!productionMode)
+        {
+            // Preload the page activation context tree for the already known 
classes
+            for (int i = 0; i < 5; i++)
+            {
+                System.out.println();
+                for (String className : 
componentDependencyRegistry.getClassNames()) 
+                {
+                    pageClassloaderContextManager.get(className);
+                }
+            }
+        }
+    }
+
 }

Reply via email to