ICEfaces
  1. ICEfaces
  2. ICE-8922

Implement server-side determination of 'onElementUpdate' callback lists for each DOM update

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: EE-3.3.0.GA, 4.0.BETA, 4.0
    • Component/s: Bridge, Framework
    • Labels:
      None
    • Environment:
      ICEfaces framework, bridge
    • Assignee Priority:
      P2
    • Affects:
      Documentation (User Guide, Ref. Guide, etc.)

      Description

      Currently (3.2), when the bridge applies DOM updates it then scans all components looking for components with 'onElementUpdate' callbacks defined that are affected by the updated DOM region. This process occurs in JavaScript on the browser, and can be very expensive/slow particularly on IE7/8 browsers. This performance issue is preventing wide-scale adoption of the the onElementUpdate callback to improve JS memory cleanup in the ACE components.

      An improved implementation may be to compile a list of the components affected by a particular DOM update on the server, such that the bridge could then simply call each one's onElementUpdate callback in sequence and avoid the expensive searching through the component list on the browser. Presumably the callback list would be sent to the bridge as part of each DOM update message.

        Activity

        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34998 Mon May 13 16:21:32 MDT 2013 mark.collette ICE-8922 : Implement server-side determination of 'onElementUpdate' callback lists for each DOM update
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/compat/components/src/main/java/com/icesoft/faces/component/paneltabset/PanelTabSetRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34997 Mon May 13 16:10:43 MDT 2013 mark.collette ICE-8922 : Implement server-side determination of 'onElementUpdate' callback lists for each DOM update
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/submitmonitor/SubmitMonitorRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34648 Wed May 01 17:26:09 MDT 2013 mircea.toma ICE-8922 Use the same data-elementupdate marker on client and server.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/javascript/application.js
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34647 Wed May 01 16:45:46 MDT 2013 mircea.toma ICE-8922 Use same attribut name constant when markin or querying the element.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/util/ComponentUtils.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34636 Wed May 01 13:41:09 MDT 2013 mircea.toma ICE-9219 Register 'id' attribute as being the attribute name used to lookup elements in the document (thus helping with the element lookup on the server, such as in ICE-8922 feature).
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/compat/core/src/main/java/com/icesoft/faces/renderkit/dom_html_basic/DomBasicRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34590 Mon Apr 29 16:34:58 MDT 2013 mircea.toma ICE-8922 Modified server-side algorithm of finding elements marked as requiring onElementUpdate notification. Now the search starts from the updated elements and sends only the IDs of the marked child elements. Introduced org.icefaces.clientSideOnElementUpdateDetermination context parameter that can be used to switch the implementation of finding the elements with onElementUpdate callbacks to client or server side.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/event/BridgeSetup.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/javascript/application.js
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/util/EnvUtils.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34560 Fri Apr 26 14:00:16 MDT 2013 mircea.toma ICE-8922 Test for the existence of the looked up element before trying to assign its corresponding onElementUpdate callback. If not found a warning is logged.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/javascript/application.js
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34543 Thu Apr 25 16:14:33 MDT 2013 mircea.toma ICE-9219, ICE-8922 Revert previous "improvement" since it's causing regressions.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/compat/core/src/main/java/com/icesoft/faces/context/DOMContext.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34526 Thu Apr 25 06:17:15 MDT 2013 mircea.toma ICE-8922 Specify "id" attribute as the attribute used for looking up elements in the document.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/compat/core/src/main/java/com/icesoft/faces/context/DOMContext.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34503 Tue Apr 23 04:19:50 MDT 2013 mircea.toma ICE-8922 Removed algorithm timing.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34502 Tue Apr 23 04:09:08 MDT 2013 mircea.toma ICE-8922 Implemented server-side determination of the updated elements that potentially can have onElementUpdate callbacks registered on the client side. The method used is already described above, the only difference is that if the search through the parents succeeds in finding a marked element then the DSF starting from the updated element is no longer necessary. The components that are known to use onElementUpdate callbacks need now to mark the root of the generated markup by using ComponentUtils.enableOnElementUpdateNotify method. Modified search algorithm to give up when starting element cannot be found into the oldDOM.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/pushbutton/PushButtonRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/tree/TreeRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/themeselect/ThemeSelectRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/javascript/application.js
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/linkbutton/LinkButtonRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datatable/DataTableRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/checkboxbutton/CheckboxButtonRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/tableconfigpanel/TableConfigPanelRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/util/ComponentUtils.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/submitmonitor/SubmitMonitorRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datetimeentry/DateTimeEntryRenderer.java
        Repository Revision Date User Message
        ICEsoft Public SVN Repository #34473 Fri Apr 19 14:03:43 MDT 2013 mircea.toma ICE-8922 Revert changes until further test prove that everything works well.
        Files Changed
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/pushbutton/PushButtonRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/tree/TreeRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/themeselect/ThemeSelectRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/javascript/application.js
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/linkbutton/LinkButtonRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datatable/DataTableRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/checkboxbutton/CheckboxButtonRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/core/src/main/java/org/icefaces/impl/context/DOMPartialViewContext.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/tableconfigpanel/TableConfigPanelRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/util/ComponentUtils.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/submitmonitor/SubmitMonitorRenderer.java
        Commit graph MODIFY /icefaces3/trunk/icefaces/ace/component/src/org/icefaces/ace/component/datetimeentry/DateTimeEntryRenderer.java

          People

          • Assignee:
            Mircea Toma
            Reporter:
            Ken Fyten
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved: