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 <[email protected]>
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);
+                            }
                         }
                     }
                     

Reply via email to