You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by th...@apache.org on 2024/04/09 02:25:01 UTC

(tapestry-5) branch master updated: TAP5-2773: avoiding an infinite recursion loop

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

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


The following commit(s) were added to refs/heads/master by this push:
     new 9af6eb9eb TAP5-2773: avoiding an infinite recursion loop
9af6eb9eb is described below

commit 9af6eb9eb5c889768162112ddae7d86fa7b51963
Author: Thiago H. de Paula Figueiredo <th...@arsmachina.com.br>
AuthorDate: Mon Apr 8 23:24:13 2024 -0300

    TAP5-2773: avoiding an infinite recursion loop
---
 .../PageClassLoaderContextManagerImpl.java         | 23 ++++++++++++----------
 1 file changed, 13 insertions(+), 10 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 1fbf97867..f2a20ead5 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
@@ -248,8 +248,7 @@ public class PageClassLoaderContextManagerImpl implements PageClassLoaderContext
                     for (String dependency : dependencies)
                     {
                         // Avoid infinite recursion loops
-                        if (!alreadyProcessed.contains(dependency)/* && 
-                                !circularDependencies.contains(dependency)*/)
+                        if (!alreadyProcessed.contains(dependency))
                         {
                             processUsingDependencies(dependency, root, unknownContextProvider, 
                                     plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed, false);
@@ -261,15 +260,19 @@ public class PageClassLoaderContextManagerImpl implements PageClassLoaderContext
                     for (String dependency : dependencies) 
                     {
                         PageClassLoaderContext dependencyContext = root.findByClassName(dependency);
-                        if (dependencyContext == null)
-                        {
-                            dependencyContext = processUsingDependencies(dependency, root, unknownContextProvider,
-                                    plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed);
-
-                        }
-                        if (!dependencyContext.isRoot())
+                        // Avoid infinite recursion loops
+                        if (!alreadyProcessed.contains(dependency))
                         {
-                            contextDependencies.add(dependencyContext);
+                            if (dependencyContext == null)
+                            {
+                                dependencyContext = processUsingDependencies(dependency, root, unknownContextProvider,
+                                        plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed);
+    
+                            }
+                            if (!dependencyContext.isRoot())
+                            {
+                                contextDependencies.add(dependencyContext);
+                            }
                         }
                     }