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

ZoneRefresh mixin should perform cleanup if the zone is destroyed

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 5.3.2, 5.4
    • 5.4
    • tapestry-core

    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

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

              Dates

                Created:
                Updated:
                Resolved: