Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 1.8.1
-
Component/s: ICE-Components
-
Labels:None
-
Environment:WebSphere 6.1, IE7, WinXP
Description
When accessing a page that has a component that uses the renderedOnUserRole a NullPointerException is thrown. This happens only on the initial access of the page, if the page is refreshed after the exception the app functions normally. Also it doesn't seem to matter if the user logs in as a user name with security clearance or not. If the renderedOnUserRole attribute is removed this exception does not occur.
Exception:
Caused by: java.lang.NullPointerException
at java.util.ArrayList.<init>(ArrayList.java:158)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.inRole(SessionDispatcher.java:148)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.access$300(SessionDispatcher.java:29)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$2.isUserInRole(SessionDispatcher.java:98)
at com.icesoft.faces.context.BridgeExternalContext.isUserInRole(BridgeExternalContext.java:215)
at com.icesoft.faces.component.ext.taglib.Util.isRenderedOnUserRole(Util.java:112)
at com.icesoft.faces.component.ext.HtmlOutputText.isRendered(HtmlOutputText.java:617)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:721)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:721)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:721)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:517)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:522)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:522)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:522)
at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:282)
... 53 more
Exception:
Caused by: java.lang.NullPointerException
at java.util.ArrayList.<init>(ArrayList.java:158)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.inRole(SessionDispatcher.java:148)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher.access$300(SessionDispatcher.java:29)
at com.icesoft.faces.webapp.http.servlet.SessionDispatcher$2.isUserInRole(SessionDispatcher.java:98)
at com.icesoft.faces.context.BridgeExternalContext.isUserInRole(BridgeExternalContext.java:215)
at com.icesoft.faces.component.ext.taglib.Util.isRenderedOnUserRole(Util.java:112)
at com.icesoft.faces.component.ext.HtmlOutputText.isRendered(HtmlOutputText.java:617)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:95)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:721)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:721)
at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:358)
at com.icesoft.faces.renderkit.dom_html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:96)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:721)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:517)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:522)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:522)
at com.icesoft.faces.application.D2DViewHandler.renderResponse(D2DViewHandler.java:522)
at com.icesoft.faces.facelets.D2DFaceletViewHandler.renderResponse(D2DFaceletViewHandler.java:282)
... 53 more
I investigated the SessionDispatcher class' inRole method and found the likely NPE source, and came up with a fix. Then I noticed that this JIRA was linked to a duplicate, which recommended a very similar fix.
Subversion 19176
icefaces\core\src\com\icesoft\faces\webapp\http\servlet\SessionDispatcher.java