TAP5-2773: avoiding an infinite recursion loop
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 1fbf978..f2a20ea 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 @@
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 @@
for (String dependency : dependencies)
{
PageClassLoaderContext dependencyContext = root.findByClassName(dependency);
- if (dependencyContext == null)
+ // Avoid infinite recursion loops
+ if (!alreadyProcessed.contains(dependency))
{
- dependencyContext = processUsingDependencies(dependency, root, unknownContextProvider,
- plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed);
-
- }
- if (!dependencyContext.isRoot())
- {
- contextDependencies.add(dependencyContext);
+ if (dependencyContext == null)
+ {
+ dependencyContext = processUsingDependencies(dependency, root, unknownContextProvider,
+ plasticProxyFactoryProvider, classesToInvalidate, alreadyProcessed);
+
+ }
+ if (!dependencyContext.isRoot())
+ {
+ contextDependencies.add(dependencyContext);
+ }
}
}