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 2c465af02d36ea897e27c0c1863c544c2d795463 Author: Thiago H. de Paula Figueiredo <thi...@arsmachina.com.br> AuthorDate: Fri Jun 9 20:55:02 2023 -0300 TAP5-2742: removing commented-out code --- .../PageClassloaderContextManagerImpl.java | 71 +++++----------------- 1 file changed, 16 insertions(+), 55 deletions(-) diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java index 91241c661..c257695b8 100644 --- a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java +++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/PageClassloaderContextManagerImpl.java @@ -235,22 +235,6 @@ public class PageClassloaderContextManagerImpl implements PageClassloaderContext ) { context = unknownContextProvider.get(); -// // Make sure you get a fresh version of the class before processing its -// // dependencies -// PageClassloaderContext throwaway = new PageClassloaderContext( -// "Throwaway", -// root, -// Collections.singleton(className), -// plasticProxyFactoryProvider.apply(root.getClassLoader())); -// -// Class<?> clasz = loadClass(className, throwaway); -// componentDependencyRegistry.register(clasz); -// -// throwaway.getProxyFactory().clearCache(); -// throwaway.getClassNames().clear(); -// -// alreadyProcessed.remove(className); -// return processUsingDependencies(className, root, unknownContextProvider, plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed); } else { @@ -337,38 +321,6 @@ public class PageClassloaderContextManagerImpl implements PageClassloaderContext } context.addClass(className); - // Merge contexts of circular dependencies into a single one - -// if (processCircularDependencies && !circularDependencies.isEmpty()) -// { -// Set<PageClassloaderContext> contexts = new HashSet<>(circularDependencies.size() + 1); -// contexts.add(context); -// for (String circularDependency : circularDependencies) -// { -// PageClassloaderContext toMerge = -// processUsingDependencies( -// circularDependency, root, unknownContextProvider, -// plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed, -// false); -// contexts.add(toMerge); -// } -// if (contexts.size() > 1) -// { -// -// context = merge(contexts, plasticProxyFactoryProvider, root, classesToInvalidate); -// -// // Avoiding an infinite recursion -// classesToInvalidate.removeAll(context.getClassNames()); -// -// // Ensure non-page class is initialized in the correct context and classloader -// for (String clasz : context.getClassNames()) { -// if (!componentClassResolver.isPage(clasz)) -// { -// loadClass(clasz, context); -// } -// } -// } -// } return context; } @@ -571,12 +523,10 @@ public class PageClassloaderContextManagerImpl implements PageClassloaderContext } private void markAsNotInvalidatingContext() { -// System.out.println("XXXX Mark as NOT invalidating. Current: " + INVALIDATING_CONTEXT.get()); INVALIDATING_CONTEXT.set(false); } private void markAsInvalidatingContext() { -// System.out.println("XXXX Mark as invalidating. Current: " + INVALIDATING_CONTEXT.get()); INVALIDATING_CONTEXT.set(true); } @@ -585,11 +535,22 @@ public class PageClassloaderContextManagerImpl implements PageClassloaderContext { LOGGER.debug("Invalidating classes {}", classesToInvalidate); markAsInvalidatingContext(); - final ArrayList<String> classesToInvalidateAsList = new ArrayList<>(classesToInvalidate); - // TODO: do we really need both invalidation hubs to be invoked here? - invalidationHub.fireInvalidationEvent(classesToInvalidateAsList); - componentClassesInvalidationEventHub.fireInvalidationEvent(classesToInvalidateAsList); - markAsNotInvalidatingContext(); + final List<String> classesToInvalidateAsList = new ArrayList<>(classesToInvalidate); + + componentDependencyRegistry.disableInvalidations(); + + try + { + // TODO: do we really need both invalidation hubs to be invoked here? + invalidationHub.fireInvalidationEvent(classesToInvalidateAsList); + componentClassesInvalidationEventHub.fireInvalidationEvent(classesToInvalidateAsList); + markAsNotInvalidatingContext(); + } + finally + { + componentDependencyRegistry.enableInvalidations(); + } + } }