// create an UpdateModelException and enqueue it since
// we are not allowed to throw it directly here
// spec javadoc: The exception must not be re-thrown. This enables tree traversal to
// continue for this lifecycle phase, as in all the other lifecycle phases.
UpdateModelException updateModelException = new UpdateModelException(facesMessage, e);
ExceptionQueuedEventContext exceptionQueuedContext
= new ExceptionQueuedEventContext(context, updateModelException, this, PhaseId.UPDATE_MODEL_VALUES);
// spec javadoc says we should call context.getExceptionHandler().processEvent(exceptionQueuedContext),
// which is not just syntactically wrong, but also stupid!!
context.getApplication().publishEvent(context, ExceptionQueuedEvent.class, exceptionQueuedContext);