ICEfaces
  1. ICEfaces
  2. ICE-10638

New ace:panelStack with custom tag-handler rendering optimization and client capabilities

    Details

    • Type: New Feature New Feature
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: EE-3.3.0.GA_P02, EE-4.0.0.GA
    • Fix Version/s: 4.1, EE-3.3.0.GA_P04
    • Component/s: ACE-Components
    • Labels:
      None
    • Environment:
      ace tagHandler

      Description

      create a custom component to incorporate old features of ice:panelStack but to also include performance optimizations with ability of children to not be included in the server-side component tree and to not continually update a child if content is static. Each panelStack would only show the selected panel, but each child would determine whether it would be included in the server-side tree (facelet="false" would be default so same as regular jsf managed content) for example:-
      <ace:panelStack selectedId="pane2">
          <ace:stackPane id="pane1" client="true">
               <!-- some content here-->
          </ace:stackPane>
          <ace:stackPane id="pane2" >
              <!-- some content here but this content would be regular
                      jsf handled content and managed by domdiff algorithm
                      and rendered flag to either show the content or not-->
          </ace:stackPane>
          <ace:stackPane id="pane3" facelet="true">
               <!-- some content here but this would NOT be part of the server side
                    component tree unless it were the selectedId of the parent-->
          </ace:stackPane>
      </ace:panelStack>
      ........
      The panelStack would require a proxy so that each child could contain it's own form and the panelStack would always be updated as to which child is selected.
      facelet="true" would act same as ui:include, but these components can be nested without worrying about the issues regarding ui:include and jstl tags since the div is always rendered, it's just the content of the divs which would be either included in the component tree (or not if facelet="true").

      if you want other content to be rendered, you would nest your panelStacks:-
      Modification to this could be having a list of selectedId's instead of a single selectedId, but easiest to implement a singleId to be included than a list of them. (take longer to implement).
      for example:-
      <ace:panelStack id="stack1" selectedId="pane1">
         <ace:stackPane id="pane1" client="true">
               <!-- some content here-->
          </ace:stackPane>
          <ace:stackPane id="pane2" >
              <!-- some content here but this content would be regular
                      jsf handled content and managed by domdiff algorithm
                      and rendered flag to either show the content or not-->
          </ace:stackPane>
          <ace:stackPane id="pane3" facelet="true">
                <ace:panelStack id="stack2" seletedId="pane5">
                      <ace:stackPane id="pane4" facelet="true">
                             <!-- note this panes content is not in the tree unless pane 3 and
                                      pane4 are both selected -->
                      </ace:stackPane>
                      <ace:stackPane id="pane5" facelet="true">
                             <!-- note this panes content is not in the tree unless pane 3 and
                                      pane5 are both selected -->
                      </ace:stackPane>
                     <ace:stackPane id="pane6">
                           <!-- note this panes content is not in the tree unless pane 3 and
                                      is selected even if pane6 is not selected-->
                      </ace:stackPane>
               </ace:panelStack>
          </ace:stackPane>
      </ace:panelStack>

      The client="true" does not have to immediately be part of this component, but might be something to consider down the road....(?). Main difference between this component and ice:panelStack is that child pane's content can be removed from component tree unless it is "selected".
      1. ist3.png
        1023 kB
      2. list1.png
        1009 kB
      3. list2.png
        1008 kB

        Issue Links

          Activity

          Judy Guglielmin created issue -
          Judy Guglielmin made changes -
          Field Original Value New Value
          Assignee Judy Guglielmin [ judy.guglielmin ]
          Ken Fyten made changes -
          Summary create ace:panelStack with custom taghandler and client capability features New ace:panelStack with custom tag-handler rendering optimization and client capabilities
          Arran Mccullough made changes -
          Support Case References Support Case #13374 - https://icesoft.my.salesforce.com/50070000016KZZU
          Judy Guglielmin made changes -
          Attachment panelStack.zip [ 19186 ]
          Hide
          Judy Guglielmin added a comment -

          test had three lists of types of records. select control allows user to change these records and the bottom part of the page is the ice:panelSeries which controls the stack to show the correct panes are being rendered/selected.

          Show
          Judy Guglielmin added a comment - test had three lists of types of records. select control allows user to change these records and the bottom part of the page is the ice:panelSeries which controls the stack to show the correct panes are being rendered/selected.
          Judy Guglielmin made changes -
          Attachment ist3.png [ 19187 ]
          Attachment list1.png [ 19188 ]
          Attachment list2.png [ 19189 ]
          Ken Fyten made changes -
          Fix Version/s 4.1 [ 11375 ]
          Affects Documentation (User Guide, Ref. Guide, etc.),Sample App./Tutorial [ 10003, 10001 ]
          Assignee Priority P1 [ 10010 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #44752 Thu May 21 14:42:01 MDT 2015 judy.guglielmin ICE-10638 initial checkin. Still working on test app for QA, but initial features are present and key features tested
          Files Changed
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/stackPane/stackpane.css
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackMeta.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneHandler.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/resources/icefaces.ace/stackPane
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackRenderer.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneRenderer.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/api/StackPaneController.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxy.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyMeta.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyRenderer.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStack.java
          Commit graph ADD /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneMeta.java
          Hide
          Judy Guglielmin added a comment -

          initial eclipse project of tests for ace:panelStack. for 3.3 mtce branch, will also include panelStack inside of ice:panelSeries.

          Show
          Judy Guglielmin added a comment - initial eclipse project of tests for ace:panelStack. for 3.3 mtce branch, will also include panelStack inside of ice:panelSeries.
          Judy Guglielmin made changes -
          Attachment panelStack.zip [ 19780 ]
          Judy Guglielmin made changes -
          Attachment panelStack.zip [ 19186 ]
          Ken Fyten made changes -
          Fix Version/s EE-3.3.0.GA_P03 [ 11572 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #44774 Tue May 26 12:42:07 MDT 2015 judy.guglielmin ICE-10638 remove reference to ClientDescriptor as it is unused.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackRenderer.java
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPaneRenderer.java
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStack.java
          Judy Guglielmin made changes -
          Attachment panelStack3.zip [ 19781 ]
          Hide
          Liana Munroe added a comment -

          Verified ICEfaces EE-3.3.0 maintenance branch and ICEfaces 4 trunk r44781. Not yet committed to EE-3.3.0.GA_P03 tag.
          Test applications added to:
          http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces2/Sparkle/Manual/panelStack
          http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces4/Sparkle/Manual/panelStack

          Show
          Liana Munroe added a comment - Verified ICEfaces EE-3.3.0 maintenance branch and ICEfaces 4 trunk r44781. Not yet committed to EE-3.3.0.GA_P03 tag. Test applications added to: http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces2/Sparkle/Manual/panelStack http://dev.icesoft.com/svn/repo/qa/trunk/Regression-Icefaces4/Sparkle/Manual/panelStack
          Ken Fyten made changes -
          Fix Version/s EE-3.3.0.GA_P04 [ 12270 ]
          Fix Version/s EE-3.3.0.GA_P03 [ 11572 ]
          Ken Fyten made changes -
          Assignee Judy Guglielmin [ judy.guglielmin ] Ken Fyten [ ken.fyten ]
          Ken Fyten made changes -
          Assignee Ken Fyten [ ken.fyten ] Mircea Toma [ mircea.toma ]
          Hide
          Mircea Toma added a comment - - edited

          Refactored and simplified ace:panelStack and ace:stackPane components. Implemented lazy creation of stack pane children. The changes were applied only to maintenance branch for now.

          Show
          Mircea Toma added a comment - - edited Refactored and simplified ace:panelStack and ace:stackPane components. Implemented lazy creation of stack pane children. The changes were applied only to maintenance branch for now.
          Hide
          Ken Fyten added a comment -

          The showcase panelStack demo is failing on the 3.3 maintenance branch with:

          java.lang.NullPointerException
          	com.sun.faces.facelets.tag.TagAttributeImpl.getBoolean(TagAttributeImpl.java:136)
          	org.icefaces.ace.component.stackpane.StackPaneHandler.applyNextHandler(StackPaneHandler.java:44)
          Show
          Ken Fyten added a comment - The showcase panelStack demo is failing on the 3.3 maintenance branch with: java.lang.NullPointerException com.sun.faces.facelets.tag.TagAttributeImpl.getBoolean(TagAttributeImpl.java:136) org.icefaces.ace.component.stackpane.StackPaneHandler.applyNextHandler(StackPaneHandler.java:44)
          Hide
          Mircea Toma added a comment -

          I cannot reproduce the NullPointerException. I can see this exception instead when selecting a different query in ace:panelStack demo from showcase:

          javax.faces.FacesException: Cannot remove the same component twice: frm1:tbl1:0:stack1:out2
          	at com.sun.faces.context.StateContext$AddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:523)
          	at com.sun.faces.context.StateContext$AddRemoveListener.handleRemove(StateContext.java:392)
          	at com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:355)
          	at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
          	at com.sun.faces.application.ApplicationImpl.processListenersAccountingForAdds(ApplicationImpl.java:2212)
          	at com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2033)
          	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:292)
          	at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247)
          	at javax.faces.component.UIComponentBase.disconnectFromView(UIComponentBase.java:2230)
          	at javax.faces.component.UIComponentBase.doPreRemoveProcessing(UIComponentBase.java:1894)
          	at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:393)
          	at javax.faces.component.UIComponentBase$ChildrenList.remove(UIComponentBase.java:2712)
          	at org.icefaces.ace.component.stackpane.StackPane.createChildren(StackPane.java:65)
          	at org.icefaces.ace.component.stackpane.StackPaneRenderer.encodeChildren(StackPaneRenderer.java:78)
          	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
          	at org.icefaces.ace.renderkit.CoreRenderer.renderChild(CoreRenderer.java:82)
          	at org.icefaces.ace.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:70)
          	at org.icefaces.ace.component.panelstack.PanelStackRenderer.encodeChildren(PanelStackRenderer.java:92)
          	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
          
          Show
          Mircea Toma added a comment - I cannot reproduce the NullPointerException. I can see this exception instead when selecting a different query in ace:panelStack demo from showcase : javax.faces.FacesException: Cannot remove the same component twice: frm1:tbl1:0:stack1:out2 at com.sun.faces.context.StateContext$AddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:523) at com.sun.faces.context.StateContext$AddRemoveListener.handleRemove(StateContext.java:392) at com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:355) at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106) at com.sun.faces.application.ApplicationImpl.processListenersAccountingForAdds(ApplicationImpl.java:2212) at com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2033) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:292) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247) at javax.faces.component.UIComponentBase.disconnectFromView(UIComponentBase.java:2230) at javax.faces.component.UIComponentBase.doPreRemoveProcessing(UIComponentBase.java:1894) at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:393) at javax.faces.component.UIComponentBase$ChildrenList.remove(UIComponentBase.java:2712) at org.icefaces.ace.component.stackpane.StackPane.createChildren(StackPane.java:65) at org.icefaces.ace.component.stackpane.StackPaneRenderer.encodeChildren(StackPaneRenderer.java:78) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847) at org.icefaces.ace.renderkit.CoreRenderer.renderChild(CoreRenderer.java:82) at org.icefaces.ace.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:70) at org.icefaces.ace.component.panelstack.PanelStackRenderer.encodeChildren(PanelStackRenderer.java:92) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
          Hide
          Mircea Toma added a comment -

          Fixed above exception by taking the pane out of the view while removing children to avoid having JSF replay the removal.

          Show
          Mircea Toma added a comment - Fixed above exception by taking the pane out of the view while removing children to avoid having JSF replay the removal.
          Hide
          Ken Fyten added a comment -

          I noticed that on Tomcat 7 the showcase demo works fine, however, on Tomcat 8, it blows up with the following exception as soon as you select it from the left-side menu:

          HTTP Status 500 -
          
          type Exception report
          
          message
          
          description The server encountered an internal error that prevented it from fulfilling this request.
          
          exception
          
          javax.servlet.ServletException
          	javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
          	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
          
          root cause
          
          java.lang.NullPointerException
          	com.sun.faces.facelets.tag.TagAttributeImpl.getBoolean(TagAttributeImpl.java:136)
          	org.icefaces.ace.component.stackpane.StackPaneHandler.applyNextHandler(StackPaneHandler.java:44)
          	com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:187)
          	javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
          	javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
          	javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
          	com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:187)
          Show
          Ken Fyten added a comment - I noticed that on Tomcat 7 the showcase demo works fine, however, on Tomcat 8, it blows up with the following exception as soon as you select it from the left-side menu: HTTP Status 500 - type Exception report message description The server encountered an internal error that prevented it from fulfilling this request. exception javax.servlet.ServletException javax.faces.webapp.FacesServlet.service(FacesServlet.java:606) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) root cause java.lang.NullPointerException com.sun.faces.facelets.tag.TagAttributeImpl.getBoolean(TagAttributeImpl.java:136) org.icefaces.ace.component.stackpane.StackPaneHandler.applyNextHandler(StackPaneHandler.java:44) com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:187) javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:187)
          Ken Fyten made changes -
          Assignee Mircea Toma [ mircea.toma ] Judy Guglielmin [ judy.guglielmin ]
          Hide
          Judy Guglielmin added a comment -

          corrected a pre-existing problem with isSelected (still referring to currentId), so removed all reference to old attribute currentID (unnecessary...just use selectedId).
          then fixed a renderer issue when not using the 'var' attribute (again from modifying the code when var was added).
          Now, note that as long as you don't interact with children inside the panes via ajax, then the current handler works. However, the customer wants to view and update information from database, so if you add a form with input fields and ajax, then you get the following exception:-
          Jun 08, 2015 4:01:54 PM org.icefaces.impl.application.ExtendedExceptionHandler handle
          WARNING: queued exception
          javax.faces.FacesException: Cannot add the same component twice: ps1:0:stack1:j_id462749121_1b94fc9e
          at com.sun.faces.context.StateContext$AddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:510)
          at com.sun.faces.context.StateContext$AddRemoveListener.handleAdd(StateContext.java:437)
          at com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:359)
          at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
          at com.sun.faces.application.ApplicationImpl.processListenersAccountingForAdds(ApplicationImpl.java:2212)
          at com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2033)
          at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:292)
          at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247)
          at javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2203)
          at javax.faces.component.UIComponentBase.doPostAddProcessing(UIComponentBase.java:1885)
          at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:405)
          at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2637)
          at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2609)
          at com.sun.faces.facelets.tag.jsf.ComponentSupport.addComponent(ComponentSupport.java:415)
          at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.addComponentToView(ComponentTagHandlerDelegateImpl.java:299)
          at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:199)
          at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
          at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
          at org.icefaces.ace.component.stackpane.StackPaneHandler.access$001(StackPaneHandler.java:25)
          at org.icefaces.ace.component.stackpane.StackPaneHandler$2.run(StackPaneHandler.java:51)
          at org.icefaces.ace.component.stackpane.StackPane.createChildren(StackPane.java:60)
          at org.icefaces.ace.component.stackpane.StackPaneRenderer.encodeChildren(StackPaneRenderer.java:78)
          at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
          at org.icefaces.ace.renderkit.CoreRenderer.renderChild(CoreRenderer.java:82)
          at org.icefaces.ace.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:70)
          at org.icefaces.ace.component.panelstack.PanelStackRenderer.encodeChildren(PanelStackRenderer.java:85)
          at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
          at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335)
          at com.icesoft.faces.component.panelseries.PanelSeriesRenderer.encodeChildren(PanelSeriesRenderer.java:82)
          at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
          at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819)
          at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1822)
          at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:153)
          at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:973)
          at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819)
          at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:421)
          at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
          at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
          at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
          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)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
          at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
          at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)
          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
          at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
          at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
          at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
          at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
          at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
          at java.lang.Thread.run(Thread.java:745)
          ......
          the showcase example can be modified to include a form with input and ajax to each stackPane, or the attached panelStack3 (eclipse) app can be reviewed with the simpleProxy.jsf or panelSeries.jsf pages to see this exception. Doesn't matter which server is used....

          Show
          Judy Guglielmin added a comment - corrected a pre-existing problem with isSelected (still referring to currentId), so removed all reference to old attribute currentID (unnecessary...just use selectedId). then fixed a renderer issue when not using the 'var' attribute (again from modifying the code when var was added). Now, note that as long as you don't interact with children inside the panes via ajax, then the current handler works. However, the customer wants to view and update information from database, so if you add a form with input fields and ajax, then you get the following exception:- Jun 08, 2015 4:01:54 PM org.icefaces.impl.application.ExtendedExceptionHandler handle WARNING: queued exception javax.faces.FacesException: Cannot add the same component twice: ps1:0:stack1:j_id462749121_1b94fc9e at com.sun.faces.context.StateContext$AddRemoveListener.handleAddRemoveWithAutoPrune(StateContext.java:510) at com.sun.faces.context.StateContext$AddRemoveListener.handleAdd(StateContext.java:437) at com.sun.faces.context.StateContext$AddRemoveListener.processEvent(StateContext.java:359) at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106) at com.sun.faces.application.ApplicationImpl.processListenersAccountingForAdds(ApplicationImpl.java:2212) at com.sun.faces.application.ApplicationImpl.invokeViewListenersFor(ApplicationImpl.java:2033) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:292) at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247) at javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2203) at javax.faces.component.UIComponentBase.doPostAddProcessing(UIComponentBase.java:1885) at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:405) at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2637) at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2609) at com.sun.faces.facelets.tag.jsf.ComponentSupport.addComponent(ComponentSupport.java:415) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.addComponentToView(ComponentTagHandlerDelegateImpl.java:299) at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:199) at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) at org.icefaces.ace.component.stackpane.StackPaneHandler.access$001(StackPaneHandler.java:25) at org.icefaces.ace.component.stackpane.StackPaneHandler$2.run(StackPaneHandler.java:51) at org.icefaces.ace.component.stackpane.StackPane.createChildren(StackPane.java:60) at org.icefaces.ace.component.stackpane.StackPaneRenderer.encodeChildren(StackPaneRenderer.java:78) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847) at org.icefaces.ace.renderkit.CoreRenderer.renderChild(CoreRenderer.java:82) at org.icefaces.ace.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:70) at org.icefaces.ace.component.panelstack.PanelStackRenderer.encodeChildren(PanelStackRenderer.java:85) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847) at com.icesoft.faces.renderkit.dom_html_basic.DomBasicRenderer.encodeParentAndChildren(DomBasicRenderer.java:335) at com.icesoft.faces.component.panelseries.PanelSeriesRenderer.encodeChildren(PanelSeriesRenderer.java:82) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1822) at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:153) at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:973) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:421) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125) at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) 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) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) ...... the showcase example can be modified to include a form with input and ajax to each stackPane, or the attached panelStack3 (eclipse) app can be reviewed with the simpleProxy.jsf or panelSeries.jsf pages to see this exception. Doesn't matter which server is used....
          Judy Guglielmin made changes -
          Attachment panelStack3.zip [ 19781 ]
          Hide
          Judy Guglielmin added a comment -

          see the panelSeries example for closest example required by customer.

          Show
          Judy Guglielmin added a comment - see the panelSeries example for closest example required by customer.
          Judy Guglielmin made changes -
          Attachment panelStack3.zip [ 19984 ]
          Judy Guglielmin made changes -
          Attachment panelStack3.zip [ 19984 ]
          Judy Guglielmin made changes -
          Attachment panelStack3.zip [ 19985 ]
          Hide
          Mircea Toma added a comment -

          Fixed NullPointerException by testing if TagAttribute.getObject returns null before invoking TagAttribute.getBoolean.

          Show
          Mircea Toma added a comment - Fixed NullPointerException by testing if TagAttribute.getObject returns null before invoking TagAttribute.getBoolean .
          Judy Guglielmin made changes -
          Attachment panelStack.zip [ 19780 ]
          Hide
          Mircea Toma added a comment -

          Take stack pane out of the view while adding children to avoid having JSF replay the addition.

          Show
          Mircea Toma added a comment - Take stack pane out of the view while adding children to avoid having JSF replay the addition.
          Mircea Toma made changes -
          Status Open [ 1 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Hide
          Ken Fyten added a comment - - edited

          Re-opened for the following:

          1. Since this component is now working properly when nested inside UISeries and UIData containers, we have decided to remove the internal UISeries functionality ("var" attribute) from the component as this is seen as redundant and adding unnecessary complexity to the component.

          2. It should be possible to support use of the component when it is not included inside of a form using an ICEfaces feature that would automatically use a utility form on the page to submit the component when necessary. This needs to be implemented and tested, particularly on older IE browsers (3.3). If testing is successful on all supported browsers, the ace:panelStackProxy component can be removed (unnecessary).

          Show
          Ken Fyten added a comment - - edited Re-opened for the following: 1. Since this component is now working properly when nested inside UISeries and UIData containers, we have decided to remove the internal UISeries functionality ("var" attribute) from the component as this is seen as redundant and adding unnecessary complexity to the component. 2. It should be possible to support use of the component when it is not included inside of a form using an ICEfaces feature that would automatically use a utility form on the page to submit the component when necessary. This needs to be implemented and tested, particularly on older IE browsers (3.3). If testing is successful on all supported browsers, the ace:panelStackProxy component can be removed (unnecessary).
          Ken Fyten made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Assignee Judy Guglielmin [ judy.guglielmin ] Mircea Toma [ mircea.toma ]
          Hide
          Mircea Toma added a comment -

          Simplified panel stack by extending it from UIOutput (see 1) above). Removed 'Var' example since attribute is not supported anymore. Removed panel stack proxy since form inside stack panes do submit and state is updated for the components included in the stack panes.

          Show
          Mircea Toma added a comment - Simplified panel stack by extending it from UIOutput (see 1) above). Removed 'Var' example since attribute is not supported anymore. Removed panel stack proxy since form inside stack panes do submit and state is updated for the components included in the stack panes.
          Judy Guglielmin made changes -
          Assignee Mircea Toma [ mircea.toma ] Judy Guglielmin [ judy.guglielmin ]
          Judy Guglielmin made changes -
          Assignee Judy Guglielmin [ judy.guglielmin ] Arturo Zambrano [ artzambrano ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45051 Wed Jun 17 11:48:29 MDT 2015 judy.guglielmin ICE-10638 forgot to remove ProxyForm from IF4
          Files Changed
          Commit graph DEL /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxy.java
          Commit graph DEL /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyMeta.java
          Commit graph DEL /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/panelstack/PanelStackFormProxyRenderer.java
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45060 Wed Jun 17 15:55:02 MDT 2015 art.zambrano ICE-10638 added parent demo class to sub-demos
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/samples/showcase/showcase/src/main/java/org/icefaces/samples/showcase/example/ace/panelStack/PanelStackDataTable.java
          Arturo Zambrano made changes -
          Assignee Arturo Zambrano [ artzambrano ] Judy Guglielmin [ judy.guglielmin ]
          Ken Fyten made changes -
          Comment [ A comment with security level 'icesoft-internal-developers' was removed. ]
          Ken Fyten made changes -
          Comment [ A comment with security level 'icesoft-internal-developers' was removed. ]
          Hide
          Ken Fyten added a comment -

          Assigned to Mircea to resolve ui:include-intensive use-case.

          Show
          Ken Fyten added a comment - Assigned to Mircea to resolve ui:include-intensive use-case.
          Ken Fyten made changes -
          Assignee Judy Guglielmin [ judy.guglielmin ] Mircea Toma [ mircea.toma ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45101 Wed Jun 24 17:40:25 MDT 2015 mircea.toma ICE-10638 Allow children creation to occur multiple times for the same stack pane instance since the UISeries type containers reuse the same instance while iterating.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Hide
          Mircea Toma added a comment -

          Modified StackPane class to allow children creation to occur multiple times for the same instance since the UISeries type containers reuse the same instance while iterating.

          Show
          Mircea Toma added a comment - Modified StackPane class to allow children creation to occur multiple times for the same instance since the UISeries type containers reuse the same instance while iterating.
          Mircea Toma made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Ken Fyten made changes -
          Link This issue blocks ICE-10747 [ ICE-10747 ]
          Hide
          Judy Guglielmin added a comment -

          please see the attached project iceMock2
          note that when you change from small to medium to large, a "PropertyNotFoundException" is thrown.
          Also got this exception when trying to input values into an input field.

          Show
          Judy Guglielmin added a comment - please see the attached project iceMock2 note that when you change from small to medium to large, a "PropertyNotFoundException" is thrown. Also got this exception when trying to input values into an input field.
          Judy Guglielmin made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Hide
          Judy Guglielmin added a comment -

          zipped up project. Must add ICEfaces CIM patched jars with jsf 2.1.28 and jstl jar.

          Show
          Judy Guglielmin added a comment - zipped up project. Must add ICEfaces CIM patched jars with jsf 2.1.28 and jstl jar.
          Judy Guglielmin made changes -
          Attachment iceMock2.zip [ 20280 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45255 Tue Jun 30 06:16:18 MDT 2015 mircea.toma ICE-10638 Visit only the children of the selected stack pane.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Hide
          Mircea Toma added a comment -

          Modified StackPane.visitTree method to visit only the children of the selected stack pane.

          Show
          Mircea Toma added a comment - Modified StackPane.visitTree method to visit only the children of the selected stack pane.
          Mircea Toma made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Hide
          Judy Guglielmin added a comment - - edited

          Remaining problems exists with ace:checkboxButton / f:selectBooleanCheckbox and ace:comboBox when used with ace:ajax / f:ajax. This is visible in the showcase example using either ace:checkboxButton or h:selectBooleanCheckbox. ice:selectBooleanCheckbox works as it does NOT use ace:ajax or f:ajax. ace:comboBox does not work either (see first simple example). By do not work, they do not get decoded properly and save their state.

          fixed the other 2 showcase example which did not even show the checkbox stackPane (application code)
          problem with these components not keeping their state in the first example -request is good, but it is not decoding/saving state correctly. ice component does.

          Note that now was the following js console error for the component/widgets in the stackPanes:-
          Uncaught TypeError: Cannot read property 'updateProperties' of undefined
          ....
          fixed this by using mandatory configuration for tabSet.

          Show
          Judy Guglielmin added a comment - - edited Remaining problems exists with ace:checkboxButton / f:selectBooleanCheckbox and ace:comboBox when used with ace:ajax / f:ajax. This is visible in the showcase example using either ace:checkboxButton or h:selectBooleanCheckbox. ice:selectBooleanCheckbox works as it does NOT use ace:ajax or f:ajax. ace:comboBox does not work either (see first simple example). By do not work, they do not get decoded properly and save their state. fixed the other 2 showcase example which did not even show the checkbox stackPane (application code) problem with these components not keeping their state in the first example -request is good, but it is not decoding/saving state correctly. ice component does. Note that now was the following js console error for the component/widgets in the stackPanes:- Uncaught TypeError: Cannot read property 'updateProperties' of undefined .... fixed this by using mandatory configuration for tabSet.
          Judy Guglielmin made changes -
          Resolution Fixed [ 1 ]
          Status Resolved [ 5 ] Reopened [ 4 ]
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45260 Tue Jun 30 13:10:53 MDT 2015 judy.guglielmin ICE-10638 fix example for checkbox
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/samples/showcase/showcase/src/main/webapp/resources/examples/ace/panelStack/panelStackDataTable.xhtml
          Hide
          Judy Guglielmin added a comment -

          fixed showcase examples for checkbox and resource loading tabSet rev 45260 IF4 and rev 45259 for IF 3.3 mtce.

          Show
          Judy Guglielmin added a comment - fixed showcase examples for checkbox and resource loading tabSet rev 45260 IF4 and rev 45259 for IF 3.3 mtce.
          Hide
          Judy Guglielmin added a comment -

          iceads1.icesoft.domain/Public/Users/mircea/iceMock3.war
          location of new test case for problem with ice:selectInputDate and ice:selectInputText which do not popup or work within ace:panelStack.
          choose medium or large button (top example and small is the one that is not in the panelStack).

          Still issue with ace:checkboxButton and ace:comboBox as well not maintaining state in showcase examples

          Show
          Judy Guglielmin added a comment - iceads1.icesoft.domain/Public/Users/mircea/iceMock3.war location of new test case for problem with ice:selectInputDate and ice:selectInputText which do not popup or work within ace:panelStack. choose medium or large button (top example and small is the one that is not in the panelStack). Still issue with ace:checkboxButton and ace:comboBox as well not maintaining state in showcase examples
          Repository Revision Date User Message
          ICEsoft Public SVN Repository #45263 Thu Jul 02 17:35:26 MDT 2015 mircea.toma ICE-10638 Modified StackPane.visitTree method to visit only the children of the selected stack pane BUT avoid to shortcut the tree visiting by returning 'true' for non-selected stack panes.
          Files Changed
          Commit graph MODIFY /icefaces4/trunk/icefaces/ace/component/src/org/icefaces/ace/component/stackpane/StackPane.java
          Hide
          Mircea Toma added a comment -

          Modified StackPane.visitTree method once again to visit only the children of the selected stack pane but avoid to shortcut the tree visiting when non-selected stack panes are encountered.

          Show
          Mircea Toma added a comment - Modified StackPane.visitTree method once again to visit only the children of the selected stack pane but avoid to shortcut the tree visiting when non-selected stack panes are encountered.
          Mircea Toma made changes -
          Status Reopened [ 4 ] Resolved [ 5 ]
          Resolution Fixed [ 1 ]
          Judy Guglielmin made changes -
          Link This issue blocks ICE-10751 [ ICE-10751 ]
          Ken Fyten made changes -
          Status Resolved [ 5 ] Closed [ 6 ]

            People

            • Assignee:
              Mircea Toma
              Reporter:
              Judy Guglielmin
            • Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: