[
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.