ZoneRefresh mixin should perform cleanup if the zone is destroyed
-----------------------------------------------------------------
Key: TAP5-1866
URL: https://issues.apache.org/jira/browse/TAP5-1866
Project: Tapestry 5
Issue Type: Improvement
Components: tapestry-core
Affects Versions: 5.3.2, 5.4
Reporter: Dragan Sahpaski
Priority: Minor
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 message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira