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>