Author: rich
Date: Thu Dec  2 23:27:28 2004
New Revision: 109641

URL: http://svn.apache.org/viewcvs?view=rev&rev=109641
Log:
- Changed PageFlowRequestProcessor to avoid the inversion of ordering from the 
base RequestProcessor when calling processActionCreate().  The FlowController 
class is now created/retrieved at the beginning of a request, and 
processActionCreate() merely uses the cached value and confirms that it is of 
the correct type.
- Split out two new processing stages in PageFlowRequestProcessor: 
processActionOverride and processPageFlowRequest.
- Fixed expression evaluation in Simple Actions and in declarative validation.  
This broke when we switched to JSP 2.0 EL, which requires that implicit objects 
be loaded in a known place before evaluation.
- Fixed fallback Shared Flow action handling in the case where there is no root 
page flow and no Struts module explicitly registered in web.xml.
- Added a DRT for Simple Actions.

DRT/BVT: netui (WinXP)
BB: self (linux)


Added:
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java
      - copied, changed from r109353, 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/SimpleActionsController.jpf
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/index.jsp
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page1.jsp
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page2.jsp
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page3.jsp
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SimpleAction.xml
   (contents, props changed)
Removed:
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java
   
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/cache/ServletContextCache.java
Modified:
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.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/PageFlowController.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java
   
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/RequestValues.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/buttonSubmit/Controller.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 Thu Dec  2 23:27:28 2004
@@ -428,7 +428,11 @@
                             _log.info( "There is no root module at " + path + 
"; initializing a default module." );
                         }
                         
-                        // The one that's being set up now is sufficient.
+                        //
+                        // Set the ControllerConfig to a 
MissingRootModuleControllerConfig.  This is used by
+                        // PageFlowRequestProcessor.
+                        //
+                        config.setControllerConfig( new 
MissingRootModuleControllerConfig() );
                     }
                     else
                     {
@@ -476,6 +480,13 @@
 
     }
 
+    static class MissingRootModuleControllerConfig extends ControllerConfig
+    {
+        public MissingRootModuleControllerConfig()
+        {
+            setProcessorClass( PageFlowRequestProcessor.class.getName() );
+        }
+    }
 
     /**
      * Register a Struts module, initialized by the given configuration file.

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
  Thu Dec  2 23:27:28 2004
@@ -39,7 +39,7 @@
     private Map _pageInputs;
     
     
-    void persistInSession( HttpServletRequest request, HttpServletResponse 
response )
+    public void persistInSession( HttpServletRequest request, 
HttpServletResponse response )
     {
         HttpServletRequest unwrappedRequest = PageFlowUtils.unwrapMultipart( 
request );
         ScopedServletUtils.setScopedSessionAttr( 
InternalConstants.FACES_BACKING_ATTR, this, unwrappedRequest );

Deleted: 
/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java?view=auto&rev=109640
==============================================================================

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java&r2=109641
==============================================================================
--- 
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
    Thu Dec  2 23:27:28 2004
@@ -527,7 +527,7 @@
         return new NotLoggedInException( actionName );
     }
     
-    synchronized void create( HttpServletRequest request, HttpServletResponse 
response, ServletContext servletContext )
+    public synchronized void create( HttpServletRequest request, 
HttpServletResponse response, ServletContext servletContext )
     {
         reinitialize( request, response, servletContext );
         

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java&r2=109641
==============================================================================
--- 
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
        Thu Dec  2 23:27:28 2004
@@ -166,7 +166,7 @@
         return true;
     }
     
-    void persistInSession( HttpServletRequest request, HttpServletResponse 
response )
+    public void persistInSession( HttpServletRequest request, 
HttpServletResponse response )
     {
         PageFlowController currentPageFlow = PageFlowUtils.getCurrentPageFlow( 
request );
         
@@ -254,7 +254,7 @@
         return InternalUtils.getSharedFlow( this, getRequest(), getResponse(), 
getServletContext() );
     }
     
-    final synchronized void create( HttpServletRequest request, 
HttpServletResponse response,
+    public final synchronized void create( HttpServletRequest request, 
HttpServletResponse response,
                                     ServletContext servletContext )
     {
         reinitialize( request, response, servletContext );

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObject.java
     Thu Dec  2 23:27:28 2004
@@ -51,14 +51,18 @@
     
     /**
      * Initialize transient data that may have been lost during session 
failover.
-     * @exclude public for Portal
+     * @exclude
      */ 
     public void reinitialize( HttpServletRequest request, HttpServletResponse 
response, ServletContext servletContext )
     {
         _servletContext = servletContext;
     }
 
-    synchronized void create( HttpServletRequest request, HttpServletResponse 
response, ServletContext servletContext )
+    /**
+     * Initialize.
+     * @exclude
+     */ 
+    public synchronized void create( HttpServletRequest request, 
HttpServletResponse response, ServletContext servletContext )
         throws Exception
     {
         reinitialize( request, response, servletContext );
@@ -111,9 +115,10 @@
     protected abstract void deleteFromSession( HttpServletRequest request );
     
     /**
-     * Stores this object in the user session, in the appropriate place.
+     * Store this object in the user session, in the appropriate place.
+     * @exclude
      */ 
-    abstract void persistInSession( HttpServletRequest request, 
HttpServletResponse response );
+    public abstract void persistInSession( HttpServletRequest request, 
HttpServletResponse response );
     
     /**
      * Ensures that any changes to this object will be replicated in a cluster 
(for failover),

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
        Thu Dec  2 23:27:28 2004
@@ -36,8 +36,6 @@
 import org.apache.struts.Globals;
 
 import org.apache.beehive.netui.core.urls.URLRewriterService;
-import org.apache.beehive.netui.script.common.BundleMap;
-import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 import org.apache.beehive.netui.util.logging.Logger;
 import org.apache.beehive.netui.util.FileUtils;
 import org.apache.beehive.netui.util.ServletUtils;
@@ -46,6 +44,7 @@
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.pageflow.internal.InternalConstants;
 import org.apache.beehive.netui.pageflow.internal.ServerAdapterManager;
+import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 
 
 /**
@@ -225,7 +224,7 @@
                         FlowController.PerRequestState newState =
                                 new FlowController.PerRequestState( request, 
response, null );
                         FlowController.PerRequestState prevState = 
curJpf.setPerRequestState( newState );
-                        setImplicitObjects( request, response, curJpf );
+                        ImplicitObjectUtil.loadImplicitObjects( request, 
response, _servletContext, curJpf );
                                 
                         //
                         // Tell the page flow that we're about to display a 
page so it can manage settings,
@@ -251,28 +250,9 @@
         }
         else
         {
-            setImplicitObjects( request, response, null );
+            ImplicitObjectUtil.loadImplicitObjects( request, response, 
_servletContext, null );
             chain.doFilter( request, response );
         }
-    }
-    
-    private void setImplicitObjects( HttpServletRequest request, 
HttpServletResponse response, PageFlowController curJpf )
-    {
-        // @todo: need to wrap this in checks for JSP 1.2
-        // @todo: feature: need to add support for chaining in user-code to 
run when setting implicit objects on the request
-        if ( curJpf != null )
-        {
-            FacesBackingBean fbb =
-                    FacesBackingBeanFactory.getFacesBackingBeanForRequest( 
request, response, _servletContext );
-            ImplicitObjectUtil.loadPageFlow( request, curJpf, fbb );
-        }
-        
-        SharedFlowController sf = 
FlowControllerFactory.getSharedFlowForRequest( request, response, 
_servletContext );
-        ImplicitObjectUtil.loadSharedFlow( request, sf );
-        
-        // @todo: need to move bundleMap creation to a BundleMapFactory
-        BundleMap bundleMap = new BundleMap( request, _servletContext, null );
-        ImplicitObjectUtil.loadBundleMap( request, bundleMap );
     }
     
     private void initializeModule( HttpServletRequest request, 
HttpServletResponse response )

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
  Thu Dec  2 23:27:28 2004
@@ -74,6 +74,7 @@
 import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler;
 import org.apache.beehive.netui.pageflow.handler.LoginHandler;
 import org.apache.beehive.netui.pageflow.handler.ReloadableClassHandler;
+import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 
 import static org.apache.beehive.netui.pageflow.internal.InternalConstants.*;
 import static org.apache.beehive.netui.pageflow.PageFlowConstants.*;
@@ -99,7 +100,6 @@
     private static final String REDIRECT_REQUEST_ATTRS_PARAM = "forceRedirect";
     private static final String FORWARDED_BY_BUTTON_OVERRIDE_ATTR = 
ATTR_PREFIX + "buttonForward";
     private static final String PROCESS_POPULATE_ALREADY_CALLED_ATTR = 
ATTR_PREFIX + "processPopulateCalled";
-    private static final String ALREADY_GOT_ACTION_ATTR = ATTR_PREFIX + 
"prefetchedAction";
     private static final String MULTIPART_REQUEST_WRAPPER_ATTR = ATTR_PREFIX + 
"multipartWrapper";
     private static final String PAGEFLOW_SCOPED_FORM_NAME_ATTR = ATTR_PREFIX + 
"pageFlowScopedFormName";
     private static final String FLOW_CONTROLLER_ACTION_CLASSNAME = 
FlowControllerAction.class.getName();
@@ -113,41 +113,19 @@
                                           ActionMapping actionMapping )
         throws IOException
     {
-        //
-        // We may have already created the action in processActionForm().
-        //
-        Action alreadyGotAction = ( Action ) request.getAttribute( 
ALREADY_GOT_ACTION_ATTR );
-        
-        if ( alreadyGotAction != null )
-        {
-            request.removeAttribute( ALREADY_GOT_ACTION_ATTR );
-            return alreadyGotAction;
-        }
-        
-        
         String className = actionMapping.getType();
 
         if ( className != null && className.equals( 
FLOW_CONTROLLER_ACTION_CLASSNAME ) )
         {
-            ServletContext servletContext = getServletContext();
-            String flowControllerClassName = actionMapping.getParameter();
-            assert flowControllerClassName != null : 
FLOW_CONTROLLER_ACTION_CLASSNAME +
-                                                     " requires the flow 
controller classname as its parameter.";
-            try
-            {
-                Class flowControllerClass =
-                        InternalUtils.getReloadableClass( 
flowControllerClassName, request, servletContext );
-                FlowController flowController =
-                        InternalUtils.getFlowController( flowControllerClass, 
request, response, servletContext );
-                Action action = new FlowControllerAction( flowController, 
flowControllerClass );
-                action.setServlet( servlet );
-                return action;
-            }
-            catch ( ClassNotFoundException e )
-            {
-                _log.error( "Could not find class " + flowControllerClassName, 
e );
-                return null;
-            }
+            FlowController fc = RequestValues.getCurrentFlowController( 
request );
+            assert fc != null : "no FlowController for request " + 
request.getRequestURI();
+            assert fc.getClass().getName().equals( 
actionMapping.getParameter() )
+                    : "current page flow  type " + fc.getClass().getName() + " 
does not match type specified in "
+                      + FLOW_CONTROLLER_ACTION_CLASSNAME + ": " + 
actionMapping.getParameter();
+            
+            Action action = new FlowControllerAction( fc );
+            action.setServlet( servlet );
+            return action;
         }
         else
         {
@@ -227,8 +205,7 @@
         return instance;
     }
     
-    private Field getPageFlowScopedFormMember( ActionMapping mapping, 
HttpServletRequest request,
-                                               HttpServletResponse response )
+    private Field getPageFlowScopedFormMember( ActionMapping mapping, 
HttpServletRequest request )
     {
         if ( mapping instanceof PageFlowActionMapping )
         {
@@ -239,11 +216,8 @@
             {
                 if ( formMember != null )
                 {
-                    Action action = processActionCreate( request, response, 
mapping );
-                    assert action instanceof FlowControllerAction : 
action.getClass().getName();
-                    FlowControllerAction fcAction = ( FlowControllerAction ) 
action;
-                    request.setAttribute( ALREADY_GOT_ACTION_ATTR, action );
-                    Field field = 
fcAction.getFlowControllerClass().getDeclaredField( formMember );
+                    FlowController fc = 
RequestValues.getCurrentFlowController( request );
+                    Field field = fc.getClass().getDeclaredField( formMember );
                     field.setAccessible( true );
                     return field;
                 }
@@ -269,7 +243,7 @@
         //
         // See if we're using a pageflow-scoped form (a member variable in the 
current pageflow).
         //
-        Field formMemberField = getPageFlowScopedFormMember( mapping, request, 
response );
+        Field formMemberField = getPageFlowScopedFormMember( mapping, request 
);
         
         //
         // First look to see whether the input form was overridden in the 
request.
@@ -290,9 +264,8 @@
             {
                 try
                 {
-                    Action action = ( Action ) request.getAttribute( 
ALREADY_GOT_ACTION_ATTR );
-                    assert action instanceof FlowControllerAction : 
action.getClass().getName();
-                    FlowController fc = ( ( FlowControllerAction ) action 
).getFlowController();
+                    FlowController fc = 
RequestValues.getCurrentFlowController( request );
+                    assert fc != null : "no FlowController in request " + 
request.getRequestURI();
                     formMemberField.set( fc, InternalUtils.unwrapFormBean(  
previousForm ) );
                 }
                 catch ( IllegalAccessException e )
@@ -327,9 +300,7 @@
         {
             try
             {
-                Action action = ( Action ) request.getAttribute( 
ALREADY_GOT_ACTION_ATTR );
-                assert action instanceof FlowControllerAction : 
action.getClass().getName();
-                FlowController fc = ( ( FlowControllerAction ) action 
).getFlowController();
+                FlowController fc = RequestValues.getCurrentFlowController( 
request );
                 ActionForm form = InternalUtils.wrapFormBean( 
formMemberField.get( fc ) );
                 
                 if ( form == null ) // the pageflow hasn't filled the value yet
@@ -470,6 +441,61 @@
         }
     }
 
+    /**
+     * The requested action can be overridden by a request parameter.  In this 
case, we parse the action from
+     * the request parameter and forward to a URI constructed from it.
+     * 
+     * @param request the current HttpServletRequest
+     * @param response the current HttpServletResponse
+     * @return <code>true</code> if the action was overridden by a request 
parameter, in which case the request
+     *         was forwarded.
+     * @throws IOException
+     * @throws ServletException    
+     */ 
+    protected boolean processActionOverride( HttpServletRequest request, 
HttpServletResponse response )
+        throws IOException, ServletException
+    {
+        // Only make this check if this is an initial (non-forwarded) request.
+        //
+        // TODO: performance?
+        //
+        if ( request.getAttribute( FORWARDED_BY_BUTTON_OVERRIDE_ATTR ) == null 
)
+        {
+            request.setAttribute( FORWARDED_BY_BUTTON_OVERRIDE_ATTR, 
Boolean.TRUE );
+            
+            //
+            // First, since we need access to request parameters here, process 
a multipart request
+            // if that's what we have.  This puts the parameters (each in a 
MIME part) behind an
+            // interface that makes them look like normal request parameters.
+            //
+            HttpServletRequest multipartAwareRequest = processMultipart( 
request );
+            
+            for ( Enumeration e = multipartAwareRequest.getParameterNames(); 
e.hasMoreElements(); )
+            {
+                String paramName = ( String ) e.nextElement();
+
+                if ( paramName.startsWith( ACTION_OVERRIDE_PARAM_PREFIX ) )
+                {
+                    String actionPath = paramName.substring( 
ACTION_OVERRIDE_PARAM_PREFIX_LEN );
+                    ServletContext servletContext = getServletContext();
+
+                    String qualifiedAction = InternalUtils.qualifiedAction( 
servletContext,actionPath );
+                    actionPath = InternalUtils.createActionPath(request, 
qualifiedAction );
+
+                    if ( _log.isDebugEnabled() )
+                    {
+                        _log.debug( "A request parameter overrode the action.  
Forwarding to: " + actionPath );
+                    }
+
+                    doForward( actionPath, request, response );
+                    return true;
+                }
+            }
+        }
+        
+        return false;
+    }
+    
     private void processInternal( HttpServletRequest request, 
HttpServletResponse response )
             throws IOException, ServletException
     {
@@ -532,58 +558,87 @@
         }
 
         //
-        // First create the appropriate SharedFlowController if it doesn't 
exist.
+        // The requested action can be overridden by a request parameter.  In 
this case, we parse the action from
+        // the request parameter and forward to a URI constructed from it.  If 
this happens, just return.
+        //
+        if ( processActionOverride( request, response ) ) return;
+        
+        //
+        // Create the appropriate SharedFlowController if it doesn't exist.
         //
         if ( _log.isInfoEnabled() )
         {
             _log.info( "Attempting to instantiate a SharedFlowController for 
request " + request.getRequestURI() );
         }
         
-        FlowControllerFactory.getSharedFlowForRequest( request,  response, 
getServletContext() );
-
         //
-        // Some of our tags can override the Action through a 
request-parameter.  If this
-        // is the case, forward to the right action.  Only make this check if 
this is an
-        // initial (non-forwarded) request.
+        // Process any direct request for a page flow by forwarding to its 
"begin" action.
+        //
+        if ( processPageFlowRequest( request, response, uri ) ) return;
+
         //
-        // @TODOsp1 performance?
+        // Get the FlowController for this request (page flow or shared flow), 
and cache it in the request.
         //
-        if ( request.getAttribute( FORWARDED_BY_BUTTON_OVERRIDE_ATTR ) == null 
)
+        String flowControllerClassName = 
InternalUtils.getFlowControllerClassName( moduleConfig );
+        
+        if ( flowControllerClassName == null &&
+             ! ( moduleConfig instanceof 
AutoRegisterActionServlet.MissingRootModuleControllerConfig ) )
         {
-            request.setAttribute( FORWARDED_BY_BUTTON_OVERRIDE_ATTR, 
Boolean.TRUE );
-            
             //
-            // First, since we need access to request parameters here, process 
a multipart request
-            // if that's what we have.  This puts the parameters (each in a 
MIME part) behind an
-            // interface that makes them look like normal request parameters.
+            // If this isn't a blank module initialized in place of a missing 
root PageFlowController, emit a warning
+            // about the missing controllerClass property.
             //
-            HttpServletRequest multipartAwareRequest = processMultipart( 
request );
-            
-            for ( Enumeration e = multipartAwareRequest.getParameterNames(); 
e.hasMoreElements(); )
+            _log.warn( "Struts module " + moduleConfig.getPrefix() + " is 
configured to use " + getClass().getName()
+                        + " as the request processor, but the <controller> 
element does not contain a <set-property>"
+                        + " for \"controllerClass\".  Page Flow actions in 
this module may not be handled correctly." );
+        }
+        
+        if ( flowControllerClassName != null )
+        {
+            try
             {
-                String paramName = ( String ) e.nextElement();
-
-                if ( paramName.startsWith( ACTION_OVERRIDE_PARAM_PREFIX ) )
-                {
-                    String actionPath = paramName.substring( 
ACTION_OVERRIDE_PARAM_PREFIX_LEN );
-
-                    String qualifiedAction = 
InternalUtils.qualifiedAction(servletContext,actionPath);
-                    actionPath = InternalUtils.createActionPath(request, 
qualifiedAction );
-
-                    if ( _log.isDebugEnabled() )
-                    {
-                        _log.debug( "A request parameter overrode the action.  
Forwarding to: " + actionPath );
-                    }
-
-                    ForwardRedirectHandler handler = ContextCache.get( 
servletContext ).getForwardRedirectHandler();
-                    handler.forward( actionPath, request, response );
-                    return;
-                }
+                FlowController fc =
+                        InternalUtils.getFlowController( 
flowControllerClassName, request,  response, servletContext );
+                RequestValues.setCurrentFlowController( request, fc );
             }
+            catch ( ClassNotFoundException e )
+            {
+                _log.error( "Could not find FlowController class " + 
flowControllerClassName, e );
+            }
+        }
+        else
+        {
+            RequestValues.removeCurrentFlowController( request );
         }
+        
+        //
+        // Get the page flow for this request.
+        //
+        PageFlowController jpf = PageFlowUtils.getCurrentPageFlow( request );
+        
+        //
+        // Set up implicit objects used by the expression language in simple 
actions and in declarative validation.
+        //
+        ImplicitObjectUtil.loadImplicitObjects( request, response, 
servletContext, jpf );
+        
+        super.process( request, response );
+    }
 
+    /**
+     * Process any direct request for a page flow by forwarding to its "begin" 
action.
+     * 
+     * @param request the current HttpServletRequest
+     * @param response the current HttpServletResponse
+     * @param uri the decoded request URI
+     * @return <code>true</code> if the request was for a page flow, in which 
case it was forwarded.
+     * @throws IOException
+     * @throws ServletException
+     */ 
+    protected boolean processPageFlowRequest( HttpServletRequest request, 
HttpServletResponse response, String uri )
+        throws IOException, ServletException
+    {
         //
-        // First redirect requests for .jpf to the "begin" action within the 
appropriate Struts module.
+        // Forward requests for *.jpf to the "begin" action within the 
appropriate Struts module.
         //
         if ( FileUtils.osSensitiveEndsWith( uri, 
PageFlowConstants.JPF_EXTENSION ) )
         {
@@ -603,8 +658,8 @@
 
                 InternalUtils.sendDevTimeError( "PageFlow_NoModuleConf", null,
                                                 
HttpServletResponse.SC_INTERNAL_SERVER_ERROR, request, response,
-                                                servletContext, uri, 
modulePath );
-                return;
+                                                getServletContext(), uri, 
modulePath );
+                return true;
             }
 
             //
@@ -635,9 +690,9 @@
 
                     InternalUtils.sendDevTimeError( "PageFlow_WrongPath", null,
                                                     
HttpServletResponse.SC_INTERNAL_SERVER_ERROR, request, response,
-                                                    servletContext, 
requestedType, desiredType);
+                                                    getServletContext(), 
requestedType, desiredType);
 
-                    return;
+                    return true;
                 }
             }
 
@@ -649,12 +704,12 @@
             }
 
             doForward( uri, request, response );
-            return;
-        }
-
-        super.process( request, response );
+            return true;
+        } 
+        
+        return false;
     }
-
+    
     /**
      * TODO: comment
      */ 
@@ -982,7 +1037,7 @@
             catch ( ClassNotFoundException e )
             {
                 _log.error( "Could not load class " + formType + " referenced 
from form bean config "
-                            + formBeanConfig.getName() );
+                            + formBeanConfig.getName() + " in Struts module " 
+ moduleConfig );
             }
         }
     }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java
      Thu Dec  2 23:27:28 2004
@@ -56,7 +56,7 @@
         return _modulePath;
     }
     
-    void persistInSession( HttpServletRequest request, HttpServletResponse 
response )
+    public void persistInSession( HttpServletRequest request, 
HttpServletResponse response )
     {
         request.getSession().setAttribute( SHARED_FLOW_ATTR_PREFIX + 
getClass().getName(), this );
     }

Copied: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java
 (from r109353, 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java)
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java&r1=109353&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBeanFactory.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FacesBackingBeanFactory.java
  Thu Dec  2 23:27:28 2004
@@ -15,13 +15,13 @@
  *
  * $Header:$
  */
-package org.apache.beehive.netui.pageflow;
+package org.apache.beehive.netui.pageflow.internal;
 
 import static 
org.apache.beehive.netui.pageflow.internal.InternalConstants.FACES_BACKING_ATTR;
-import org.apache.beehive.netui.pageflow.internal.InternalUtils;
-import org.apache.beehive.netui.pageflow.internal.ContextCache;
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
+import org.apache.beehive.netui.pageflow.FacesBackingBean;
+import org.apache.beehive.netui.pageflow.PageFlowUtils;
 import org.apache.beehive.netui.util.FileUtils;
 import org.apache.beehive.netui.util.logging.Logger;
 
@@ -32,7 +32,7 @@
 import static org.apache.beehive.netui.pageflow.internal.InternalConstants.*;
 
 
-class FacesBackingBeanFactory
+public class FacesBackingBeanFactory
 {
     private static final Logger _log = Logger.getInstance( 
FacesBackingBeanFactory.class );
     
@@ -42,7 +42,7 @@
                                                                   
ServletContext servletContext )
     {
         String uri = InternalUtils.getDecodedServletPath( request );
-        assert uri.startsWith( "/" ) : uri;
+        assert uri.charAt( 0 ) == '/' : uri;
         String backingClassName = FileUtils.stripFileExtension( uri.substring( 
1 ).replace( '/', '.' ) );
         FacesBackingBean currentBean = InternalUtils.getFacesBackingBean( 
request );
         

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java
     Thu Dec  2 23:27:28 2004
@@ -30,23 +30,16 @@
         extends Action
 {
     private FlowController _flowController;
-    private Class _flowControllerClass;
 
     
-    public FlowControllerAction( FlowController flowController, Class 
flowControllerClass )
+    public FlowControllerAction( FlowController flowController )
     {
         _flowController = flowController;
-        _flowControllerClass = flowControllerClass;
     }
 
     public FlowController getFlowController()
     {
         return _flowController;
-    }
-
-    public Class getFlowControllerClass()
-    {
-        return _flowControllerClass;
     }
 
     public ActionForward execute( ActionMapping mapping, ActionForm form, 
HttpServletRequest request, 

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java&r2=109641
==============================================================================
--- 
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
    Thu Dec  2 23:27:28 2004
@@ -886,6 +886,14 @@
         return className;
     }    
     
+    public static FlowController getFlowController( String fcClassName, 
HttpServletRequest request,
+                                                    HttpServletResponse 
response, ServletContext servletContext )
+        throws ClassNotFoundException
+    {
+        Class fcClass = getReloadableClass( fcClassName, request, 
servletContext );
+        return getFlowController( fcClass, request, response, servletContext );
+    }
+    
     public static FlowController getFlowController( Class fcClass, 
HttpServletRequest request,
                                                     HttpServletResponse 
response, ServletContext servletContext )
     {

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
    Thu Dec  2 23:27:28 2004
@@ -18,6 +18,7 @@
 package org.apache.beehive.netui.pageflow.internal;
 
 import org.apache.struts.action.ActionForm;
+import org.apache.beehive.netui.pageflow.FlowController;
 
 import javax.servlet.ServletRequest;
 
@@ -34,6 +35,7 @@
     private static final String ORIGINAL_SERVLET_PATH_ATTR = ATTR_PREFIX + 
"origServletPath";
     private static final String FORWARDED_FORMBEAN_ATTR = ATTR_PREFIX + 
"forwardedForm";
     private static final String DEFERRED_EXCEPTION_ATTR = ATTR_PREFIX + 
"deferredException";
+    private static final String CURRENT_FLOWCONTROLLER_ATTR = ATTR_PREFIX + 
"flowController";
     
     
     public static boolean isForwardedRequest( ServletRequest request )
@@ -117,5 +119,20 @@
         DeferredPageFlowException e = ( DeferredPageFlowException ) 
request.getAttribute( DEFERRED_EXCEPTION_ATTR );
         if ( removeFromRequest ) request.removeAttribute( 
DEFERRED_EXCEPTION_ATTR );
         return e;
+    }
+    
+    public static void setCurrentFlowController( ServletRequest request, 
FlowController fc )
+    {
+        request.setAttribute( CURRENT_FLOWCONTROLLER_ATTR, fc );
+    }
+    
+    public static FlowController getCurrentFlowController( ServletRequest 
request )
+    {
+        return ( FlowController ) request.getAttribute( 
CURRENT_FLOWCONTROLLER_ATTR );
+    }
+    
+    public static void removeCurrentFlowController( ServletRequest request )
+    {
+        request.removeAttribute( CURRENT_FLOWCONTROLLER_ATTR );
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java&r1=109640&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   Thu Dec  2 23:27:28 2004
@@ -23,6 +23,7 @@
 import java.util.Collections;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
+import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.JspContext;
@@ -32,6 +33,7 @@
 import org.apache.beehive.netui.pageflow.*;
 import org.apache.beehive.netui.pageflow.internal.AnyBeanActionForm;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.FacesBackingBeanFactory;
 import org.apache.beehive.netui.util.config.ConfigUtil;
 import 
org.apache.beehive.netui.util.config.bean.NetuiConfigDocument.NetuiConfig;
 import org.apache.beehive.netui.util.config.bean.ExpressionLanguages;
@@ -289,5 +291,24 @@
         }
         
         return map;
+    }
+    
+    public static void loadImplicitObjects(HttpServletRequest request, 
HttpServletResponse response, ServletContext servletContext, PageFlowController 
curJpf)
+    {
+        // @todo: need to wrap this in checks for JSP 1.2
+        // @todo: feature: need to add support for chaining in user-code to 
run when setting implicit objects on the request
+        if ( curJpf != null )
+        {
+            FacesBackingBean fbb =
+                    FacesBackingBeanFactory.getFacesBackingBeanForRequest( 
request, response, servletContext );
+            loadPageFlow( request, curJpf, fbb );
+        }
+        
+        SharedFlowController sf = 
FlowControllerFactory.getSharedFlowForRequest( request, response, 
servletContext );
+        loadSharedFlow( request, sf );
+        
+        // @todo: need to move bundleMap creation to a BundleMapFactory
+        BundleMap bundleMap = new BundleMap( request, servletContext, null );
+        loadBundleMap( request, bundleMap );
     }
 }

Deleted: 
/incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/cache/ServletContextCache.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/util/cache/ServletContextCache.java?view=auto&rev=109640
==============================================================================

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/buttonSubmit/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/buttonSubmit/Controller.jpf?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/buttonSubmit/Controller.jpf&r1=109640&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/buttonSubmit/Controller.jpf&r2=109641
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/buttonSubmit/Controller.jpf
        (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/buttonSubmit/Controller.jpf
        Thu Dec  2 23:27:28 2004
@@ -30,10 +30,10 @@
     private String _action;
 
     public String getAction() {
-       return _action;
+        return _action;
     }
     public void setAction(String action) {
-       _action = action;
+        _action = action;
     }
 
     public static class Form extends FormData {
@@ -51,8 +51,8 @@
         })
     public Forward buttonOne(Form form)
     {
-       _action = "buttonOne";
-       return new Forward("buttonOne");
+        _action = "buttonOne";
+        return new Forward("buttonOne");
     }
 
     /**
@@ -67,8 +67,8 @@
         })
     public Forward buttonTwo(Form form)
     {
-       _action = "buttonTwo";
-       return new Forward("buttonTwo");
+        _action = "buttonTwo";
+        return new Forward("buttonTwo");
     }
 
     /**
@@ -83,7 +83,7 @@
         })
     public Forward begin()
     {
-       _action = "begin";
+        _action = "begin";
         return new Forward("begin");
     }
 }

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/SimpleActionsController.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/SimpleActionsController.jpf?view=auto&rev=109641
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/SimpleActionsController.jpf
       Thu Dec  2 23:27:28 2004
@@ -0,0 +1,36 @@
+package pageFlowCore.simpleActions;
+
+import javax.servlet.http.HttpSession;
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
+
[EMAIL PROTECTED](
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp"),
+        @Jpf.SimpleAction(
+            name="conditional",
+            conditionalForwards={
+                
@Jpf.ConditionalForward(condition="${pageFlow.choice=='page1'}", 
path="page1.jsp"),
+                
@Jpf.ConditionalForward(condition="${pageFlow.choice=='page2'}", 
path="page2.jsp")
+            },
+            path="page3.jsp"
+        ),
+        @Jpf.SimpleAction(name="goPrev", 
navigateTo=Jpf.NavigateTo.previousPage)
+    }
+)
+public class SimpleActionsController extends PageFlowController
+{
+    private String _choice;
+
+    public String getChoice()
+    {
+        return _choice;
+    }
+
+    public void setChoice( String choice )
+    {
+        _choice = choice;
+    }
+}

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/index.jsp?view=auto&rev=109641
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/index.jsp
 Thu Dec  2 23:27:28 2004
@@ -0,0 +1,66 @@
+<%@ 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"%>
+
+
+<netui:html>
+    <head>
+        <netui:base/>
+    </head>
+    <netui:body>
+        <h3>Simple Actions</h3>
+
+
+        <netui:form action="begin">
+            choice ("page1", "page2", or something unrecognized):
+            <netui:textBox dataSource="pageFlow.choice" />
+            <netui:button value="submit"/>
+        </netui:form>
+        
+        <netui:anchor action="conditional">
+            conditional action
+        </netui:anchor>
+
+        <br/>
+        <br/>
+        
+        <table border="1">
+            <tr>
+                <td>
+                    choice
+                </td>
+                <td>
+                    result
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page1
+                </td>
+                <td>
+                    page1.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page2
+                </td>
+                <td>
+                    page2.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <i>anything else</i>
+                </td>
+                <td>
+                    page3.jsp
+                </td>
+            </tr>
+        </table>
+
+
+    </netui:body>
+</netui:html>
+
+  

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page1.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page1.jsp?view=auto&rev=109641
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page1.jsp
 Thu Dec  2 23:27:28 2004
@@ -0,0 +1,12 @@
+<[EMAIL PROTECTED] contentType="text/html;charset=UTF-8" language="java"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0"; prefix="netui"%>
+<html>
+    <head>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+        Page 1
+        <br/>
+        <netui:anchor action="goPrev">go back</netui:anchor>
+    </body>
+</html>
\ No newline at end of file

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page2.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page2.jsp?view=auto&rev=109641
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page2.jsp
 Thu Dec  2 23:27:28 2004
@@ -0,0 +1,12 @@
+<[EMAIL PROTECTED] contentType="text/html;charset=UTF-8" language="java"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0"; prefix="netui"%>
+<html>
+    <head>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+        Page 2
+        <br/>
+        <netui:anchor action="goPrev">go back</netui:anchor>
+    </body>
+</html>
\ No newline at end of file

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page3.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page3.jsp?view=auto&rev=109641
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/simpleActions/page3.jsp
 Thu Dec  2 23:27:28 2004
@@ -0,0 +1,12 @@
+<[EMAIL PROTECTED] contentType="text/html;charset=UTF-8" language="java"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0"; prefix="netui"%>
+<html>
+    <head>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+        Page 3
+        <br/>
+        <netui:anchor action="goPrev">go back</netui:anchor>
+    </body>
+</html>
\ No newline at end of file

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&rev=109641&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=109640&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=109641
==============================================================================
--- 
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
   Thu Dec  2 23:27:28 2004
@@ -4584,6 +4584,19 @@
          </features>
       </test>
       <test>
+         <name>SimpleAction</name>
+         <description>Test of Simple Actions</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>drt</category>
+            <category>bvt</category>
+         </categories>
+         <features>
+            <feature>PageFlow</feature>
+            <feature>Action</feature>
+         </features>
+      </test>
+      <test>
          <name>SimpleExpressionTest</name>
          <description>SimpleExpressionTest</description>
          <webapp>coreWeb</webapp>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SimpleAction.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SimpleAction.xml?view=auto&rev=109641
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SimpleAction.xml
  Thu Dec  2 23:27:28 2004
@@ -0,0 +1,1054 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>SimpleAction</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>02 Dec 2004, 08:04:26.852 PM MST</ses:startDate>
+   <ses:description>Test of Simple Actions.</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/pageFlowCore/simpleActions/SimpleActionsController.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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.5) Gecko/20041107 Firefox/1.0</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/pageFlowCore/simpleActions/index.jsp";>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+
+
+        <form id="Netui_Form_0" 
action="/coreWeb/pageFlowCore/simpleActions/begin.do" method="post">
+            choice ("page1", "page2", or something unrecognized):
+            <input type="text" name="{pageFlow.choice}">
+            <input type="submit" value="submit">
+        </form>
+        
+        <a 
href="/coreWeb/pageFlowCore/simpleActions/conditional.do">conditional action</a>
+
+        <br/>
+        <br/>
+        
+        <table border="1">
+            <tr>
+                <td>
+                    choice
+                </td>
+                <td>
+                    result
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page1
+                </td>
+                <td>
+                    page1.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page2
+                </td>
+                <td>
+                    page2.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <i>anything else</i>
+                </td>
+                <td>
+                    page3.jsp
+                </td>
+            </tr>
+        </table>
+
+
+    </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/pageFlowCore/simpleActions/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{pageFlow.choice}</ses:name>
+                  <ses:value>page1</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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>27</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/SimpleActionsController.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.5) Gecko/20041107 Firefox/1.0</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/pageFlowCore/simpleActions/index.jsp";>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+
+
+        <form id="Netui_Form_0" 
action="/coreWeb/pageFlowCore/simpleActions/begin.do" method="post">
+            choice ("page1", "page2", or something unrecognized):
+            <input type="text" name="{pageFlow.choice}" value="page1">
+            <input type="submit" value="submit">
+        </form>
+        
+        <a 
href="/coreWeb/pageFlowCore/simpleActions/conditional.do">conditional action</a>
+
+        <br/>
+        <br/>
+        
+        <table border="1">
+            <tr>
+                <td>
+                    choice
+                </td>
+                <td>
+                    result
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page1
+                </td>
+                <td>
+                    page1.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page2
+                </td>
+                <td>
+                    page2.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <i>anything else</i>
+                </td>
+                <td>
+                    page3.jsp
+                </td>
+            </tr>
+        </table>
+
+
+    </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/pageFlowCore/simpleActions/conditional.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/begin.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.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<html>
+    <head>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+        Page 1
+        <br/>
+        <a href="/coreWeb/pageFlowCore/simpleActions/goPrev.do">go back</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/pageFlowCore/simpleActions/goPrev.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/conditional.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.5) Gecko/20041107 Firefox/1.0</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/pageFlowCore/simpleActions/index.jsp";>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+
+
+        <form id="Netui_Form_0" 
action="/coreWeb/pageFlowCore/simpleActions/begin.do" method="post">
+            choice ("page1", "page2", or something unrecognized):
+            <input type="text" name="{pageFlow.choice}" value="page1">
+            <input type="submit" value="submit">
+        </form>
+        
+        <a 
href="/coreWeb/pageFlowCore/simpleActions/conditional.do">conditional action</a>
+
+        <br/>
+        <br/>
+        
+        <table border="1">
+            <tr>
+                <td>
+                    choice
+                </td>
+                <td>
+                    result
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page1
+                </td>
+                <td>
+                    page1.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page2
+                </td>
+                <td>
+                    page2.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <i>anything else</i>
+                </td>
+                <td>
+                    page3.jsp
+                </td>
+            </tr>
+        </table>
+
+
+    </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/pageFlowCore/simpleActions/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{pageFlow.choice}</ses:name>
+                  <ses:value>page2</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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>27</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/goPrev.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.5) Gecko/20041107 Firefox/1.0</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/pageFlowCore/simpleActions/index.jsp";>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+
+
+        <form id="Netui_Form_0" 
action="/coreWeb/pageFlowCore/simpleActions/begin.do" method="post">
+            choice ("page1", "page2", or something unrecognized):
+            <input type="text" name="{pageFlow.choice}" value="page2">
+            <input type="submit" value="submit">
+        </form>
+        
+        <a 
href="/coreWeb/pageFlowCore/simpleActions/conditional.do">conditional action</a>
+
+        <br/>
+        <br/>
+        
+        <table border="1">
+            <tr>
+                <td>
+                    choice
+                </td>
+                <td>
+                    result
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page1
+                </td>
+                <td>
+                    page1.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page2
+                </td>
+                <td>
+                    page2.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <i>anything else</i>
+                </td>
+                <td>
+                    page3.jsp
+                </td>
+            </tr>
+        </table>
+
+
+    </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/pageFlowCore/simpleActions/conditional.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/begin.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.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<html>
+    <head>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+        Page 2
+        <br/>
+        <a href="/coreWeb/pageFlowCore/simpleActions/goPrev.do">go back</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/pageFlowCore/simpleActions/goPrev.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/conditional.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.5) Gecko/20041107 Firefox/1.0</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/pageFlowCore/simpleActions/index.jsp";>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+
+
+        <form id="Netui_Form_0" 
action="/coreWeb/pageFlowCore/simpleActions/begin.do" method="post">
+            choice ("page1", "page2", or something unrecognized):
+            <input type="text" name="{pageFlow.choice}" value="page2">
+            <input type="submit" value="submit">
+        </form>
+        
+        <a 
href="/coreWeb/pageFlowCore/simpleActions/conditional.do">conditional action</a>
+
+        <br/>
+        <br/>
+        
+        <table border="1">
+            <tr>
+                <td>
+                    choice
+                </td>
+                <td>
+                    result
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page1
+                </td>
+                <td>
+                    page1.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page2
+                </td>
+                <td>
+                    page2.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <i>anything else</i>
+                </td>
+                <td>
+                    page3.jsp
+                </td>
+            </tr>
+        </table>
+
+
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>8</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/pageFlowCore/simpleActions/begin.do</ses:uri>
+            <ses:method>POST</ses:method>
+            <ses:parameters>
+               <ses:parameter>
+                  <ses:name>{pageFlow.choice}</ses:name>
+                  <ses:value>xxx</ses:value>
+               </ses:parameter>
+            </ses:parameters>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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>25</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/goPrev.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.5) Gecko/20041107 Firefox/1.0</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/pageFlowCore/simpleActions/index.jsp";>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+
+
+        <form id="Netui_Form_0" 
action="/coreWeb/pageFlowCore/simpleActions/begin.do" method="post">
+            choice ("page1", "page2", or something unrecognized):
+            <input type="text" name="{pageFlow.choice}" value="xxx">
+            <input type="submit" value="submit">
+        </form>
+        
+        <a 
href="/coreWeb/pageFlowCore/simpleActions/conditional.do">conditional action</a>
+
+        <br/>
+        <br/>
+        
+        <table border="1">
+            <tr>
+                <td>
+                    choice
+                </td>
+                <td>
+                    result
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page1
+                </td>
+                <td>
+                    page1.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    page2
+                </td>
+                <td>
+                    page2.jsp
+                </td>
+            </tr>
+            <tr>
+                <td>
+                    <i>anything else</i>
+                </td>
+                <td>
+                    page3.jsp
+                </td>
+            </tr>
+        </table>
+
+
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>9</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/pageFlowCore/simpleActions/conditional.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CEBD46F98780FA307B6C523541546D6E</ses:value>
+               </ses:cookie>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  
<ses:value>BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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=CEBD46F98780FA307B6C523541546D6E; 
JSESSIONID=BvVa17d1jxpzMEqvtfRUB6Dpts7W2UibN1x21ykqnV66p5C7O9r5!539966934</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/pageFlowCore/simpleActions/begin.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.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<html>
+    <head>
+    </head>
+    <body>
+        <h3>Simple Actions</h3>
+        Page 3
+        <br/>
+        <a href="/coreWeb/pageFlowCore/simpleActions/goPrev.do">go back</a>
+    </body>
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>02 Dec 2004, 08:05:13.630 PM MST</ses:endDate>
+   <ses:testCount>9</ses:testCount>
+</ses:recorderSession>

Reply via email to