[jira] [Commented] (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2012-07-30 Thread marco fago (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13424831#comment-13424831
 ] 

marco fago commented on MYFACES-2561:
-

There is still a case in which this solution won't work.
Consider the component test 1 above slightly modified:

cc:interface name=test1
cc:attribute name=test required=true /
/cc:interface
cc:implementation
test1
t2:test2 test=#{myLibrary:myFunction(...) or cc.attrs.test} /
/cc:implementation 

In that case the regex expression looking for cc.attrs will exclude the 
expression because cc.attrs is preceded by a left parenthesis (as stated in 
CompositeComponentELUtils).

Changing to
 t2:test2 test=#{cc.attrs.test or myLibrary:myFunction(...)} /
will work.

Tested on Myfaces 2.1.8.

 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
 Fix For: 2.0.0-beta-3

 Attachments: MYFACES-2561-2.patch, 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 

[jira] [Commented] (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2012-07-30 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13424836#comment-13424836
 ] 

Leonardo Uribe commented on MYFACES-2561:
-

It is another different problem that the one described here ( regex for 
cc.attrs doesn't take into account start with left parenthesis ). Don't create 
a clone, because the original issue has been fixed long time ago. Instead, 
create a new issue and reference this one. 

 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
 Fix For: 2.0.0-beta-3

 Attachments: MYFACES-2561-2.patch, 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835159#action_12835159
 ] 

Jakob Korherr commented on MYFACES-2561:


Thanks for all your ideas, Leonardo, but I already have a working solution for 
that as I ment in I already have a solution for the #{cc} resolver problem..

My solution is similar to your last suggestion. I use the Location object to 
check in which file the Value-/MethodExpression is generated (in 
TagAttributeImpl). To save it I introduced LocationValueExpression and 
LocationMethodExpression. These two classes pass through all EL methods but 
push the related composite component to the stack before invocation and remove 
it afterwards. Thus the implicit object resolver does not need to be changed. 

To find the related composite component I search the current component stack 
for the composite component with the same Location as stored in the 
Value-/MethodExpression. And to get the Location of the composite component I 
use the InterfaceHandler to store the Location from where the composite 
component is created in the composite component's attribute map.

However there are still some problems with MethodExpressions as they are not 
really resolved. That is why I did not already provide a patch for this issue, 
but I will do this now so that you can take a look at my solution.

The problem with the MethodExpressions is that they are originally created as 
ValueExpressions and then (later) changed to MethodExpressions in 
FaceletVDL.retargetMethodExpressions. The problem here is that only the 
expression string is taken into account. This works perfect on the outer 
composite component, but the inner composite component gets something like 
#{cc.attr.method} and thus wants to invoke the method method on 
CompositeComponentAttributesMapWrapper.

One possible solution would be to look for expression strings with cc.attr in 
FaceletVDL.retargetMethodExpressions and keep extracting them until the 
expression string does not contain cc.attr, but this is not really a good 
solution I think. I've been thinking a lot about this and still haven't found 
something much better. Suggestions are welcome!

 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

 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 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835257#action_12835257
 ] 

Leonardo Uribe commented on MYFACES-2561:
-

 I look ri code to find if they changed the evaluation algorithm to solve #{cc} 
(if there is a change we can do some hack on our code too). In fact as 
supposed, they have its own hack there, so we can change the behavior of the 
class 
org.apache.myfaces.el.unified.resolver.implicitobject.CompositeComponentImplicitObject.

Use javax.faces.view.Location object is a good idea. I never think about it, 
because in theory this object is used to log errors. It is not possible to have 
one composite component that has some reference to itself inside 
cc:implementation and nest cc:insertChildren or cc:insertFacet  (or not?), so 
it should be safe to use it as reference.

I remember the problem with FaceletVDL.retargetMethodExpressions. In 
TagAttributeImpl.getMethodExpression there is a wrapper that does the 
indirection from ValueExpression to MethodExpression. I suppose do something 
like:

new TagValueExpressionMethodExpression(this, new 
LocationValueExpression(..valueExpr..));

should solve the problem.

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835261#action_12835261
 ] 

Leonardo Uribe commented on MYFACES-2561:
-

The reason why it is better to change CompositeComponentImplicitObject is 
because use the component stack changes the evaluation value of #{component} 
(see the table 5-10)

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835286#action_12835286
 ] 

Jakob Korherr commented on MYFACES-2561:


I don't see the problem with #{component} when using a LocationValueExpression, 
because I only push the component to the stack when I resolve #{cc} and then 
afterwards remove it immediatly from the stack. In the meantime no #{component} 
can be resolved, which would be disturbed by my algorithm.

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=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)
   

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835299#action_12835299
 ] 

Jakob Korherr commented on MYFACES-2561:


Good point, I haven't thought of that. OK I'll change this to set the related 
composite component to a attribute on the FacesContext and to evaluate this 
attribute on CompositeComponentImplicitObject.

After that and after the problem with the MethodExpressions we can commit the 
changes, because RI does the same. Or should be let this open with an available 
patch and wait for the official spec change?

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835391#action_12835391
 ] 

Jakob Korherr commented on MYFACES-2561:


OK I finally solved the MethodExpression problem. This was really not easy to 
think through. An explanation and the patch will come later.. ;)

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835428#action_12835428
 ] 

Leonardo Uribe commented on MYFACES-2561:
-

Thinking more about it maybe we need a stack that keeps track of resolved #{cc} 
instances. It is possible to have multiple indirections between composite 
components, and just a variable is not enough.

I would like to have the patch here, just as reference and commit the code. If 
RI has the fix, we should provide it too.

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-18 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12835430#action_12835430
 ] 

Jakob Korherr commented on MYFACES-2561:


To solve the problem with the MethodExpression I introduced something similar 
to that. You'll see!

 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)
   

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-17 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12834733#action_12834733
 ] 

Jakob Korherr commented on MYFACES-2561:


I already have a solution for the #{cc} resolver problem. Unfortunately another 
problem appeared: passing through MethodExpressions between composite 
components does not work. This is maybe related to MYFACES-2553. I will try to 
fix this also!

 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

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-17 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12834930#action_12834930
 ] 

Leonardo Uribe commented on MYFACES-2561:
-

The problem with this fix is how to resolve #{cc} object. We need a way to 
lookup it based on the document markup, but the problem is that the evaluation 
of the expression happens after the tree is build. So, we need to find a way to 
preserve or find this information on that time. 

We can't use the component clientId, because it is not safe to call getClientId 
while the tree is build. Note to identify a target component used by 
cc:insertChildren or cc:insertFacet we can use it because the code that call it 
are on the listener activated when PostAddToView is called, that means after 
the tree is build.

One idea could be use the fact that cc:implementation put all component under 
UIComponent.COMPOSITE_FACET_NAME key, trying to find the closest one in the 
hierarchy, but this fact fails under the presence of cc:insertChildren or 
cc:insertFacet. Note cc:insertChildren or cc:insertFacet relocate components 
but the parent composite component is still on the hierarchy.

In theory, the only thing we have to identify or know the structure or a 
composite component is UIComponent.BEANINFO_KEY or 
Resource.COMPONENT_RESOURCE_KEY, so maybe we could take advantage of this fact 
to identify which composite component in the hierarchy is the one we are 
referring to #{cc}, but still I'm not have clear how we can do that. The spec 
says the EL resolver that try to get #{cc} (in myfaces it is 
org.apache.myfaces.el.unified.resolver.implicitobject.CompositeComponentImplicitObject)
 should return the value of 
UIComponent.getCurrentCompositeComponent(facesContext). But probably this 
behavior could change to make this fix work, breaking the spec. Again, as in 
MYFACES-2553, we need to do something from TagAttributeImpl.

Suggestions are welcome.

 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

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-17 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12834993#action_12834993
 ] 

Leonardo Uribe commented on MYFACES-2561:
-

Thinking more about it, is clear 
org.apache.myfaces.el.unified.resolver.implicitobject.CompositeComponentImplicitObject
 must be changed and some hack should be implemented there. That's why the 
change on JSF 2.0 Rev A Change Log says something about Modify table 5-10. 
Really the complete reference is:

- JSF 2.0 spec section 5.6.2.1 Implicit Object ELResolver for Facelets and 
Programmatic Access section TABLE 5-10 ImplicitObjectELResolver for 
Programmatic Access

One idea to resolve #{cc} is the following:

1. When TagAttributeImpl.getValueExpression(FaceletContext ctx, Class type) is 
called (from ComponentRule.ValueExpressionMetadata or other place) check if the 
constructed expression requires resolve a reference to cc. If so, save the 
data required to find the real composite component reference, wrapping the 
value expression like we did on MYFACES-2553.
2. When a method like ValueExpression.getValue(ELContext) or something similar 
is called, put somewhere (facesContext attribute map?) the information 
required, so when the original value expression is called and cc is resolved, 
we can extract that information and resolve the component value correctly. One 
idea could be use ComponentSupport.MARK_CREATED attribute to identify the 
component we need and iterate through hierarchy using 
UIComponent.getCurrentComponent(FacesContext) and 
UIComponent.getCompositeComponentParent(UIComponent). This two methods uses 
Resource.COMPONENT_RESOURCE_KEY implicit to recognize a composite component. 
ComponentSupport.MARK_CREATED key is used by ComponentTagHandlerDelegate to 
mark a component to a specific tag instance.

Suggestions are welcome. 

 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

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-16 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12834227#action_12834227
 ] 

Jakob Korherr commented on MYFACES-2561:


To run into the StackOverflowError both composite components need to have the 
same attribute name and use this attribute in their implementation.

Example:
component test1:

cc:interface name=test1
cc:attribute name=test required=true /
/cc:interface
cc:implementation
test1
t2:test2 test=#{cc.attrs.test} /
/cc:implementation

component test2:

cc:interface name=test2
cc:attribute name=test required=true /
/cc:interface
cc:implementation
test2
#{cc.attrs.test}
/cc:implementation

 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

 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 
 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-16 Thread Leonardo Uribe (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12834248#action_12834248
 ] 

Leonardo Uribe commented on MYFACES-2561:
-

It is a know problem about the semantic of #{cc}. In this case it resolves to 
the closest composite component and in that case is the same one. See this two 
topics on jsr-314-open mailing list (specially the first one):

[jsr-314-open] #{cc} semantics
[jsr-314-open] cc.parent mystery

In http://wiki.jcp.org/wiki/index.php?page=JSF+2.0+Rev+A+Change+Log it appears 
like:

C034 Change  Modify table 5-10 to state that implicit object cc 
returns the current composite component, relative to the composite component 
markup page in which the expression appears 

I'm keeping an eye on this change (there is other related to cc.parent 
resolution). It could be good to know what ri does in this case.

It could be good to have a patch for this one.



 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

 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 

[jira] Commented: (MYFACES-2561) StackOverflowError if a composite component implementation uses another composite component

2010-02-16 Thread Jakob Korherr (JIRA)

[ 
https://issues.apache.org/jira/browse/MYFACES-2561?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12834291#action_12834291
 ] 

Jakob Korherr commented on MYFACES-2561:


OK, good to know.

I opened this issue, because on mojarra the code works. I will try find out 
which spec-change was applied here and provide a patch. After a review we can 
then commit it.

 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

 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