ICEfaces
  1. ICEfaces
  2. ICE-8239

List - Overview - Multi-List Item processDeselection RowNotAvailableException

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 3.1.0.BETA2
    • Fix Version/s: 3.1.0.RC1, 3.1
    • Component/s: QA, Sample Apps
    • Labels:
      None
    • Environment:
      Icefaces3/trunk revision# 29438
      Server: tomcat7
      Browser: FF13
      Last Known Working revision#
    • Assignee Priority:
      P2

      Description

      List - Overview - Multi-List: Items on multi-list doesnt change IDs after transfer to new container

      11-Jun-2012 5:04:13 PM com.sun.faces.context.PartialViewContextImpl processPartial
      INFO: javax.faces.model.NoRowAvailableException
      javax.faces.model.NoRowAvailableException
      at javax.faces.model.ListDataModel.getRowData(ListDataModel.java:150)
      at org.icefaces.impl.component.UISeriesBase.getRowData(UISeriesBase.java:109)
      at org.icefaces.ace.component.list.ListDecoder.processDeselections(ListDecoder.java:74)
      at org.icefaces.ace.component.list.ListRenderer.decode(ListRenderer.java:51)
      at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
      at org.icefaces.impl.component.UISeriesBase.processDecodes(UISeriesBase.java:521)
      at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506)
      at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
      at org.icefaces.impl.component.UISeriesBase.visitTree(UISeriesBase.java:1039)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
      at javax.faces.component.UIForm.visitTree(UIForm.java:344)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
      at javax.faces.component.UIComponent.visitTree(UIComponent.java:1601)
      at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376)
      at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252)
      at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
      at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:248)
      at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
      at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
      at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:248)
      at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
      at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
      at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)

      To Reproduce:
      - Build/Deploy showcase app onto tomcat7
      - Run showcase on FF13
      - go to List - Overview page
      - Go to the multi-List part of the overview and do the following:
      Click on any item on list 1
      Transfer all items on list 1 to list 2
      click on any item on list 2
      Transfer all items on list 2 to list 3
      Click on any item on list 3
      Transfer all items on list 3 to list 1 (click transfer all twice)
      drag and drop an item from list 1 to list 2 (do this twice)
      drag and drop an item from list 2 to list 3 (This is where the error becomes visible, check item on list 3)

      using firebug, take a look at the item IDs and the recent move will show that the item ID didn't change after transfer to the new container.

        Activity

        Hide
        Nils Lundquist added a comment -

        Renaming slightly to better represent the issue. The IDs not changing is just a symptom of the bugged request.

        Show
        Nils Lundquist added a comment - Renaming slightly to better represent the issue. The IDs not changing is just a symptom of the bugged request.
        Hide
        Nils Lundquist added a comment -

        I've been able to reduce the test case to selecting a row and then dragging it to an empty list.

        Show
        Nils Lundquist added a comment - I've been able to reduce the test case to selecting a row and then dragging it to an empty list.
        Hide
        Nils Lundquist added a comment -

        Revision #29468
        Committed by nils.lundquist
        5 minutes ago
        ICE-8239 - Adjust deselectAll to optionally exclude an index. Used when deselecting existing selected indexes after dropping a new item into a list. DeselectAll was incorrectly deselecting the new item as if it were an existing member of the list.

        Show
        Nils Lundquist added a comment - Revision #29468 Committed by nils.lundquist 5 minutes ago ICE-8239 - Adjust deselectAll to optionally exclude an index. Used when deselecting existing selected indexes after dropping a new item into a list. DeselectAll was incorrectly deselecting the new item as if it were an existing member of the list.
        Hide
        Jerome Ruzol added a comment -

        Issue has moved onto the dual list part of the overview page. Server log provided error details below.

        12-Jun-2012 5:13:06 PM com.sun.faces.context.PartialViewContextImpl processPartial
        INFO: javax.faces.FacesException: org.icefaces.ace.json.JSONException: JSONArray[0] is not a number.
        javax.faces.FacesException: org.icefaces.ace.json.JSONException: JSONArray[0] is not a number.
        at org.icefaces.ace.component.list.ListRenderer.decode(ListRenderer.java:68)
        at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
        at org.icefaces.impl.component.UISeriesBase.processDecodes(UISeriesBase.java:521)
        at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506)
        at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
        at org.icefaces.impl.component.UISeriesBase.visitTree(UISeriesBase.java:1039)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
        at javax.faces.component.UIForm.visitTree(UIForm.java:371)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
        at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376)
        at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252)
        at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
        at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:248)
        at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
        at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183)
        at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:248)
        at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931)
        at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
        Caused by: org.icefaces.ace.json.JSONException: JSONArray[0] is not a number.
        at org.icefaces.ace.json.JSONArray.getDouble(JSONArray.java:308)
        at org.icefaces.ace.json.JSONArray.getInt(JSONArray.java:325)
        at org.icefaces.ace.component.list.ListDecoder.processSelections(ListDecoder.java:51)
        at org.icefaces.ace.component.list.ListRenderer.decode(ListRenderer.java:51)
        ... 41 more

        To reproduce (assuming app has been built/deployed onto tomcat7):
        -select first item on the list located on the left
        -transfer the one item to the list on the right
        -click on arrow to transfer all items to the list on the right
        -click on arrow to transfer all items to the list on the left
        -drag the highlighted item and drop it onto the list on the left
        -(check the ID of the single item located in the list on the right)

        Show
        Jerome Ruzol added a comment - Issue has moved onto the dual list part of the overview page. Server log provided error details below. 12-Jun-2012 5:13:06 PM com.sun.faces.context.PartialViewContextImpl processPartial INFO: javax.faces.FacesException: org.icefaces.ace.json.JSONException: JSONArray [0] is not a number. javax.faces.FacesException: org.icefaces.ace.json.JSONException: JSONArray [0] is not a number. at org.icefaces.ace.component.list.ListRenderer.decode(ListRenderer.java:68) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787) at org.icefaces.impl.component.UISeriesBase.processDecodes(UISeriesBase.java:521) at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506) at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183) at org.icefaces.impl.component.UISeriesBase.visitTree(UISeriesBase.java:1039) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) at javax.faces.component.UIForm.visitTree(UIForm.java:371) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623) at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:376) at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:252) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:248) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183) at javax.faces.context.PartialViewContextWrapper.processPartial(PartialViewContextWrapper.java:183) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:248) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:931) at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:1812) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Caused by: org.icefaces.ace.json.JSONException: JSONArray [0] is not a number. at org.icefaces.ace.json.JSONArray.getDouble(JSONArray.java:308) at org.icefaces.ace.json.JSONArray.getInt(JSONArray.java:325) at org.icefaces.ace.component.list.ListDecoder.processSelections(ListDecoder.java:51) at org.icefaces.ace.component.list.ListRenderer.decode(ListRenderer.java:51) ... 41 more To reproduce (assuming app has been built/deployed onto tomcat7): -select first item on the list located on the left -transfer the one item to the list on the right -click on arrow to transfer all items to the list on the right -click on arrow to transfer all items to the list on the left -drag the highlighted item and drop it onto the list on the left -(check the ID of the single item located in the list on the right)
        Hide
        Nils Lundquist added a comment -

        This is a different issue than the original one. Just because a symptom of the issue (the unupdated IDs) is the same doesn't mean they are equivalent. For reference the original issue was not constrained to the multi list example and could just as easily be caused in the dual list example.

        This problem is notably different due to the different steps required to run, different list instances required, and the presence of the 'processSelections' rather than 'processDeselections' in the stack trace. The underlying issues are different.

        I'll resolve this issue in this JIRA because the symptoms were similar in this case, but normally an issue with these differences would warrant a different JIRA.

        Show
        Nils Lundquist added a comment - This is a different issue than the original one. Just because a symptom of the issue (the unupdated IDs) is the same doesn't mean they are equivalent. For reference the original issue was not constrained to the multi list example and could just as easily be caused in the dual list example. This problem is notably different due to the different steps required to run, different list instances required, and the presence of the 'processSelections' rather than 'processDeselections' in the stack trace. The underlying issues are different. I'll resolve this issue in this JIRA because the symptoms were similar in this case, but normally an issue with these differences would warrant a different JIRA.
        Hide
        Jerome Ruzol added a comment -

        Updated procedure to reproduce issue:

        -select first item on the list located on the left
        -transfer the one item from the list on the left to the list on the right
        -click on arrow to transfer all items from the list on the left to the list on the right
        -click on arrow to transfer all items from the list on the right to the list on the left
        -drag the highlighted item from the list on the left and drop it onto the list on the right
        -(check the ID of the single item located in the list on the right)

        Show
        Jerome Ruzol added a comment - Updated procedure to reproduce issue: -select first item on the list located on the left -transfer the one item from the list on the left to the list on the right -click on arrow to transfer all items from the list on the left to the list on the right -click on arrow to transfer all items from the list on the right to the list on the left -drag the highlighted item from the list on the left and drop it onto the list on the right -(check the ID of the single item located in the list on the right)
        Hide
        Nils Lundquist added a comment -

        Revision #29491
        Committed by nils.lundquist
        Moments ago
        ICE-8239 - ace:list JS deselectAll() optional omitted item was not omitted from style class removal

        Show
        Nils Lundquist added a comment - Revision #29491 Committed by nils.lundquist Moments ago ICE-8239 - ace:list JS deselectAll() optional omitted item was not omitted from style class removal

          People

          • Assignee:
            Nils Lundquist
            Reporter:
            Jerome Ruzol
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: