Details
-
Type: Improvement
-
Status: Closed
-
Priority: Major
-
Resolution: Won't Fix
-
Affects Version/s: 4.1, EE-3.3.0.GA_P04
-
Fix Version/s: 4.3
-
Component/s: ACE-Components
-
Labels:None
-
Environment:ICEfaces4 trunk r46245/ EE-3.3.0-maintenance branch r46245
Browsers: all
Server: Tomcat7
-
Assignee Priority:P2
Description
Trying to re-order nodes on the test using the lazy data model (/ICE-10723-lazy.jsf) results in either an UnsupportedOperationException, or an IndexOutOfBoundException, depending on the node being dragged.
QA test app for ace:tree: http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces4/Sparkle/Nightly/tree
Test page: /ICE-10723-lazy.jsf
Nov 19, 2015 2:35:05 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: java.lang.UnsupportedOperationException
at org.icefaces.ace.model.tree.NodeDataModel.insert(NodeDataModel.java:77)
at org.icefaces.ace.component.tree.Tree.insertNode(Tree.java:98)
at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:86)
at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66)
at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64)
at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832)
at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
Nov 19, 2015 2:34:38 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: java.lang.IndexOutOfBoundsException: Index: 0
at java.util.Collections$EmptyList.get(Collections.java:3212)
at org.icefaces.ace.model.tree.LazyNodeDataModel.navToChild(LazyNodeDataModel.java:100)
at org.icefaces.ace.model.tree.LazyNodeDataModel.navToKey(LazyNodeDataModel.java:72)
at org.icefaces.ace.component.tree.Tree.setNodeToKey(Tree.java:157)
at org.icefaces.ace.component.tree.Tree.setKey(Tree.java:125)
at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:84)
at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66)
at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64)
at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832)
at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927)
QA test app for ace:tree: http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces4/Sparkle/Nightly/tree
Test page: /
Nov 19, 2015 2:35:05 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: java.lang.UnsupportedOperationException
at org.icefaces.ace.model.tree.NodeDataModel.insert(NodeDataModel.java:77)
at org.icefaces.ace.component.tree.Tree.insertNode(Tree.java:98)
at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:86)
at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66)
at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64)
at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832)
at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
Nov 19, 2015 2:34:38 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
SEVERE: java.lang.IndexOutOfBoundsException: Index: 0
at java.util.Collections$EmptyList.get(Collections.java:3212)
at org.icefaces.ace.model.tree.LazyNodeDataModel.navToChild(LazyNodeDataModel.java:100)
at org.icefaces.ace.model.tree.LazyNodeDataModel.navToKey(LazyNodeDataModel.java:72)
at org.icefaces.ace.component.tree.Tree.setNodeToKey(Tree.java:157)
at org.icefaces.ace.component.tree.Tree.setKey(Tree.java:125)
at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:84)
at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66)
at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64)
at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832)
at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322)
at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927)
Activity
Ken Fyten
made changes -
Status | Resolved [ 5 ] | Closed [ 6 ] |
Arturo Zambrano
made changes -
Status | Reopened [ 4 ] | Resolved [ 5 ] |
Resolution | Won't Fix [ 2 ] |
Ken Fyten
made changes -
Fix Version/s | 4.3 [ 13096 ] | |
Fix Version/s | EE-4.2.0.GA [ 13071 ] |
Ken Fyten
made changes -
Fix Version/s | EE-4.2.0.GA [ 13071 ] | |
Fix Version/s | 4.2 [ 12870 ] |
Ken Fyten
made changes -
Resolution | Won't Fix [ 2 ] | |
Status | Closed [ 6 ] | Reopened [ 4 ] |
Ken Fyten
made changes -
Status | Open [ 1 ] | Closed [ 6 ] |
Resolution | Won't Fix [ 2 ] |
Ken Fyten
made changes -
Fix Version/s | 4.2 [ 12870 ] | |
Fix Version/s | 4.1 [ 11375 ] | |
Fix Version/s | EE-3.3.0.GA_P04 [ 12270 ] |
Ken Fyten
made changes -
Security | Private [ 10001 ] |
Arturo Zambrano
made changes -
Summary | ace:tree - UnsupportedOperationException when reordering nodes | Enhance the implementation of LazyNodeDataModel to support reordering |
Issue Type | Bug [ 1 ] | Improvement [ 4 ] |
Carmen Cristurean
made changes -
Environment |
ICEfaces4 trunk r46245
Browsers: all Server: Tomcat7 |
ICEfaces4 trunk r46245/ EE-3.3.0-maintenance branch r46245
Browsers: all Server: Tomcat7 |
Carmen Cristurean
made changes -
Fix Version/s | EE-3.3.0.GA_P04 [ 12270 ] |
Carmen Cristurean
made changes -
Affects Version/s | EE-3.3.0.GA_P04 [ 12270 ] |
Ken Fyten
made changes -
Assignee | Arturo Zambrano [ artzambrano ] | |
Assignee Priority | P2 [ 10011 ] |
Carmen Cristurean
made changes -
Affects Version/s | 4.1 [ 11375 ] |
Carmen Cristurean
made changes -
Fix Version/s | 4.1 [ 11375 ] |
Carmen Cristurean
made changes -
Field | Original Value | New Value |
---|---|---|
Description |
Trying to re-order nodes on the test using the lazy data model (/ Nov 19, 2015 2:35:05 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError SEVERE: java.lang.UnsupportedOperationException at org.icefaces.ace.model.tree.NodeDataModel.insert(NodeDataModel.java:77) at org.icefaces.ace.component.tree.Tree.insertNode(Tree.java:98) at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:86) at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66) at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64) at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832) at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIForm.visitTree(UIForm.java:371) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) Nov 19, 2015 2:34:38 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError SEVERE: java.lang.IndexOutOfBoundsException: Index: 0 at java.util.Collections$EmptyList.get(Collections.java:3212) at org.icefaces.ace.model.tree.LazyNodeDataModel.navToChild(LazyNodeDataModel.java:100) at org.icefaces.ace.model.tree.LazyNodeDataModel.navToKey(LazyNodeDataModel.java:72) at org.icefaces.ace.component.tree.Tree.setNodeToKey(Tree.java:157) at org.icefaces.ace.component.tree.Tree.setKey(Tree.java:125) at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:84) at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66) at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64) at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832) at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIForm.visitTree(UIForm.java:371) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927) QA test app for ace:tree: http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces4/Sparkle/Nightly/tree Test page: / |
Trying to re-order nodes on the test using the lazy data model (/ QA test app for ace:tree: http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces4/Sparkle/Nightly/tree Test page: / Nov 19, 2015 2:35:05 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError SEVERE: java.lang.UnsupportedOperationException at org.icefaces.ace.model.tree.NodeDataModel.insert(NodeDataModel.java:77) at org.icefaces.ace.component.tree.Tree.insertNode(Tree.java:98) at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:86) at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66) at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64) at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832) at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIForm.visitTree(UIForm.java:371) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) Nov 19, 2015 2:34:38 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError SEVERE: java.lang.IndexOutOfBoundsException: Index: 0 at java.util.Collections$EmptyList.get(Collections.java:3212) at org.icefaces.ace.model.tree.LazyNodeDataModel.navToChild(LazyNodeDataModel.java:100) at org.icefaces.ace.model.tree.LazyNodeDataModel.navToKey(LazyNodeDataModel.java:72) at org.icefaces.ace.component.tree.Tree.setNodeToKey(Tree.java:157) at org.icefaces.ace.component.tree.Tree.setKey(Tree.java:125) at org.icefaces.ace.component.tree.TreeDecoder.decodeReordering(TreeDecoder.java:84) at org.icefaces.ace.component.tree.TreeDecoder.decode(TreeDecoder.java:66) at org.icefaces.ace.component.tree.TreeRenderer$1.<init>(TreeRenderer.java:64) at org.icefaces.ace.component.tree.TreeRenderer.decode(TreeRenderer.java:63) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:832) at org.icefaces.ace.component.tree.Tree.processDecodes(Tree.java:299) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:573) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) at org.icefaces.ace.component.tree.Tree.visitTree(Tree.java:392) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIForm.visitTree(UIForm.java:371) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700) at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:266) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:322) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:219) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:927) |
Carmen Cristurean
created issue -
After trying several approaches, it was impossible to support reordering on a lazy tree. The problem lies mainly in the navToKey() and navToChild() methods, which usually produce an IndexOutOfBoundsException when trying to reorder nodes. Like ListNodeDataModel, LazyNodeDataModel would need to have access to the tree roots within the same class in order to perform this and other operations, because of the inherent predictability required for an operation of this nature. Since, the tree roots are in an external source on a lazy tree, it's impossible to support these operations.