Publish exception in lifecycle methods (process*) instead of re-thrown
----------------------------------------------------------------------

                 Key: MYFACES-3201
                 URL: https://issues.apache.org/jira/browse/MYFACES-3201
             Project: MyFaces Core
          Issue Type: Sub-task
            Reporter: Martin Kočí


Requirement: "user should see not just a cryptic stack  trace, but also the 
component  that   triggered the problem"

Problem in current code is that first exception breaks current phase and 
exception in queued without component info.


I think that every lifecycle method (processDecodes, processValidator etc.) 
should try catch every exception and publish it for later processing with 
exception handler.

Spec does not says it directly but we can find:

"The exception must not be re-thrown. This enables tree traversal to continue 
for this lifecycle phase, as in all the other lifecycle phases" from 
UIInput.updateModel

"ExceptionHandler is the central point for handling unexpected Exceptions that 
are thrown during the Faces lifecycle" from ExceptionHandler javadoc

process* method can silently "do nothing" : UIInput.updateModel does it already.

Publishing event allows handle multiple problem at once: consider buggy 
validators/converters -> create more than one exception in queue and coder can 
see them at once.

The main parameter of ExceptionQueuedContext is UIComponent and the best place 
where component is always known is component itself.


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira


Reply via email to