[
https://issues.apache.org/jira/browse/TAPESTRY-1275?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Randy Leonard reopened TAPESTRY-1275:
-------------------------------------
I didn't necessarily take previous comments on 1275 to indicate recursive
component references would be disallowed, only that the PageLoader wouldn't get
confused with recursive components. So was surprised with the following error
message when trying this out again:
The template for component com.paymentDepot.console.components.MenuCell
is recursive (contains another direct or indirect reference to component
com.paymentDepot.console.components.MenuCell). This is not supported
(components may not contain themselves).
I'd encourage reconsideration on this, as recursive components can be useful.
I could certainly work around the issue, but at the cost of a fair amount of
code. WebObjects allowed this, so perhaps I've been conditioned into a
specific style of thinking?
> Recursive Components cause heap space overflow
> ----------------------------------------------
>
> Key: TAPESTRY-1275
> URL: https://issues.apache.org/jira/browse/TAPESTRY-1275
> Project: Tapestry
> Issue Type: Bug
> Components: tapestry-core
> Affects Versions: 5.0
> Environment: MacOSX 10.4.8, Eclipse 3.2.1
> Reporter: Randy Leonard
> Assigned To: Howard M. Lewis Ship
> Fix For: 5.0.3
>
>
> Embedding a recursive reference to a component within an html template causes
> a stack overflow. Example menu component is as follows:
> <tr xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
> <td>
> <t:comp type="Iff" test="prop:menuItem.isSelected">
> <b>${menuItem.name}</b>
> <t:comp type="Iff" test="prop:menuItem.containsSubMenu">
> <t:comp t:type="menu"
> menuHierarchy="menuItem.subMenu"></t:comp>
> </t:comp>
> </t:comp>
> <t:comp type="Iff" test="prop:menuItem.isSelected"
> negate="true">
> <a t:type="PageLink"
> page="prop:menuItem.pageName">${menuItem.name}</a>
> </t:comp>
> </td>
> </tr>
> The menu component works fine if the recursive if the recursive reference is
> removed. The error seems to take place at startup, not at render time.
> Error message displayed in browser is as follows:
> A runtime exception has occurred.
> org.apache.tapestry.ioc.internal.util.TapestryException
> Could not convert 'menuItem.name' into a component parameter binding: Java
> heap space
> location
> classpath:org/example/hilo/components/MenuCell.html, line 4, column 23
> org.apache.tapestry.ioc.internal.util.TapestryException
> Java heap space
> location
> classpath:org/example/hilo/components/MenuCell.html, line 4, column 23
> java.lang.OutOfMemoryError
> Java heap space
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]