[ https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12835296#action_12835296 ]
Leonardo Uribe commented on MYFACES-2561: ----------------------------------------- The problem is do something like this is valid and it should work. #{cc.attr.property1 == component.property2} it is possible to imagine other expressions like that (but maybe not very common). Suppose every el expression that makes reference to cc does not for component is risky. It is preferred to "push" the component instance somewhere else (UIComponent.pushComponentToEL uses facescontext attribute map, so maybe we can create another stack for this specific case, or maybe use a stack is not necessary). > StackOverflowError if a composite component implementation uses another > composite component > ------------------------------------------------------------------------------------------- > > Key: MYFACES-2561 > URL: https://issues.apache.org/jira/browse/MYFACES-2561 > Project: MyFaces Core > Issue Type: Bug > Components: JSR-314 > Affects Versions: 2.0.0-beta-3 > Reporter: Jakob Korherr > Assignee: Jakob Korherr > Attachments: MYFACES-2561.patch, test.xhtml, test1.xhtml, test2.xhtml > > > If you use another composite component in your composite component's > implementation you will get a StackOverflowError. > javax.faces.FacesException: java.lang.StackOverflowError > at > org.apache.myfaces.context.ExceptionHandlerImpl.wrap(ExceptionHandlerImpl.java:241) > at > org.apache.myfaces.context.ExceptionHandlerImpl.handle(ExceptionHandlerImpl.java:156) > at > org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:216) > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) > at java.lang.Thread.run(Thread.java:637) > Caused by: java.lang.StackOverflowError > at java.util.ArrayList.toArray(ArrayList.java:306) > at java.util.logging.Logger.getHandlers(Logger.java:1200) > at > java.util.logging.LogManager$RootLogger.getHandlers(LogManager.java:1019) > at java.util.logging.Logger.log(Logger.java:454) > at java.util.logging.Logger.doLog(Logger.java:480) > at java.util.logging.Logger.logp(Logger.java:680) > at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:167) > at org.apache.juli.logging.DirectJDKLog.error(DirectJDKLog.java:135) > at org.apache.catalina.connector.Request.setAttribute(Request.java:1448) > at > org.apache.catalina.connector.RequestFacade.setAttribute(RequestFacade.java:503) > at > org.apache.myfaces.context.servlet.RequestMap.setAttribute(RequestMap.java:53) > at > org.apache.myfaces.util.AbstractAttributeMap.put(AbstractAttributeMap.java:113) > at > org.apache.myfaces.util.AbstractAttributeMap.put(AbstractAttributeMap.java:1) > at > org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.setScope(FacesCompositeELResolver.java:191) > at > org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:139) > at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:61) > at org.apache.el.parser.AstValue.getValue(AstValue.java:107) > at > org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) > at > org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:84) > at > org.apache.myfaces.el.unified.resolver.CompositeComponentELResolver$CompositeComponentAttributesMapWrapper.get(CompositeComponentELResolver.java:245) > at javax.el.MapELResolver.getValue(MapELResolver.java:51) > at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) > at > org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:140) > at org.apache.el.parser.AstValue.getValue(AstValue.java:118) > at > org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) > at > org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:84) > at > org.apache.myfaces.el.unified.resolver.CompositeComponentELResolver$CompositeComponentAttributesMapWrapper.get(CompositeComponentELResolver.java:245) > at javax.el.MapELResolver.getValue(MapELResolver.java:51) > at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) > at > org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:140) > at org.apache.el.parser.AstValue.getValue(AstValue.java:118) > at > org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) > at > org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:84) > at > org.apache.myfaces.el.unified.resolver.CompositeComponentELResolver$CompositeComponentAttributesMapWrapper.get(CompositeComponentELResolver.java:245) > at javax.el.MapELResolver.getValue(MapELResolver.java:51) > at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) > at > org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:140) > at org.apache.el.parser.AstValue.getValue(AstValue.java:118) > at > org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) > at > org.apache.myfaces.view.facelets.el.TagValueExpression.getValue(TagValueExpression.java:84) > at > org.apache.myfaces.el.unified.resolver.CompositeComponentELResolver$CompositeComponentAttributesMapWrapper.get(CompositeComponentELResolver.java:245) > at javax.el.MapELResolver.getValue(MapELResolver.java:51) > at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54) > at > org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:140) > at org.apache.el.parser.AstValue.getValue(AstValue.java:118) > ...... > ...... -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.