[ https://issues.apache.org/jira/browse/DELTASPIKE-545?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Thomas Andraschko resolved DELTASPIKE-545. ------------------------------------------ Resolution: Fixed > DeltaSpikeExceptionHandler getRootCause assumes caught FacesException is > wrapping another Exception > --------------------------------------------------------------------------------------------------- > > Key: DELTASPIKE-545 > URL: https://issues.apache.org/jira/browse/DELTASPIKE-545 > Project: DeltaSpike > Issue Type: Bug > Components: JSF-Module > Affects Versions: 0.6 > Environment: Myfaces 2.2.1 Tomcat 7.x Deltaspike 0.6 > Reporter: Karl Kildén > Assignee: Thomas Andraschko > Fix For: 0.7 > > > It may be incorrect by the underlying JSF implementation to not wrap another > exception with FacesException. However errors such as detection of duplicate > id's are in nature FacesExceptions and the opposite could be argued. > Regardless it's best if DeltaspikeExceptionHandler null checks rather then > assuming every FacesException wraps another Exception to ensure robustness. > This is the code Thomas Andraschko proposed as a fix. I have verified it > locally and it fixed my problem. > In DeltaspikeExceptionHandler, override getRootCause: > @Override > public Throwable getRootCause(Throwable throwable) > { > while ((ELException.class.isInstance(throwable) || > FacesException.class.isInstance(throwable)) > && throwable.getCause() != null) > { > throwable = throwable.getCause(); > } > return throwable; > } > Before local fix: > java.lang.IllegalArgumentException: exception must not be null > > org.apache.deltaspike.core.api.exception.control.event.ExceptionStackEvent.<init>(ExceptionStackEvent.java:60) > > org.apache.deltaspike.core.impl.exception.control.ExceptionHandlerBroadcaster.executeHandlers(ExceptionHandlerBroadcaster.java:75) > sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcces > After: > javax.faces.FacesException: Component with id:info not found > > org.apache.myfaces.renderkit.html.HtmlAjaxBehaviorRenderer.getComponentId(HtmlAjaxBehaviorRenderer.java:461) > > org.apache.myfaces.renderkit.html.HtmlAjaxBehaviorRenderer.build(HtmlAjaxBehaviorRenderer.java:433) > > org.apache.myfaces.renderkit.html.HtmlAjaxBehaviorRenderer.mapToString(HtmlAjaxBehaviorRenderer.java:405) > > org.apache.myfaces.renderkit.html.HtmlAjaxBehaviorRenderer.makeAjax(HtmlAjaxBehaviorRenderer.java:158) > > org.apache.myfaces.renderkit.html.HtmlAjaxBehaviorRenderer.getScript(HtmlAjaxBehaviorRenderer.java:102) -- This message was sent by Atlassian JIRA (v6.2#6252)