[
https://issues.apache.org/jira/browse/TAP5-1866?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dragan Sahpaski updated TAP5-1866:
----------------------------------
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).
was:
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.
> 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
> Labels: patch, zonerefresh
> Attachments: TAP5-1866.patch
>
>
> 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).
--
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