beehive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carlin Rogers (JIRA)" <...@beehive.apache.org>
Subject [jira] Created: (BEEHIVE-1103) PageFlowUtils.removeLongLivedPageFlow() from another page flow, fails to run the destroy() page flow life cycle method
Date Mon, 17 Apr 2006 20:17:17 GMT
PageFlowUtils.removeLongLivedPageFlow() from another page flow, fails to run the destroy()
page flow life cycle method
----------------------------------------------------------------------------------------------------------------------

         Key: BEEHIVE-1103
         URL: http://issues.apache.org/jira/browse/BEEHIVE-1103
     Project: Beehive
        Type: Bug

  Components: NetUI  
    Versions: V1, 1.0.1    
    Reporter: Carlin Rogers


Programmatically trying to remove a long lived page flow by calling PageFlowUtils.removeLongLivedPageFlow()
from another page flow, fails to run the destroy() page flow life cycle method, though the
long lived page flow does get removed from the session.

The destroy() method is not called because the long lived page flow attribute name does not
exist on the request (just on the session) when DeferredSessionStorageHandler.removeAttribute()
is called from the PageFlowUtils routine. Therefor it will not "Emulate a removeAttribute
on the session" and call the long lived page flow's valueUnbound() method. However, DSSH.removeAttribute()
does add this attribute to the change attribute list. Then at when DSSH.applyChanges() gets
called we do remove the the attribute abject from the session but without the PageFlowManagedObject.valueUnbound()
method calling the destroy().

Note that when the PageFlowUtils.removeLongLivedPageFlow() is called via  the long lived page
flow's own remove() routine (inherited from FlowController.remove()), then the attribute name
is on the request (as well as the session) and the destroy method gets called. However, a
page flow that calls its remove() method from within one of its actions may have undesirable
side effects or throw exceptions if the page flow has a @Control control. The remove() method
runs through the page flow destroy() life cycle method before the ControlContainerContext
endContrext() method and any onRelease() calls to the control.

This is probably not a scenario that is performed very often but was noted from some tests
of long lived page flows that contain controls. I'll submit these tests shortly.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message