Uploaded image for project: 'Tapestry 5'
  1. Tapestry 5
  2. TAP5-1866

ZoneRefresh mixin should perform cleanup if the zone is destroyed

    Details

    • Type: Improvement
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 5.3.2, 5.4
    • Fix Version/s: 5.4
    • Component/s: tapestry-core
    • Labels:

      Description

      Consider the following use case:
      A zone with a ZoneRefresh (located in another zone) is updated several times and then the outer zone is updated with another block.

      Currently, after the update, exceptions are constantly thrown by the javascript PeriodicUpdater in zone-refresh.js on the line "zoneRefresh.fire(Tapestry.ZONE_REFRESH_EVENT)" because the div element that's linked to the zone with Tapestry.Initializer.updateZoneOnEvent is not destroyed and the corresponding timer is also not destroyed.

      The ZoneRefresh mixin should cleanup after itself in scenarios like this.

      A patch with tests is provided.
      Summary:
      1. [MODIFIED] zone-refresh.js - On a timer update if the zone does not exist remove the "div" element on which the updates are triggered and stop the timer.
      2. [MODIFIED] ZoneRefreshTest.java - One test method added
      3. [ADDED] ZoneRefreshDestroyingZones.tml - Demo page with one outer zone with a ZoneRefresh mixin that toggles between two inner zones each a with ZoneRefresh mixin.
      4. [ADDED] ZoneRefreshDestroyingZones.java
      5. [MODIFIED] Index.tml - Link to ZoneRefreshDestroyingZones added

      The patch does not modify any public API.

      This patch is also blocked by TAP5-1867 "SeleniumTestCase.waitForElementToDisappear(String elementId) does not seem to work",
      because the patch uses SeleniumTestCase.waitForElementToDisappear(String elementId).

        Attachments

        1. TAP5-1866.patch
          7 kB
          Dragan Sahpaski

          Issue Links

            Activity

              People

              • Assignee:
                jkemnade Jochen Kemnade
                Reporter:
                dragan.sahpaski Dragan Sahpaski
              • Votes:
                2 Vote for this issue
                Watchers:
                7 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: