Hi The line number does not match with the latest code of ApplicationImpl. But the code that throws the NullPointerException is this:
private static SystemEvent _traverseListenerList(List<? extends SystemEventListener> listeners, Class<? extends SystemEvent> systemEventClass, Object source, SystemEvent event) { if (listeners != null && !listeners.isEmpty()) { // perf: org.apache.myfaces.application.ApplicationImpl. // SystemListenerEntry.getSpecificSourceListenersNotNull(Class<?>) // or javax.faces.component.UIComponent.subscribeToEvent( // Class<? extends SystemEvent>, ComponentSystemEventListener) // creates a ArrayList: for (int i = 0, size = listeners.size(); i < size; i++) { SystemEventListener listener = listeners.get(i); // Call SystemEventListener.isListenerForSource(java.lang.Object), passing the source argument. // If this returns false, take no action on the listener. if (listener.isListenerForSource(source)) { // Otherwise, if the event to be passed to the listener instances has not yet been constructed, // construct the event, passing source as the argument to the one-argument constructor that takes // an Object. This same event instance must be passed to all listener instances. event = _createEvent(systemEventClass, source, event); // Call SystemEvent.isAppropriateListener(javax.faces.event.FacesListener), passing the listener // instance as the argument. If this returns false, take no action on the listener. if (event.isAppropriateListener(listener)) { // Call SystemEvent.processListener(javax.faces.event.FacesListener), passing the listener // instance. event.processListener(listener); } } } } return event; } There is only one choice: list of listeners has some null elements, which is invalid. But maybe it could be solved just adding a null check: if (listener != null && listener.isListenerForSource(source)) In theory it should not happen, the code in MyFaces is correct, but the null check is harmless. Anyway, the question is why Trinidad returns a listener list with null values?. It could be a bug into trinidad state saving algorithm, but without a tests sounds very difficult to solve, because only occur in a non frequent use case. regards, Leonardo Uribe 2012/7/4 jnthodge <jntho...@hotmail.com>: > > OK, we've upgraded to 2.1.7 as you suggested, and it has only changed the > line number that throws this error in ApplicationImpl.java. Any thoughts? > > Thanks much!! > > java.lang.NullPointerException > at > org.apache.myfaces.application.ApplicationImpl._traverseListenerList(ApplicationImpl.java:2355) > at > org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:574) > at > org.apache.myfaces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:604) > at > org.apache.myfaces.application.NavigationHandlerImpl$PreDisposeViewCallback.visit(NavigationHandlerImpl.java:237) > at > org.apache.myfaces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:141) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:539) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:362) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitAllChildren(UIXComponent.java:445) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:423) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:703) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:566) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:362) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitAllChildren(UIXComponent.java:445) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:423) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:703) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:566) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:362) > at > org.apache.myfaces.trinidad.component.UIXShowOne.visitTree(UIXShowOne.java:135) > at javax.faces.component.UIComponent.visitTree(UIComponent.java:960) > at > javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:1159) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitAllChildren(UIXComponent.java:445) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:423) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:703) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:566) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:362) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitAllChildren(UIXComponent.java:445) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:423) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitChildren(UIXComponent.java:703) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:566) > at > org.apache.myfaces.trinidad.component.UIXComponent.visitTree(UIXComponent.java:362) > at javax.faces.component.UIComponent.visitTree(UIComponent.java:960) > at > javax.faces.component.UIComponentBase.visitTree(UIComponentBase.java:1159) > at > org.apache.myfaces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:182) > at > org.apache.myfaces.trinidadinternal.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:117) > at > org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:161) > at > org.apache.myfaces.trinidad.component.UIXCommand.broadcast(UIXCommand.java:190) > at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1023) > at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:286) > at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1360) > at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:752) > at > org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:38) > at > org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170) > at > org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117) > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197) > at > weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227) > at > weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125) > at > weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:300) > at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:26) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) > at > org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:293) > at > org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:199) > at > org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) > at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:111) > at java.security.AccessController.doPrivileged(Native Method) > at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:313) > at > oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) > at > oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94) > at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:161) > at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) > at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:136) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) > at > weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27) > at > weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) > at > weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3715) > ... > -- > View this message in context: http://old.nabble.com/Facelets%3A-Back-button%2C-then-nav-link-click-produces-NPE-tp33755243p34111380.html > Sent from the My Faces - Dev mailing list archive at Nabble.com. >