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); + } + } + } + } + }