You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@beehive.apache.org by "Rich Feit (JIRA)" <de...@beehive.apache.org> on 2005/09/12 21:43:32 UTC

[jira] Resolved: (BEEHIVE-912) The method removeSharedFlow( String sharedFlowClassName, HttpServletRequest request ) in org.apache.beehive.netui.pageflow.PageFlowUtils no longer removes a sharedflow from the session

     [ http://issues.apache.org/jira/browse/BEEHIVE-912?page=all ]
     
Rich Feit resolved BEEHIVE-912:
-------------------------------

    Resolution: Invalid
     Assign To: Alejandro Ramirez  (was: Rich Feit)

This is working as expected.  We don't support crawling through our internal session attributes... in this case, you're seeing behavior which was added for v1m1 which leaves session attributes in place until the end of the request, at which point they are removed.  We do this so that two concurrent requests will not conflict with each other -- in essence, they each have their own "copy" of the session to operate on.

I'm attaching a modified test that verifies:
    - If you call our official API (PageFlowUtils.getSharedFlow()) after calling PageFlowUtils.removeSharedFlow(), the shared flow is "officially" gone.
    - If you forward to another page flow (to avoid re-creating the same shared flow), you can crawl through session attributes on *another request* to ensure that that the shared flow instance is truly gone.  It may actually be worth having tests that do crawl through the session, but they will break from time to time as our internal functionality changes.

Let me know if you have any questions about this...

> The method removeSharedFlow( String sharedFlowClassName, HttpServletRequest request ) in org.apache.beehive.netui.pageflow.PageFlowUtils no longer removes a sharedflow from the session
> ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>          Key: BEEHIVE-912
>          URL: http://issues.apache.org/jira/browse/BEEHIVE-912
>      Project: Beehive
>         Type: Bug
>   Components: NetUI
>     Versions: V1
>     Reporter: Alejandro Ramirez
>     Assignee: Alejandro Ramirez
>     Priority: Critical
>      Fix For: V1
>  Attachments: sharedFlowApi.zip
>
> 1.- Unzip the attached pageflow into a beehive enabled webapp.
> 2.- Build and deploy your webapp and access the pageflow (e.g. http://localhost:<port>/<webapp_context>/sharedFlowApi/Controller.jpf
> In that page, hit the "verify" link and then the "Remove sharedFlowApi.SharedFlowApiTest from the Seession using PageFlowUtils.removeSharedFlow(String sharedFlowClassName, HttpServletRequest request)"  link
> Expected:  The page should display a message that confirms the fact that you have removed a sharedflow from the session.
> Actual: The sharedflow is still in the session.  The method removeSharedFlow( String sharedFlowClassName, HttpServletRequest request ) in org.apache.beehive.netui.pageflow.PageFlowUtils no longer removes a sharedflow from the session
> The structure of the sharedFlowApi.Controller.jpf pageflow is as follows:
> sharedFlowApi.Controller.jpf contains a sharedflow reference "sharedFlow2":
>     sharedFlowRefs={
>         @Jpf.SharedFlowRef(name="sharedFlow2", type=sharedFlowApi.pageFlowUtilApi.removeSharedFlow.AnotherSharedFlowApi.class)
>     }
> Then, I have an action method to remove the sharedflow as follows:
> 	@Jpf.Action(
>             forwards={
>                 @Jpf.Forward(
>                     name="success",
>                     navigateTo=Jpf.NavigateTo.currentPage
>                 )
>             }
>         )
>         public Forward pageFlowUtilRemoveSharedFlow()
>         {
>     		UseSharedFlowApi example = new UseSharedFlowApi(this.getRequest());
>     		example.removeSharedFlow();
> 	        String objectsInSession = null;
> 	        for(Enumeration sessionObjects = this.getSession().getAttributeNames(); sessionObjects.hasMoreElements();){
> 				if (SHAREDFLOW_TOREMOVE.equals(sessionObjects.nextElement()))
> 					objectsInSession = SHAREDFLOW_TOREMOVE + " is STILL in the session" + "\n";
> 	        }
> 			if (objectsInSession == null)
> 				objectsInSession = SHAREDFLOW_TOREMOVE + " has been REMOVED from the session" + "\n";
> 	        return new Forward( "success", "message", objectsInSession);
>         }
> The removeSharedFlow() method of sharedFlowApi.UseSharedFlowApi looks as follows:
> 	public void removeSharedFlow(){
> 		PageFlowUtils.removeSharedFlow(REMOVE_SHAREDFLOW, this.request);		
> 	}

-- 
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