Handling AbortProcessingException is unconsistent
-------------------------------------------------

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


UIViewRoot:
 try  {
    source.broadcast(event);
 }
            catch (AbortProcessingException e)
            {
                ExceptionQueuedEventContext exceptionContext 
                        = new ExceptionQueuedEventContext(context, e, source, 
context.getCurrentPhaseId());
                context.getApplication().publishEvent(context, 
ExceptionQueuedEvent.class, exceptionContext);
                
                // Abortion
                return false;
}


Problem 1: 
<h:inputText  valueChangeListener="#{bean.processValueChange}">

MethodExpressionValueChangeListener wraps all exceptions to 
AbortProcessingException and therefore exception is queued

Problem 2: 
            <h:inputText  >
                <f:valueChangeListener binding="#{bean}" />
            </h:inputText>
ValueChangeListenerHandler does not wrap exception to AbortProcessingException 
and therefore  exception is not queued in this block (but it is queued from 
phase executor but without component info)


Problem 3: JSF spec 2.1 : 
"Clarification made: throwing an AbortProcessingException tells an 
implementation that no further broadcast of the
current event occurs. Does not affect future events." 
But I think that code in UIViewRoot makes opposite:  // Abortion  return false;








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


Reply via email to