You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beehive.apache.org by ri...@apache.org on 2004/09/14 09:32:13 UTC

svn commit: rev 46009 - in incubator/beehive/trunk/netui: src/compiler/org/apache/beehive/netui/compiler/grammar src/pageflow/org/apache/beehive/netui/pageflow src/pageflow/org/apache/beehive/netui/pageflow/internal src/util/schema test/webapps/drt/coreWeb/miniTests/backButton test/webapps/drt/coreWeb/miniTests/backButton/nestedOne test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo test/webapps/drt/testRecorder/config test/webapps/drt/testRecorder/tests

Author: rich
Date: Tue Sep 14 00:32:12 2004
New Revision: 46009

Added:
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/BackButtonController.jpf   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/index.jsp   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedOne/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedOne/NestedOneController.jpf   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedOne/index.jsp   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo/
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo/NestedTwoController.jpf   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo/index.jsp   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/BackButtonToNested.xml   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/BackButtonToNonNested.xml   (contents, props changed)
Modified:
   incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java
   incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
   incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd
   incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Log:
- Fixed a browser back button issue related to nesting.  The problem occurs with this sequence of requests:
    1) request an action on nested page flow A
    2) request nested page flow B (or an action on nested page flow B)
    3) press back button, and re-execute the action on A.

  What happened previously was that a new instance of page flow A was created, and the current instance of B was pushed onto the stack.  This is not intuitive, given the use of the back button (and is dangerous in that the nesting stack can grow unintentionally).  Now, unless a <pageflow-options><enable-renesting>true</enable-renesting></pageflow-options> configuration is present in /WEB-INF/netui-config.xml, the current instance of B will be discarded, and the original instance of A will be restored.

- Fixed an NPE that occurred when forwarding to a nested page flow using a relative path in a @Jpf.SimpleAction, e.g.,
    @Jpf.SimpleAction(name="foo", path="nested/NestedController.jpf")
    
DRT/BVT: netui (WinXP)
BB: self (linux)



Modified: incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java
==============================================================================
--- incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java	(original)
+++ incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathType.java	Tue Sep 14 00:32:12 2004
@@ -139,7 +139,7 @@
             if ( stringValue.endsWith( JPF_FILE_EXTENSION_DOT ) )
             {
                 String className = stringValue.substring( 0, stringValue.length() - JPF_FILE_EXTENSION_DOT.length() );
-                String pkg = classMember.getDeclaringType().getPackage().getQualifiedName();
+                String pkg = CompilerUtils.getOutermostClass( classMember ).getPackage().getQualifiedName();
                 className = ( pkg.length() > 0 ? pkg + '.' : "" ) + className.replace( '/', '.' );
                 TypeDeclaration type = getEnv().getTypeDeclaration( className );
                 fileToCheck = type != null ? CompilerUtils.getOriginalFile( type ) : null;

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java	Tue Sep 14 00:32:12 2004
@@ -538,6 +538,8 @@
     
     synchronized void create( HttpServletRequest request, HttpServletResponse response, ServletContext servletContext )
     {
+        reinitialize( request, response, servletContext );
+        
         PerRequestState prevState = setPerRequestState( new PerRequestState( request, response, null ) );
         
         try

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java	Tue Sep 14 00:32:12 2004
@@ -18,6 +18,8 @@
 package org.apache.beehive.netui.pageflow;
 
 import org.apache.beehive.netui.util.logging.Logger;
+import org.apache.beehive.netui.util.config.ConfigUtil;
+import org.apache.beehive.netui.util.config.bean.PageflowOptions;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 
 import javax.servlet.http.HttpServletRequest;
@@ -204,8 +206,9 @@
             String modulePath = PageFlowUtils.getModulePath( request );
             ModuleConfig mc = InternalUtils.getModuleConfig( modulePath, servletContext );
             boolean createdNew = false;
+            assert mc != null : "no module config for page flow class " + jpfClass.getName();
             
-            if ( mc != null && InternalUtils.isSingleton( mc ) )
+            if ( InternalUtils.isSingleton( mc ) )
             {
                 retVal = InternalUtils.getSingletonPageFlow( modulePath, request, false );
                 
@@ -218,6 +221,42 @@
                 }
             }
             
+            //
+            // First, see if this is a nested page flow that's already on the stack.  Unless "renesting" is explicitly
+            // enabled, we don't want to allow another instance of this page flow to be nested.  This is a common
+            // browser back-button problem:
+            //    1) request nested page flow A
+            //    2) request nested page flow B
+            //    3) press back button, and execute an action on A.
+            //
+            // This logic does not deal with immediate self-nesting (A->A), which is taken care of in
+            // PageFlowController.forwardTo().  Nested page flows can only self-nest by forwarding to the .jpf URI, not
+            // indirectly by executing actions on themselves (think about it -- that would be a disaster).
+            //
+            boolean isNestable = InternalUtils.isNestable( mc );
+            PageFlowStack pfStack = PageFlowStack.get( request, false );
+            
+            if ( isNestable && pfStack != null )
+            {
+                PageflowOptions options = ConfigUtil.getConfig().getPageflowOptions();
+                
+                if ( options == null || ! Boolean.parseBoolean( options.getEnableRenesting() ) )
+                {
+                    int lastIndexOfJpfClass = pfStack.lastIndexOf( request, jpfClass );
+                    
+                    if ( lastIndexOfJpfClass != -1 )
+                    {
+                        retVal = pfStack.popUntil( request, lastIndexOfJpfClass );
+                        retVal.persistInSession( request, response, servletContext );
+                        return retVal;
+                    }
+                }
+            }
+            
+            //
+            // OK, if it's not an existing singleton page flow, and if this wasn't a nested page flow already on the
+            // stack, then create a new instance.
+            //
             if ( retVal == null )
             {
                 if ( _log.isDebugEnabled() )
@@ -233,7 +272,7 @@
             // Store the previous PageFlowController on the nesting stack (if this one is nestable),
             // or destroy the nesting stack.
             //
-            if ( retVal.isNestable( request, servletContext ) )
+            if ( isNestable )
             {
                 //
                 // Call create() on the newly-created page flow.
@@ -248,7 +287,7 @@
                         _log.debug( "Pushing PageFlowController " + current + " onto the nesting stack" );
                     }
 
-                    PageFlowStack pfStack = PageFlowStack.get( request );
+                    if ( pfStack == null ) pfStack = PageFlowStack.get( request, true );
                     pfStack.push( current, request );
                 }
                 
@@ -259,8 +298,6 @@
                 //
                 // Going to a non-nested pageflow.  Blow away the pageflow stack.
                 //
-                PageFlowStack pfStack = PageFlowStack.get( request, false );
-                
                 if ( pfStack != null )
                 {
                     if ( _log.isDebugEnabled() )
@@ -294,21 +331,21 @@
                         // Note that we make the call to persistInSession *before* create, so the previous flow's
                         // onDestroy() gets called before the new one's onCreate().
                         //
+                        retVal.reinitialize( request, response, servletContext );
                         retVal.persistInSession( request, response, servletContext );
                         retVal.create( request, response, servletContext );
                     }
                 }
                 else
                 {
-                    retVal.persistInSession( request, response, servletContext );
-                    
                     //
-                    // We're actually using the newly-created page flow, so call create() on it.
+                    // We're actually using the newly-created page flow, so call create() on it (*after* persisting
+                    // in the session so the previous page flow's onDestroy() gets called before the new one's
+                    // onCreate()).
                     //
-                    if ( createdNew )
-                    {
-                        retVal.create( request, response, servletContext );
-                    }
+                    if ( createdNew ) retVal.reinitialize( request, response, servletContext );
+                    retVal.persistInSession( request, response, servletContext );
+                    if ( createdNew ) retVal.create( request, response, servletContext );
                 }
             }
                             

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java	Tue Sep 14 00:32:12 2004
@@ -116,34 +116,11 @@
      * flow with the intention of returning to the original one.  Page flows are declared to be nested
      * using the <code>@jpf:controller nested="true"</code> annotation.
      * 
-     * @param request the current HttpServletRequest.
-     * @param servletContext the current ServletContext.
-     * @return <code>true</code> if this PageFlowController can be nested.
-     */
-    boolean isNestable( HttpServletRequest request, ServletContext servletContext )
-    {
-        ControllerConfig cc = getModuleConfig( servletContext, request ).getControllerConfig();
-        
-        if ( cc instanceof PageFlowControllerConfig )
-        {
-            return ( ( PageFlowControllerConfig ) cc ).isNestedPageFlow();
-        }
-        else
-        {
-            return false;
-        }
-    }
-    
-    /**
-     * Tell whether this PageFlowController can be "nested", i.e., if it can be invoked from another page
-     * flow with the intention of returning to the original one.  Page flows are declared to be nested
-     * using the <code>@jpf:controller nested="true"</code> annotation.
-     * 
      * @return <code>true</code> if this PageFlowController can be nested.
      */
     protected boolean isNestable()
     {
-        return isNestable( getRequest(), getServletContext() );
+        return InternalUtils.isNestable( getModuleConfig() );
     }    
     
     /**
@@ -261,6 +238,7 @@
     final synchronized void create( HttpServletRequest request, HttpServletResponse response,
                                     ServletContext servletContext )
     {
+        reinitialize( request, response, servletContext );
         initializeSharedFlowField( request, response, servletContext );
         super.create( request, response, servletContext );
     }
@@ -275,7 +253,7 @@
         assert getRequest() != null : "this method can only be called during execute()";
         String contextPath = getRequest().getContextPath();
         assert contextPath.startsWith( "/" ) : contextPath;
-        return contextPath.substring( 1 ) + "." + getClass().getName();
+        return contextPath.substring( 1 ) + '.' + getClass().getName();
     }
     
     /**
@@ -305,7 +283,7 @@
      */ 
     protected ActionForm getPreviousForm()
     {
-        return ( _previousActionInfo != null ? _previousActionInfo.getForm() : null );
+        return _previousActionInfo != null ? _previousActionInfo.getForm() : null;
     }
     
     /**
@@ -416,7 +394,7 @@
         if ( prevPageInfo != null )
         {
             ActionForward prevForward = prevPageInfo.getForward();
-            return ( prevForward != null ? prevForward.getPath() : null );   
+            return prevForward != null ? prevForward.getPath() : null;   
         }
         else
         {
@@ -498,7 +476,7 @@
      */ 
     public final PreviousPageInfo getPreviousPageInfo()
     {
-        PreviousPageInfo ret = ( _previousPageInfo != null ? _previousPageInfo : _currentPageInfo );
+        PreviousPageInfo ret = _previousPageInfo != null ? _previousPageInfo : _currentPageInfo;
         
         if ( ret != null )
         {
@@ -590,7 +568,7 @@
             // Make sure previous-page is disabled in the SharedFlowController, too; if not, we can't do it.
             //
             ModuleConfig sharedFlowConfig = InternalUtils.getSharedFlowConfig( mc, request, servletContext );
-            ControllerConfig sc = ( sharedFlowConfig != null ? sharedFlowConfig.getControllerConfig() : null );
+            ControllerConfig sc = sharedFlowConfig != null ? sharedFlowConfig.getControllerConfig() : null;
             
             if ( sc == null ||
                  ( sc instanceof PageFlowControllerConfig && ( ( PageFlowControllerConfig ) sc ).isReturnToPageDisabled() ) )
@@ -632,7 +610,7 @@
         
         if ( ! forward.getContextRelative() )
         {
-            return ( path.indexOf( '/', 1 ) == -1 );     // all paths in Struts start with '/'
+            return path.indexOf( '/', 1 ) == -1;     // all paths in Struts start with '/'
         }
         else
         {
@@ -683,7 +661,7 @@
         // enough, obviously, since it's impossible to tell whether it should be executed
         // in the current pageflow or a new nested one.
         //
-        if ( superFwd != null && isNestable( request, servletContext ) )
+        if ( superFwd != null && InternalUtils.isNestable( getModuleConfig() ) )
         {
             boolean selfNesting = false;
             

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowStack.java	Tue Sep 14 00:32:12 2004
@@ -173,6 +173,33 @@
         return null;
     }
     
+    /**
+     * Pop page flows from the nesting stack until the given index.
+     * @return the last popped page flow of the given type.
+     */ 
+    PageFlowController popUntil( HttpServletRequest request, int index )
+    {
+        for ( int i = _stack.size() - 1; i > index; --i )
+        {
+            pop( request );
+        }
+        
+        return pop( request ).getPageFlow();
+    }
+    
+    int lastIndexOf( HttpServletRequest request, Class target )
+    {
+        for ( int i = _stack.size() - 1; i >= 0; --i )
+        {
+            if ( ( ( PushedPageFlow ) _stack.elementAt( i ) ).getPageFlow().getClass().equals( target ) )
+            {
+                return i;
+            }
+        }
+        
+        return -1;
+    }
+    
     void ensureFailover( HttpServletRequest request )
     {
         String name =

Modified: incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
==============================================================================
--- incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java	(original)
+++ incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java	Tue Sep 14 00:32:12 2004
@@ -389,6 +389,15 @@
         }
     }
     
+    /**
+     * Tell whether the given module is a nested page flow.
+     */ 
+    public static boolean isNestable( ModuleConfig moduleConfig )
+    {
+        ControllerConfig cc = moduleConfig.getControllerConfig();
+        return cc instanceof PageFlowControllerConfig && ( ( PageFlowControllerConfig ) cc ).isNestedPageFlow();
+    }
+     
     public static String getSingletonFlowAttr( String modulePath )
     {
         return SINGLETON_PAGEFLOWS_ATTR_PREFIX + modulePath;

Modified: incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd
==============================================================================
--- incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd	(original)
+++ incubator/beehive/trunk/netui/src/util/schema/netui-config.xsd	Tue Sep 14 00:32:12 2004
@@ -13,6 +13,7 @@
                 <xsd:element name="expression-languages" type="netui:expression-languages" minOccurs="1" maxOccurs="1"/>
                 <xsd:element name="pageflow-action-interceptors" type="netui:pageflow-action-interceptors" minOccurs="0" maxOccurs="1"/>
                 <xsd:element name="pageflow-handlers" type="netui:pageflow-handlers" minOccurs="0" maxOccurs="1"/>
+                <xsd:element name="pageflow-options" type="netui:pageflow-options" minOccurs="0" maxOccurs="1"/>
                 <xsd:element name="type-converters" type="netui:type-converters" minOccurs="0" maxOccurs="1"/>
                 <xsd:element name="iterator-factories" type="netui:iterator-factories" minOccurs="0" maxOccurs="1"/>
             </xsd:sequence>
@@ -56,6 +57,12 @@
             <xsd:element name="forward-redirect-handler-class" type="xsd:string" minOccurs="0" maxOccurs="1"/>
             <xsd:element name="reloadable-class-handler-class" type="xsd:string" minOccurs="0" maxOccurs="1"/>
             <xsd:element name="exceptions-handler-class" type="xsd:string" minOccurs="0" maxOccurs="1"/>
+        </xsd:sequence>
+    </xsd:complexType>
+	
+    <xsd:complexType name="pageflow-options">
+        <xsd:sequence>
+            <xsd:element name="enable-renesting" type="xsd:string" minOccurs="0" maxOccurs="1" default="false"/>
         </xsd:sequence>
     </xsd:complexType>
 	

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/BackButtonController.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/BackButtonController.jpf	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,28 @@
+package miniTests.backButton;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+
+@Jpf.Controller(
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp"),
+        @Jpf.SimpleAction(name="submit", path="index.jsp"),
+        @Jpf.SimpleAction(name="goNested", path="nestedOne/NestedOneController.jpf"),
+        @Jpf.SimpleAction(name="nestedOneDone", path="index.jsp")
+    }
+)
+public class BackButtonController extends PageFlowController
+{
+    private String _state;
+    
+    public void setState( String state )
+    {
+        _state = state;
+    }
+    
+    public String getState()
+    { 
+        return _state;
+    }
+}

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/index.jsp	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,21 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        <netui:form action="submit">
+            state: <netui:textBox dataSource="pageFlow.state" />
+            <netui:button value="submit"/>
+        </netui:form>
+        <br/>
+        <netui:anchor action="goNested">goNested</netui:anchor>
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedOne/NestedOneController.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedOne/NestedOneController.jpf	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,18 @@
+package miniTests.backButton.nestedOne;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+@Jpf.Controller(
+    nested=true,
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp"),
+        @Jpf.SimpleAction(name="backButton", path="/miniTests/backButton/BackButtonController.jpf"),
+        @Jpf.SimpleAction(name="goNestedTwo", path="/miniTests/backButton/nestedTwo/NestedTwoController.jpf"),
+        @Jpf.SimpleAction(name="nestedTwoDone", path="index.jsp"),
+        @Jpf.SimpleAction(name="done", returnAction="nestedOneDone")
+    }
+)
+public class NestedOneController extends PageFlowController
+{
+}

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedOne/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedOne/index.jsp	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,24 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+                    
+
+        <netui:anchor action="done">return from nesting</netui:anchor>
+        <br/>
+        <netui:anchor action="backButton">simulate back button</netui:anchor>
+        <br/>
+        <netui:anchor action="goNestedTwo">goNestedTwo</netui:anchor>
+
+                
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo/NestedTwoController.jpf
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo/NestedTwoController.jpf	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,21 @@
+package miniTests.backButton.nestedTwo;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.PageFlowStack;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+@Jpf.Controller(
+    nested=true,
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp"),
+        @Jpf.SimpleAction(name="backButton", path="/miniTests/backButton/nestedOne/NestedOneController.jpf"),
+        @Jpf.SimpleAction(name="done", returnAction="nestedTwoDone")
+    }
+)
+public class NestedTwoController extends PageFlowController
+{
+    public int getStackSize()
+    {
+        return PageFlowStack.get( getRequest() ).size();
+    }
+}

Added: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo/index.jsp
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/backButton/nestedTwo/index.jsp	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,23 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib prefix="netui" uri="http://beehive.apache.org/netui/tags-html-1.0"%>
+<%@ taglib prefix="netui-data" uri="http://beehive.apache.org/netui/tags-databinding-1.0"%>
+<%@ taglib prefix="netui-template" uri="http://beehive.apache.org/netui/tags-template-1.0"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        Page flow stack size: <b><netui:span value="${pageFlow.stackSize}"/></b>
+        <br/>
+        <br/>
+        <netui:anchor action="done">done</netui:anchor>
+        <br/>
+        <netui:anchor action="backButton">simulate back button</netui:anchor>
+
+                
+    </netui:body>
+</netui:html>
+
+  
\ No newline at end of file

Modified: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml	(original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml	Tue Sep 14 00:32:12 2004
@@ -1123,6 +1123,32 @@
          </features>
       </test>
       <test>
+         <name>BackButtonToNested</name>
+         <description>Test of using the back button to go back from a nested page flow (B) to another nested page flow (A).  Unless pageflow-renesting is enabled in netui-config.xml, the previous instance of A should be used; a new instance of A should not be created, and the page flow stack should not grow in size.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>PageFlow</feature>
+            <feature>Nesting</feature>
+         </features>
+      </test>
+      <test>
+         <name>BackButtonToNonNested</name>
+         <description>Test of using the back button to go from a nested page flow to a non-nested page flow.  The original non-nested page flow instance should be retrieved, not a new one.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>bvt</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>PageFlow</feature>
+            <feature>Nesting</feature>
+         </features>
+      </test>
+      <test>
          <name>BeginForm</name>
          <description>Test passing a form to the begin node.</description>
          <webapp>coreWeb</webapp>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/BackButtonToNested.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/BackButtonToNested.xml	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,603 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>BackButtonToNested</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>14 Sep 2004, 01:09:50.811 AM MDT</ses:startDate>
+   <ses:description>Test of using the back button to go back from a nested page flow (B) to another nested page flow (A).  Unless pageflow-renesting is enabled in netui-config.xml, the previous instance of A should be used; a new instance of A should not be created, and the page flow stack should not grow in size.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/BackButtonController.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/index.jsp">
+    </head>
+    <body>
+        <form id="Netui_Form_0" action="/coreWeb/miniTests/backButton/submit.do" method="post">
+            state: <input type="text" name="{pageFlow.state}">
+            <input type="submit" value="submit">
+        </form>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/goNested.do">goNested</a>
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/goNested.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/BackButtonController.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/index.jsp">
+    </head>
+    <body>
+                    
+
+        <a href="/coreWeb/miniTests/backButton/nestedOne/done.do">return from nesting</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/backButton.do">simulate back button</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do">goNestedTwo</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/goNested.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedTwo/index.jsp">
+    </head>
+    <body>
+        Page flow stack size: <b><span>2</span></b>
+        <br/>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedTwo/done.do">done</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedTwo/backButton.do">simulate back button</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/nestedTwo/done.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/index.jsp">
+    </head>
+    <body>
+                    
+
+        <a href="/coreWeb/miniTests/backButton/nestedOne/done.do">return from nesting</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/backButton.do">simulate back button</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do">goNestedTwo</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>5</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/nestedTwo/done.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedTwo/index.jsp">
+    </head>
+    <body>
+        Page flow stack size: <b><span>2</span></b>
+        <br/>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedTwo/done.do">done</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedTwo/backButton.do">simulate back button</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>6</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/nestedTwo/backButton.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/index.jsp">
+    </head>
+    <body>
+                    
+
+        <a href="/coreWeb/miniTests/backButton/nestedOne/done.do">return from nesting</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/backButton.do">simulate back button</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do">goNestedTwo</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>7</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/nestedTwo/backButton.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedTwo/index.jsp">
+    </head>
+    <body>
+        Page flow stack size: <b><span>2</span></b>
+        <br/>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedTwo/done.do">done</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedTwo/backButton.do">simulate back button</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>14 Sep 2004, 01:10:25.671 AM MDT</ses:endDate>
+   <ses:testCount>7</ses:testCount>
+</ses:recorderSession>

Added: incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/BackButtonToNonNested.xml
==============================================================================
--- (empty file)
+++ incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/BackButtonToNonNested.xml	Tue Sep 14 00:32:12 2004
@@ -0,0 +1,524 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+   <ses:sessionName>BackButtonToNonNested</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>14 Sep 2004, 01:07:25.061 AM MDT</ses:startDate>
+   <ses:description>Test of using the back button to go from a nested page flow to a non-nested page flow.  The original non-nested page flow instance should be retrieved, not a new one.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/BackButtonController.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/index.jsp">
+    </head>
+    <body>
+        <form id="Netui_Form_0" action="/coreWeb/miniTests/backButton/submit.do" method="post">
+            state: <input type="text" name="{pageFlow.state}">
+            <input type="submit" value="submit">
+        </form>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/goNested.do">goNested</a>
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/submit.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{pageFlow.state}</ses:name>
+                  <ses:value>hello</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-length</ses:name>
+                  <ses:value>26</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>content-type</ses:name>
+                  <ses:value>application/x-www-form-urlencoded</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/BackButtonController.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/index.jsp">
+    </head>
+    <body>
+        <form id="Netui_Form_0" action="/coreWeb/miniTests/backButton/submit.do" method="post">
+            state: <input type="text" name="{pageFlow.state}" value="hello">
+            <input type="submit" value="submit">
+        </form>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/goNested.do">goNested</a>
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/goNested.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/submit.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/index.jsp">
+    </head>
+    <body>
+                    
+
+        <a href="/coreWeb/miniTests/backButton/nestedOne/done.do">return from nesting</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/backButton.do">simulate back button</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do">goNestedTwo</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/nestedOne/done.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/goNested.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/index.jsp">
+    </head>
+    <body>
+        <form id="Netui_Form_0" action="/coreWeb/miniTests/backButton/submit.do" method="post">
+            state: <input type="text" name="{pageFlow.state}" value="hello">
+            <input type="submit" value="submit">
+        </form>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/goNested.do">goNested</a>
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>5</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/goNested.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/done.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/nestedOne/index.jsp">
+    </head>
+    <body>
+                    
+
+        <a href="/coreWeb/miniTests/backButton/nestedOne/done.do">return from nesting</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/backButton.do">simulate back button</a>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/nestedOne/goNestedTwo.do">goNestedTwo</a>
+
+                
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>6</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            <ses:uri>/coreWeb/miniTests/backButton/nestedOne/backButton.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>1EFA23C682DD4F794ADCF9D4D64176CB</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:cookie>
+            </ses:cookies>
+            <ses:headers>
+               <ses:header>
+                  <ses:name>accept</ses:name>
+                  <ses:value>text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-charset</ses:name>
+                  <ses:value>ISO-8859-1,utf-8;q=0.7,*;q=0.7</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-encoding</ses:name>
+                  <ses:value>gzip,deflate</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>accept-language</ses:name>
+                  <ses:value>en-us,en;q=0.5</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>connection</ses:name>
+                  <ses:value>keep-alive</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>cookie</ses:name>
+                  <ses:value>JSESSIONID=1EFA23C682DD4F794ADCF9D4D64176CB; JSESSIONID=BGW6JYzRPXwMGsREGLZ6XOzud7KqQEKDYx2UH92rwqrxUvl44p0a!-709003086</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  <ses:value>http://localhost:8080/coreWeb/miniTests/backButton/goNested.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 4.01 Transitional//EN"
+	"http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+        <base href="http://localhost:8080/coreWeb/miniTests/backButton/index.jsp">
+    </head>
+    <body>
+        <form id="Netui_Form_0" action="/coreWeb/miniTests/backButton/submit.do" method="post">
+            state: <input type="text" name="{pageFlow.state}" value="hello">
+            <input type="submit" value="submit">
+        </form>
+        <br/>
+        <a href="/coreWeb/miniTests/backButton/goNested.do">goNested</a>
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>14 Sep 2004, 01:07:46.442 AM MDT</ses:endDate>
+   <ses:testCount>6</ses:testCount>
+</ses:recorderSession>