Details
-
Type: Bug
-
Status: Closed
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: EE-3.0.0.GA, 3.1.0.BETA2, 3.1.0.RC1
-
Fix Version/s: 3.2
-
Component/s: ACE-Components
-
Labels:None
-
Environment:All
Description
Two buttons are setup to expand and contract all rows for the ace:dataTable. These buttons call an action method that uses the RowStateMap.setAllExpanded(true) and setAllExpanded(false).
The first call to the Expand all button works correctly. If the same button is clicked again or if the Collapse All is clicked and then the Expand All button clicked again a NullPointerException is thrown and the app crashes.
Stack trace:
java.lang.NullPointerException
at org.icefaces.ace.model.table.TreeDataModel.isRowAvailable(TreeDataModel.java:76)
at javax.faces.component.UIData.isRowAvailable(UIData.java:343)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:499)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at org.icefaces.ace.component.datatable.DataTable.setRowIndex(DataTable.java:393)
at org.icefaces.ace.component.datatable.DataTableRowRenderer.encodeRowExpansion(DataTableRowRenderer.java:234)
at org.icefaces.ace.component.datatable.DataTableRowRenderer.encodeRowExpansion(DataTableRowRenderer.java:303)
at org.icefaces.ace.component.datatable.DataTableRowRenderer.encodeRow(DataTableRowRenderer.java:118)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeTableBody(DataTableRenderer.java:228)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeTable(DataTableRenderer.java:181)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeEntirety(DataTableRenderer.java:142)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:107)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at org.icefaces.impl.renderkit.RendererWrapper.encodeChildren(RendererWrapper.java:49)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:141)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:981)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:390)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
The first call to the Expand all button works correctly. If the same button is clicked again or if the Collapse All is clicked and then the Expand All button clicked again a NullPointerException is thrown and the app crashes.
Stack trace:
java.lang.NullPointerException
at org.icefaces.ace.model.table.TreeDataModel.isRowAvailable(TreeDataModel.java:76)
at javax.faces.component.UIData.isRowAvailable(UIData.java:343)
at javax.faces.component.UIData.setRowIndexWithoutRowStatePreserved(UIData.java:499)
at javax.faces.component.UIData.setRowIndex(UIData.java:473)
at org.icefaces.ace.component.datatable.DataTable.setRowIndex(DataTable.java:393)
at org.icefaces.ace.component.datatable.DataTableRowRenderer.encodeRowExpansion(DataTableRowRenderer.java:234)
at org.icefaces.ace.component.datatable.DataTableRowRenderer.encodeRowExpansion(DataTableRowRenderer.java:303)
at org.icefaces.ace.component.datatable.DataTableRowRenderer.encodeRow(DataTableRowRenderer.java:118)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeTableBody(DataTableRenderer.java:228)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeTable(DataTableRenderer.java:181)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeEntirety(DataTableRenderer.java:142)
at org.icefaces.ace.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:107)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1763)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at org.icefaces.impl.renderkit.RendererWrapper.encodeChildren(RendererWrapper.java:49)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:141)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:981)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:390)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
Revision #30343
Committed by nils.lundquist
A minute ago
ICE-8337- Fixed NPE caused by programattic row expansion of leaf nodes.