[ http://issues.apache.org/jira/browse/MYFACES-440?page=all ]
sean schofield updated MYFACES-440: ----------------------------------- Fix Version: 1.1.0 (was: Nightly Build) Version: Nightly Build (was: 1.1.0) > Circular dependencies in managed properties lead to StackOverflowError in > VariableResolverImpl > ---------------------------------------------------------------------------------------------- > > Key: MYFACES-440 > URL: http://issues.apache.org/jira/browse/MYFACES-440 > Project: MyFaces > Type: Bug > Components: General > Versions: Nightly Build > Environment: N/A > Reporter: Erik-Berndt Scheper > Fix For: 1.1.0 > > Circular dependencies in managed properties lead to > java.lang.StackOverflowError in class > org.apache.myfaces.el.VariableResolverImpl. > This can be reproduced with a simple example: > ... start snippet from faces-config ... > <managed-bean> > <managed-bean-name>organisationListController</managed-bean-name> > > <managed-bean-class>nl.ibgroep.demo.web.bean.controller.beheer.OrganisationListController</managed-bean-class> > <managed-bean-scope>session</managed-bean-scope> > <managed-property> > <property-name>organisationDetailsController</property-name> > > <property-class>nl.ibgroep.demo.web.bean.controller.beheer.OrganisationDetailsController</property-class> > <value>#{organisationDetailsController}</value> > </managed-property> > </managed-bean> > <managed-bean> > <managed-bean-name>organisationDetailsController</managed-bean-name> > > <managed-bean-class>nl.ibgroep.demo.web.bean.controller.beheer.OrganisationDetailsController</managed-bean-class> > <managed-bean-scope>session</managed-bean-scope> > <managed-property> > <property-name>organisationListController</property-name> > > <property-class>nl.ibgroep.demo.web.bean.controller.beheer.OrganisationListController</property-class> > <value>#{organisationListController}</value> > </managed-property> > </managed-bean> > ... end snippet from faces-config ... > If I open a page using either of these managed beans, a StackOverflowError > error occurs in VariableResolverImpl. > The reason is that a new managed bean is put in scope after the complete > managed bean has been created, including all dependent managed properties. So > what happens is that the first managed bean (organisationListController) is > created, Subsequently a new bean for its managed property > (organisationDetailsController) is created. Because the first bean > (organisationListController) was not put in scope, a new managed bean > (organisationListController) is created, which leads to the creation of > another bean (organisationDetailsController), etc. > In this simple example the cause is easy to find out, but this will be less > so if the circular dependency becomes less obvious. > Solution: put the bean in scope in the ManagedBeanBuilder, before the > recursive creation of its managed properties. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira