Author: rich
Date: Wed Aug 18 14:36:32 2004
New Revision: 36580
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/SharedFlow.jpfs
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/subdir/
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/subdir/success.jsp
(contents, props changed)
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/JspSeesSharedFlow.xml
(contents, props changed)
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FormBeanChecker.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationBeanGrammar.java
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.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/PageFlowJspFilter.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/handler/ExceptionsHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/web.xml
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test1/merge-jpf-struts-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test2/merge-jpf-struts-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanOverload/index.jsp
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test3/merge-jpf-struts-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test6/merge-jpf-struts-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test7/merge-jpf-struts-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test8/merge-jpf-struts-config.xml
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/AnyBeanOverload.xml
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfPageFlow.xml
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/StrutsMergeTest4.xml
Log:
- Freed FlowController (base class for
PageFlowController/SharedFlowController/GlobalApp) from its subclassing of the
Struts Action base class. This has been on the plate for a while -- page flows
themselves do not need to be actions, despite their superficial similarity to
DispatchActions. This lays the groundwork for a PageFlowManagedObject base
class, which will support Control instantiation, lifecycle methods, and
persistance for page flows, shared flows, and JSF backing objects.
- Fixed Shared Flow (and Global.app) actions to be run correctly when invoked
from a JSP that does not live in a directory with a page flow.
- Fixed an NPE that occurred when compiling a file with a @Jpf.FormBean
annotation.
- Fixed an assertion error when compiling a .jpf with a @Jpf.ValidatableBean
annotation.
- Fixed the search order for invoking an overloaded action from a JSP. When
there are two choices for the action, we choose the one whose fully-qualified
form bean classname comes first.
DRT/BVT: netui (WinXP)
BB: self
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FormBeanChecker.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FormBeanChecker.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FormBeanChecker.java
Wed Aug 18 14:36:32 2004
@@ -41,13 +41,11 @@
public class FormBeanChecker
extends BaseChecker
{
- private GetterValidatablePropertyGrammar _validatablePropertyGrammar;
public FormBeanChecker( AnnotationProcessorEnvironment env, Diagnostics
diags )
{
super( env, diags );
- _validatablePropertyGrammar = new GetterValidatablePropertyGrammar();
}
public BaseGenerator getGenerator()
@@ -57,6 +55,7 @@
public Map onCheck( ClassDeclaration jclass )
{
+ GetterValidatablePropertyGrammar validatablePropertyGrammar = new
GetterValidatablePropertyGrammar();
boolean isFormBeanClass = CompilerUtils.getAnnotation( jclass,
FORM_BEAN_TAG_NAME ) != null;
if ( ! isFormBeanClass )
@@ -69,7 +68,7 @@
for ( MethodDeclaration method : methods )
{
isFormBeanClass |=
- checkValidationAnnotation( method,
VALIDATABLE_PROPERTY_TAG_NAME, _validatablePropertyGrammar );
+ checkValidationAnnotation( method,
VALIDATABLE_PROPERTY_TAG_NAME, validatablePropertyGrammar );
// We don't currently support validation rule annotations
directly on getter methods.
/*
hasOne |= checkValidationAnnotation( method,
LOCALE_RULES_ATTR, _validationLocaleRulesGrammar );
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
Wed Aug 18 14:36:32 2004
@@ -24,6 +24,7 @@
{
public static final String NETUI_PACKAGE = "org.apache.beehive.netui";
public static final String PAGEFLOW_PACKAGE = NETUI_PACKAGE + ".pageflow";
+ public static final String PAGEFLOW_INTERNAL_PACKAGE = PAGEFLOW_PACKAGE +
".internal";
public static final String ANNOTATIONS_CLASSNAME = PAGEFLOW_PACKAGE +
".annotations.Jpf";
public static final String ACTION_TAG_NAME = "Action";
@@ -73,6 +74,7 @@
public static final String FLOWCONTROLLER_BASE_CLASS = PAGEFLOW_PACKAGE +
".FlowController";
public static final String JPF_BASE_CLASS = PAGEFLOW_PACKAGE +
".PageFlowController";
public static final String SHARED_FLOW_BASE_CLASS = PAGEFLOW_PACKAGE +
".SharedFlowController";
+ public static final String FLOW_CONTROLLER_ACTION_CLASS =
PAGEFLOW_INTERNAL_PACKAGE + ".FlowControllerAction";
public static final String WEBAPP_ROOT_PACKAGE = "webappRoot";
public static final String GLOBALAPP_BASE_CLASS = PAGEFLOW_PACKAGE +
".GlobalApp";
public static final String GLOBALAPP_PACKAGE = "global";
@@ -159,7 +161,6 @@
public static final String PROPERTY_NAME_ATTR = "propertyName";
public static final String LOCALE_RULES_ATTR = "localeRules";
public static final String VALIDATABLE_BEANS_ATTR = "validatableBeans";
- public static final String FIELDS_ATTR = "fields";
public static final String KEY_ATTR = "key";
public static final String VALIDATION_MESSAGES_ATTR = "validationMessages";
public static final String SIMPLE_ACTIONS_ATTR = "simpleActions";
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenActionModel.java
Wed Aug 18 14:36:32 2004
@@ -58,7 +58,7 @@
private void init( String actionName, AnnotationMirror annotation,
GenStrutsApp parentApp, ClassDeclaration jclass )
{
- setPath( "/" + actionName );
+ setPath( '/' + actionName );
//
// loginRequired
@@ -76,9 +76,10 @@
setRolesAllowed( annotation, jclass );
//
- // type (Action class, which is the FlowController)
+ // type (delegating Action class, with the FlowController as parameter)
//
- setType( jclass.getQualifiedName() );
+ setType( FLOW_CONTROLLER_ACTION_CLASS );
+ setParameter( jclass.getQualifiedName() );
//
// form bean member -- the page-flow-scoped form referenced by the
action (a member variable)
@@ -186,7 +187,7 @@
protected AnnotationMirror getActionAnnotation( Declaration sourceElement )
{
assert sourceElement instanceof MethodDeclaration :
sourceElement.getClass().getName();
- return CompilerUtils.getAnnotation( ( MethodDeclaration )
sourceElement, ACTION_TAG_NAME );
+ return CompilerUtils.getAnnotation( sourceElement, ACTION_TAG_NAME );
}
protected void getForwards( AnnotationMirror annotation, ClassDeclaration
jclass, GenStrutsApp parentApp )
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenValidationModel.java
Wed Aug 18 14:36:32 2004
@@ -221,7 +221,7 @@
assert beanType != null; // checker should enforce this
Collection< AnnotationMirror > validationFieldAnnotations =
- CompilerUtils.getAnnotationArray(
validationBeanAnnotation, FIELDS_ATTR, false );
+ CompilerUtils.getAnnotationArray(
validationBeanAnnotation, VALIDATABLE_PROPERTIES_ATTR, false );
for ( AnnotationMirror validationFieldAnnotation :
validationFieldAnnotations )
{
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationBeanGrammar.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationBeanGrammar.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ValidationBeanGrammar.java
Wed Aug 18 14:36:32 2004
@@ -24,7 +24,7 @@
import com.sun.mirror.apt.AnnotationProcessorEnvironment;
import static
org.apache.beehive.netui.compiler.JpfLanguageConstants.VERSION_9_0_STRING;
-import static
org.apache.beehive.netui.compiler.JpfLanguageConstants.FIELDS_ATTR;
+import static
org.apache.beehive.netui.compiler.JpfLanguageConstants.VALIDATABLE_PROPERTIES_ATTR;
public class ValidationBeanGrammar
@@ -34,7 +34,7 @@
{
super( env, diags, VERSION_9_0_STRING, rvc );
- addMemberArrayGrammar( FIELDS_ATTR, new ValidationFieldGrammar( env,
diags, rvc ) );
+ addMemberArrayGrammar( VALIDATABLE_PROPERTIES_ATTR, new
ValidationFieldGrammar( env, diags, rvc ) );
// TYPE_ATTR does not need a custom type
}
}
Modified:
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.java
==============================================================================
---
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.java
(original)
+++
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.java
Wed Aug 18 14:36:32 2004
@@ -126,6 +126,9 @@
*/
public void addActionMapping( ActionModel newActionMapping )
{
+ String newActionMappingQualifiedPath = getFormQualifiedActionPath(
newActionMapping );
+ boolean addThisMapping = true;
+
//
// First see if there's a name conflict. If so, we'll add an extra
mapping to disambiguate.
//
@@ -137,16 +140,17 @@
{
// Tack on the form-name (mapping.getName()).
ActionModel qualifiedMapping = createActionModel( mapping,
getFormQualifiedActionPath( mapping ) );
- ActionModel qualifiedNewMapping = createActionModel(
newActionMapping,
-
getFormQualifiedActionPath( newActionMapping ) );
+ ActionModel qualifiedNewMapping = createActionModel(
newActionMapping, newActionMappingQualifiedPath );
qualifiedMapping.setUnqualifiedActionPath( mapping.getPath() );
qualifiedNewMapping.setUnqualifiedActionPath(
newActionMapping.getPath() );
_actionMappings.add( qualifiedMapping );
_actionMappings.add( qualifiedNewMapping );
+
+ if ( qualifiedMapping.getPath().compareTo(
newActionMappingQualifiedPath ) < 0 ) addThisMapping = false;
}
}
- _actionMappings.add( newActionMapping );
+ if ( addThisMapping ) _actionMappings.add( newActionMapping );
}
protected ActionModel createActionModel( ActionModel src, String newPath )
@@ -364,8 +368,8 @@
*/
protected void sortActionMappings()
{
- HashMap alreadySeen = new HashMap();
- HashMap dups = new HashMap();
+ HashMap< String, ActionModel > alreadySeen = new HashMap< String,
ActionModel >();
+ HashMap< String, ActionModel > dups = new HashMap< String, ActionModel
>();
ArrayList toRemove = new ArrayList();
for ( int i = 0; i < _actionMappings.size(); ++i )
@@ -375,7 +379,7 @@
if ( alreadySeen.containsKey( path ) )
{
- ActionModel dup = ( ActionModel ) alreadySeen.get( path );
+ ActionModel dup = alreadySeen.get( path );
if ( dup != null )
{
@@ -395,11 +399,11 @@
}
else
{
- ActionModel existingDup = ( ActionModel ) dups.get(
am.getPath() );
+ ActionModel existingDup = dups.get( am.getPath() );
if ( am.getName() == null
|| ( existingDup.getName() != null
- && am.getName().compareTo( existingDup.getName()
) < 0 ) )
+ && getFormQualifiedActionPath( am ).compareTo(
getFormQualifiedActionPath( existingDup ) ) < 0 ) )
{
dups.put( am.getPath(), am );
}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
Wed Aug 18 14:36:32 2004
@@ -21,14 +21,12 @@
import org.apache.beehive.netui.pageflow.config.PageFlowActionMapping;
import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
-import org.apache.beehive.netui.util.Bundle;
import org.apache.beehive.netui.util.FileUtils;
import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.handler.LoginHandler;
import org.apache.beehive.netui.pageflow.handler.ExceptionsHandler;
import org.apache.beehive.netui.util.cache.ClassLevelCache;
-import org.apache.beehive.netui.util.exception.LocalizedIllegalStateException;
import org.apache.beehive.netui.util.logging.Logger;
import org.apache.beehive.netui.script.common.ImplicitObjectBean;
import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
@@ -36,7 +34,6 @@
import org.apache.beehive.netui.script.ExpressionEvaluator;
import org.apache.beehive.netui.script.ExpressionEvaluationException;
import org.apache.struts.Globals;
-import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
@@ -71,7 +68,6 @@
* Base class for user-written flow controllers - PageFlowControllers and
Global.app.
*/
public abstract class FlowController
- extends Action
implements Serializable, PageFlowConstants, ActionResolver,
HttpSessionBindingListener
{
private static final Logger _log = Logger.getInstance(
FlowController.class );
@@ -82,6 +78,7 @@
private static final String MAX_CONCURRENT_REQUESTS_PARAM =
"pageflow-max-concurrent-requests";
private static final int EXCEEDED_MAX_CONCURRENT_REQUESTS_ERRORCODE = 503;
private static final String DEFAULT_SIMPLE_ACTION_FORWARD_NAME =
"_defaultForward";
+ private static final Locale DEFAULT_LOCALE = Locale.getDefault();
static class PerRequestState
@@ -119,10 +116,9 @@
private transient PerRequestState _perRequestState;
/**
- * We prevent the base class from storing a reference to ActionServlet in
the non-transient
- * field <code>servlet</code>
+ * Reference to the current ServletContext.
*/
- private transient ActionServlet _transientActionServlet = null;
+ private transient ServletContext _servletContext;
/**
* Cached reference to the associated Struts ModuleConfig.
@@ -143,7 +139,7 @@
/**
* Default constructor.
*/
- public FlowController()
+ protected FlowController()
{
}
@@ -181,7 +177,7 @@
/**
* Send a Page Flow error to the browser.
*
- * @deprecated Use [EMAIL PROTECTED] #sendError(java.lang.String,
javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)}
instead.
+ * @deprecated Use [EMAIL PROTECTED] #sendError(String,
HttpServletRequest, HttpServletResponse)} instead.
* @param errText the error message to display.
* @param response the current HttpServletResponse.
*/
@@ -209,7 +205,7 @@
HttpSession session = request.getSession( false );
Locale userLocale = null;
if ( session != null ) userLocale = ( Locale ) session.getAttribute(
locale );
- if ( userLocale == null ) userLocale = defaultLocale;
+ if ( userLocale == null ) userLocale = DEFAULT_LOCALE;
return userLocale;
}
@@ -240,7 +236,8 @@
// First, put the exception into the request (or other applicable
context).
Throwable unwrapped = eh.unwrapException( ex );
eh.exposeException( unwrapped, request, response, mapping );
- return eh.handleException( unwrapped, mapping, actionName, form,
request, response, this );
+ return eh.handleException( unwrapped, mapping, actionName, form,
request, response,
+ getServletContext(), this );
}
finally
{
@@ -261,7 +258,7 @@
protected String getCurrentActionName()
{
- return PageFlowUtils.getActionName( getMapping() );
+ return PageFlowUtils.getActionName( getActionMapping() );
}
/**
@@ -282,7 +279,7 @@
// Don't actually run the action (and perform the associated
synchronization) if there are too many
// concurrent requests to this instance.
//
- if ( incrementRequestCount( request, response,
getServlet().getServletContext() ) )
+ if ( incrementRequestCount( request, response, getServletContext() ) )
{
try
{
@@ -328,7 +325,7 @@
//
String actionName = PageFlowUtils.getActionName( mapping );
boolean gotPastBeforeAction = false;
- ServletContext servletContext = getServlet().getServletContext();
+ ServletContext servletContext = getServletContext();
PerRequestState prevState = setPerRequestState( new PerRequestState(
request, response, mapping ) );
try
@@ -578,10 +575,7 @@
*/
public void reinitialize( HttpServletRequest request, HttpServletResponse
response, ServletContext servletContext )
{
- if ( _transientActionServlet == null )
- {
- _transientActionServlet = InternalUtils.getActionServlet(
servletContext );
- }
+ _servletContext = servletContext;
//
// Cache the associated ModuleConfig. This is used throughout the
code, in places where the request
@@ -593,13 +587,7 @@
synchronized void create( HttpServletRequest request, HttpServletResponse
response,
ServletContext servletContext )
{
- setServlet( InternalUtils.getActionServlet( servletContext ) );
-
- //
- // Cache the associated ModuleConfig. This is used throughout the
code, in places where the request
- // isn't available to do a lazy initialization.
- //
- initModuleConfig( servletContext, request );
+ reinitialize( request, response, servletContext );
//
// Initialize Java Controls in this FlowController.
@@ -699,7 +687,7 @@
*/
protected Method getActionMethod( String methodName, Class argType )
{
- String cacheKey = ( argType != null ? methodName + '/' +
argType.getName() : methodName );
+ String cacheKey = argType != null ? methodName + '/' +
argType.getName() : methodName;
Class thisClass = getClass();
ClassLevelCache cache = ClassLevelCache.getCache( thisClass );
Method actionMethod = ( Method ) cache.get( CACHEID_ACTION_METHODS,
cacheKey );
@@ -809,7 +797,7 @@
throw new NoMatchingActionMethodException( actionName, inputForm, this
);
}
- private String getFormQualifiedActionPath( Class formClass, String
actionPath )
+ private static String getFormQualifiedActionPath( Class formClass, String
actionPath )
{
StringBuffer ret = new StringBuffer( actionPath );
ret.append( '_' );
@@ -828,7 +816,7 @@
protected ActionForward invokeActionMethod( Method method, Object arg )
throws Exception
{
- return invokeActionMethod( method, arg, getRequest(), getMapping() );
+ return invokeActionMethod( method, arg, getRequest(),
getActionMapping() );
}
/**
@@ -851,7 +839,7 @@
{
if ( _log.isDebugEnabled() )
{
- _log.debug( "Invoking action method " + method.getName() +
"(" + paramTypes[0].getName() + ")" );
+ _log.debug( "Invoking action method " + method.getName() +
'(' + paramTypes[0].getName() + ')' );
}
return ( ActionForward ) method.invoke( this, new Object[]{
arg } );
@@ -1073,8 +1061,8 @@
* @exclude
* @deprecated Use [EMAIL PROTECTED] PageFlowUtils#strutsLookup} instead.
*/
- public ActionResult lookup( String actionName, ServletContext context,
HttpServletRequest request,
- HttpServletResponse response )
+ public static ActionResult lookup( String actionName, ServletContext
context, HttpServletRequest request,
+ HttpServletResponse response )
throws Exception
{
return PageFlowUtils.strutsLookup( context, request, response,
actionName, null );
@@ -1087,8 +1075,8 @@
* @exclude
* @deprecated Use [EMAIL PROTECTED] PageFlowUtils#strutsLookup} instead.
*/
- public ActionResult lookup( String actionName, ServletContext context,
HttpServletRequest request,
- HttpServletResponse response, String
actionServletClassName )
+ public static ActionResult lookup( String actionName, ServletContext
context, HttpServletRequest request,
+ HttpServletResponse response, String
actionServletClassName )
throws Exception
{
return PageFlowUtils.strutsLookup( context, request, response,
actionName, null );
@@ -1107,7 +1095,7 @@
HttpServletResponse response )
throws Exception
{
- ActionMapping mapping = ( ActionMapping )
getModuleConfig().findActionConfig( "/" + actionName );
+ ActionMapping mapping = ( ActionMapping )
getModuleConfig().findActionConfig( '/' + actionName );
if ( mapping == null )
{
@@ -1135,7 +1123,7 @@
/**
* Call an action and return the result URI.
*
- * @deprecated Use [EMAIL PROTECTED] #resolveAction(java.lang.String,
java.lang.Object, javax.servlet.http.HttpServletRequest,
javax.servlet.http.HttpServletResponse)} instead.
+ * @deprecated Use [EMAIL PROTECTED] #resolveAction(String, Object,
HttpServletRequest, HttpServletResponse)} instead.
* @param actionName the name of the action to run.
* @param form the form bean instance to pass to the action, or
<code>null</code> if none should be passed.
* @return the result webapp-relative URI, as a String.
@@ -1176,7 +1164,7 @@
*/
public boolean isAction( String name )
{
- return ( getModuleConfig().findActionConfig( '/' + name ) != null );
+ return getModuleConfig().findActionConfig( '/' + name ) != null;
}
/**
@@ -1208,28 +1196,21 @@
/**
* Get the current Struts ActionServlet.
*
+ * @deprecated This method will be removed with no replacement. In most
cases, [EMAIL PROTECTED] #getServletContext()} is
+ * sufficient; for other cases, the ActionServlet itself is in
the ServletContext attribute
+ * [EMAIL PROTECTED] Globals#ACTION_SERVLET_KEY}.
* @return the ActionServlet.
*/
- public ActionServlet getServlet()
+ protected ActionServlet getServlet()
{
- return _transientActionServlet;
+ return InternalUtils.getActionServlet( _servletContext );
}
/**
- * Set the Struts ActionServlet.
- * @exclude
- */
- public void setServlet( ActionServlet servlet )
- {
- _transientActionServlet = servlet;
- }
-
-
- /**
* Called on this object for non-lookup (refresh) requests.
* @exclude
*/
- public synchronized final void refresh( HttpServletRequest request,
HttpServletResponse response )
+ public final synchronized void refresh( HttpServletRequest request,
HttpServletResponse response )
{
PerRequestState prevState = setPerRequestState( new PerRequestState(
request, response, null ) );
@@ -1412,7 +1393,7 @@
if ( _log.isDebugEnabled() )
{
_log.debug( "Too many requests to page flow " +
getClass().getName() + " ("
- + ( _requestCount + 1 ) + ">" +
_maxConcurrentRequestCount + "); returning error code "
+ + ( _requestCount + 1 ) + '>' +
_maxConcurrentRequestCount + "); returning error code "
+ EXCEEDED_MAX_CONCURRENT_REQUESTS_ERRORCODE );
}
@@ -1485,7 +1466,7 @@
PropertyMap propertyMap = ( PropertyMap ) entry.getValue();
Class fieldType = field.getType();
boolean isControlBeanClass = ! fieldType.isInterface();
- String controlID = className + "." + field.getName();
+ String controlID = className + '.' + field.getName();
ControlBean bean = JavaControlUtils.createControl(
fieldType.getName(), isControlBeanClass,
controlID, propertyMap, beanContext );
field.set( this, bean );
@@ -1532,7 +1513,7 @@
protected ServletContext getServletContext()
{
- return getServlet().getServletContext();
+ return _servletContext;
}
/**
@@ -1563,7 +1544,7 @@
{
if ( _log.isDebugEnabled() )
{
- _log.debug( "Invoking exception handler method " +
method.getName() + "("
+ _log.debug( "Invoking exception handler method " +
method.getName() + '('
+ method.getParameterTypes()[0].getName() + ",
...)" );
}
@@ -1637,8 +1618,8 @@
PageFlowUtils.addValidationError( propertyName, messageKey,
getRequest() );
}
- private ActionForward handleSimpleAction( PageFlowActionMapping mapping,
ActionForm wrappedFormBean,
- HttpServletRequest request,
HttpServletResponse response )
+ private static ActionForward handleSimpleAction( PageFlowActionMapping
mapping, ActionForm wrappedFormBean,
+ HttpServletRequest
request, HttpServletResponse response )
throws ExpressionEvaluationException
{
@@ -1660,7 +1641,7 @@
if ( _log.isTraceEnabled() )
{
_log.trace( "Expression '" + expression + "' evaluated
to true on simple action "
- + mapping.getPath() + "; using forward " +
forwardName + "." );
+ + mapping.getPath() + "; using forward " +
forwardName + '.' );
}
return new Forward( forwardName );
@@ -1672,7 +1653,7 @@
if ( _log.isTraceEnabled() )
{
_log.trace( "No expression evaluated to true on simple action " +
mapping.getPath()
- + "; using forward " +
DEFAULT_SIMPLE_ACTION_FORWARD_NAME + "." );
+ + "; using forward " +
DEFAULT_SIMPLE_ACTION_FORWARD_NAME + '.' );
}
return new Forward( DEFAULT_SIMPLE_ACTION_FORWARD_NAME );
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
Wed Aug 18 14:36:32 2004
@@ -145,7 +145,7 @@
*/
protected boolean isNestable()
{
- return isNestable( getRequest(), getServlet().getServletContext() );
+ return isNestable( getRequest(), getServletContext() );
}
/**
@@ -239,7 +239,7 @@
HttpServletResponse response )
throws Exception
{
- initializeSharedFlowField( request, response,
getServlet().getServletContext() );
+ initializeSharedFlowField( request, response, getServletContext() );
return super.internalExecute( mapping, form, request, response );
}
@@ -582,8 +582,8 @@
//
// Make sure previous-action is disabled in the
SharedFlowController too; if not, we can't do it.
//
- ModuleConfig sharedFlowConfig = InternalUtils.getSharedFlowConfig(
mc, servletContext );
- ControllerConfig sc = ( sharedFlowConfig != null ?
sharedFlowConfig.getControllerConfig() : null );
+ ModuleConfig sharedFlowConfig = InternalUtils.getSharedFlowConfig(
mc, request, servletContext );
+ ControllerConfig sc = sharedFlowConfig != null ?
sharedFlowConfig.getControllerConfig() : null;
if ( sc == null ||
( sc instanceof PageFlowControllerConfig && ( (
PageFlowControllerConfig ) sc ).isReturnToActionDisabled() ) )
@@ -613,7 +613,7 @@
//
// Make sure previous-page is disabled in the
SharedFlowController, too; if not, we can't do it.
//
- ModuleConfig sharedFlowConfig = InternalUtils.getSharedFlowConfig(
mc, servletContext );
+ ModuleConfig sharedFlowConfig = InternalUtils.getSharedFlowConfig(
mc, request, servletContext );
ControllerConfig sc = ( sharedFlowConfig != null ?
sharedFlowConfig.getControllerConfig() : null );
if ( sc == null ||
@@ -734,7 +734,7 @@
}
// This will cause the right pageflow stack stuff to happen.
- FlowControllerFactory.getPageFlow( getClass(), request,
response, getServlet().getServletContext() );
+ FlowControllerFactory.getPageFlow( getClass(), request,
response, getServletContext() );
}
}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowJspFilter.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowJspFilter.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowJspFilter.java
Wed Aug 18 14:36:32 2004
@@ -165,6 +165,7 @@
if ( curJpf == null )
{
InternalUtils.setCurrentModule( prevModuleConfig, request
);
+ //InternalUtils.setCurrentPageFlow( null, httpRequest );
}
@@ -200,7 +201,6 @@
FlowController.PerRequestState newState =
new FlowController.PerRequestState(
httpRequest, httpResponse, null );
FlowController.PerRequestState prevState =
curJpf.setPerRequestState( newState );
- curJpf.setServlet(
InternalUtils.getActionServlet( _servletContext ) );
setImplicitObjects( httpRequest, httpResponse,
curJpf );
try
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
==============================================================================
---
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
Wed Aug 18 14:36:32 2004
@@ -62,6 +62,7 @@
import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.internal.RequestValues;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.FlowControllerAction;
import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler;
@@ -93,6 +94,7 @@
private static final String MULTIPART_REQUEST_WRAPPER_ATTR = PREFIX +
"multipartWrapper";
private static final String PAGEFLOW_SCOPED_FORM_NAME_ATTR = PREFIX +
"pageFlowScopedFormName";
private static final String PROCESS_ROLES_FAILED_ATTR = PREFIX +
"processRolesFailed";
+ private static final String FLOW_CONTROLLER_ACTION_CLASSNAME =
FlowControllerAction.class.getName();
protected Action processActionCreate( HttpServletRequest request,
HttpServletResponse response,
@@ -113,41 +115,42 @@
String className = actionMapping.getType();
- if ( className != null )
+ if ( className != null && className.equals(
FLOW_CONTROLLER_ACTION_CLASSNAME ) )
{
+ String flowControllerClassName = actionMapping.getParameter();
+ assert flowControllerClassName != null :
FLOW_CONTROLLER_ACTION_CLASSNAME +
+ " requires the flow
controller classname as its parameter.";
try
{
ServletContext servletContext = getServletContext();
- Class jpfActionClass = InternalUtils.getReloadableClass(
className, request, servletContext );
-
- if ( FlowController.class.isAssignableFrom( jpfActionClass ) )
- {
- FlowController fc =
- InternalUtils.getFlowController( jpfActionClass,
request, response, servletContext );
- fc.setServlet( servlet );
- return fc;
- }
- else
- {
- //
- // It's a non-FlowController action. Now act on any
deferred failure from
- // processRoles() in the same way that Struts would have
acted, namely, by
- // sending an HTTP error.
- //
- if ( request.getAttribute( PROCESS_ROLES_FAILED_ATTR ) !=
null )
- {
- request.removeAttribute( PROCESS_ROLES_FAILED_ATTR );
- response.sendError( HttpServletResponse.SC_BAD_REQUEST,
- getInternal().getMessage(
"notAuthorized", actionMapping.getPath() ) );
- return null;
- }
- }
+ 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 " + className, e );
}
}
+ else
+ {
+ //
+ // It's a non-FlowController action. Now act on any deferred
failure from
+ // processRoles() in the same way that Struts would have acted,
namely, by
+ // sending an HTTP error.
+ //
+ if ( request.getAttribute( PROCESS_ROLES_FAILED_ATTR ) != null )
+ {
+ request.removeAttribute( PROCESS_ROLES_FAILED_ATTR );
+ response.sendError( HttpServletResponse.SC_BAD_REQUEST,
+ getInternal().getMessage( "notAuthorized",
actionMapping.getPath() ) );
+ return null;
+ }
+ }
return super.processActionCreate( request, response, actionMapping );
}
@@ -224,8 +227,10 @@
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 = action.getClass().getDeclaredField(
formMember );
+ Field field =
fcAction.getFlowControllerClass().getDeclaredField( formMember );
field.setAccessible( true );
return field;
}
@@ -273,7 +278,9 @@
try
{
Action action = ( Action ) request.getAttribute(
ALREADY_GOT_ACTION_ATTR );
- formMemberField.set( action, InternalUtils.unwrapFormBean(
previousForm ) );
+ assert action instanceof FlowControllerAction :
action.getClass().getName();
+ FlowController fc = ( ( FlowControllerAction ) action
).getFlowController();
+ formMemberField.set( fc, InternalUtils.unwrapFormBean(
previousForm ) );
}
catch ( IllegalAccessException e )
{
@@ -307,13 +314,15 @@
try
{
Action action = ( Action ) request.getAttribute(
ALREADY_GOT_ACTION_ATTR );
- ActionForm form = InternalUtils.wrapFormBean(
formMemberField.get( action ) );
+ assert action instanceof FlowControllerAction :
action.getClass().getName();
+ FlowController fc = ( ( FlowControllerAction ) action
).getFlowController();
+ ActionForm form = InternalUtils.wrapFormBean(
formMemberField.get( fc ) );
if ( form == null ) // the pageflow hasn't filled the value yet
{
form = createActionForm( mapping, request );
form.reset( mapping, request );
- formMemberField.set( action, InternalUtils.unwrapFormBean(
form ) );
+ formMemberField.set( fc, InternalUtils.unwrapFormBean(
form ) );
}
//
@@ -586,7 +595,7 @@
ActionMapping beginMapping = getBeginMapping();
if ( beginMapping != null )
{
- String desiredType = beginMapping.getType();
+ String desiredType = beginMapping.getParameter();
desiredType = desiredType.substring( desiredType.lastIndexOf(
'.' ) + 1 ) + JPF_EXTENSION;
String requestedType = InternalUtils.decodeURI( request );
requestedType = requestedType.substring(
requestedType.lastIndexOf( '/' ) + 1 );
@@ -952,69 +961,101 @@
if ( originalRequestURI != null )
{
- if ( _log.isInfoEnabled() )
+ return processUnresolvedAction( path, originalRequestURI, request,
response, returningForm );
+ }
+ else
+ {
+ trySharedFlowAction( path, request, response );
+ }
+
+ return null;
+ }
+
+ protected void trySharedFlowAction( String actionPath, HttpServletRequest
request, HttpServletResponse response )
+ throws IOException
+ {
+ SharedFlowController sf = PageFlowUtils.getSharedFlow( request,
getServletContext() );
+
+ if ( sf != null )
+ {
+ // Try letting the SharedFlowController handle this action.
+ if ( _log.isDebugEnabled() )
{
- StringBuffer msg = new StringBuffer( "Action \"" ).append(
path );
- _log.info( msg.append( "\" was also unhandled by Global.app."
).toString() );
+ _log.debug( "Action \"" + actionPath + "\" not handled in
request for "
+ + request.getRequestURI() + ". Trying this action
on the SharedFlowController." );
}
+ RequestVariables.get( request ).setOriginalRequestURI(
InternalUtils.decodeURI( request ) );
+
//
- // If there's a PageFlowController for this request, try and let
it handle an
- // action-not-found exception. Otherwise, let Struts print out
its "invalid path"
- // message.
+ // Construct a URI that is [shared flow module path] + [base
action path] + [action-extension (.do)]
//
- FlowController fc = null;
+ int lastSlash = actionPath.lastIndexOf( '/' );
+ assert lastSlash != -1 : actionPath;
+ String basePath = actionPath.substring( lastSlash );
+ StringBuilder uri = new StringBuilder( sf.getModulePath() );
+ uri.append( basePath );
+ uri.append( ACTION_EXTENSION );
try
{
- ServletContext servletContext = getServletContext();
- fc = FlowControllerFactory.getPageFlowForURI( request,
response, originalRequestURI, servletContext );
- if ( fc == null ) fc = PageFlowUtils.getSharedFlow( request,
servletContext );
-
- if ( fc != null )
- {
- Exception ex = new ActionNotFoundException( path, fc,
returningForm );
- InternalUtils.setCurrentModule( fc.getModuleConfig(),
request );
- ActionForward result = fc.handleException( ex, null, path,
null, request, response );
- return new ExceptionHandledActionMapping( path, result );
- }
+ doForward( uri.toString(), request, response );
}
- catch ( Exception e )
+ catch ( ServletException e )
{
- // ignore this -- just let Struts do its thing.
-
- if ( _log.isDebugEnabled() )
- {
- _log.debug( e );
- }
+ _log.error( "Could not forward to shared flow URI " + uri, e );
}
-
- if ( _log.isDebugEnabled() )
+ }
+ }
+
+ protected ActionMapping processUnresolvedAction( String actionPath, String
originalRequestURI,
+ HttpServletRequest
request, HttpServletResponse response,
+ ActionForm returningForm )
+ throws IOException
+ {
+ if ( _log.isInfoEnabled() )
+ {
+ StringBuffer msg = new StringBuffer( "Action \"" ).append(
actionPath );
+ _log.info( msg.append( "\" was also unhandled by Global.app."
).toString() );
+ }
+
+ //
+ // If there's a PageFlowController for this request, try and let it
handle an
+ // action-not-found exception. Otherwise, let Struts print out its
"invalid path"
+ // message.
+ //
+ FlowController fc = null;
+
+ try
+ {
+ ServletContext servletContext = getServletContext();
+ fc = FlowControllerFactory.getPageFlowForURI( request, response,
originalRequestURI, servletContext );
+ if ( fc == null ) fc = PageFlowUtils.getSharedFlow( request,
servletContext );
+
+ if ( fc != null )
{
- _log.debug( "Couldn't handle an ActionNotFoundException --
delegating to Struts" );
+ Exception ex = new ActionNotFoundException( actionPath, fc,
returningForm );
+ InternalUtils.setCurrentModule( fc.getModuleConfig(), request
);
+ ActionForward result = fc.handleException( ex, null,
actionPath, null, request, response );
+ return new ExceptionHandledActionMapping( actionPath, result );
}
-
- return super.processMapping( request, response, path );
}
- else
+ catch ( Exception e )
{
- SharedFlowController sf = PageFlowUtils.getSharedFlow( request,
getServletContext() );
+ // ignore this -- just let Struts do its thing.
- if ( sf != null )
+ if ( _log.isDebugEnabled() )
{
- // Try letting the SharedFlowController handle this action.
- if ( _log.isDebugEnabled() )
- {
- _log.debug( "Action \"" + path + "\" not handled in
request for "
- + request.getRequestURI() + ". Trying this
action on the SharedFlowController." );
- }
-
- RequestVariables.get( request ).setOriginalRequestURI(
InternalUtils.decodeURI( request ) );
- return new SharedFlowActionMapping( path, sf.getModulePath() );
+ _log.debug( e );
}
}
+
+ if ( _log.isDebugEnabled() )
+ {
+ _log.debug( "Couldn't handle an ActionNotFoundException --
delegating to Struts" );
+ }
- return null;
+ return super.processMapping( request, response, actionPath );
}
protected boolean processRoles( HttpServletRequest request,
HttpServletResponse response, ActionMapping mapping )
@@ -1283,9 +1324,10 @@
PageFlowController pfc = null;
ServletContext servletContext = getServletContext();
- if ( action instanceof PageFlowController )
+ if ( action instanceof FlowControllerAction )
{
- pfc = ( PageFlowController ) action;
+ FlowController fc = ( ( FlowControllerAction ) action
).getFlowController();
+ if ( fc instanceof PageFlowController ) pfc = ( PageFlowController
) fc;
}
//
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/SharedFlowController.java
==============================================================================
---
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
Wed Aug 18 14:36:32 2004
@@ -63,17 +63,6 @@
}
/**
- * @exclude
- */
- public void reInit( ServletContext servletContext )
- {
- if ( getServlet() == null )
- {
- setServlet( InternalUtils.getActionServlet( servletContext ) );
- }
- }
-
- /**
* Ensures that any changes to this FlowController will be replicated in a
cluster (for failover),
* even if the replication scheme uses a change-detection algorithm that
relies on
* HttpSession.setAttribute to be aware of changes.
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/ExceptionsHandler.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/ExceptionsHandler.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/handler/ExceptionsHandler.java
Wed Aug 18 14:36:32 2004
@@ -24,6 +24,7 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletContext;
import org.apache.beehive.netui.pageflow.FlowController;
@@ -35,8 +36,8 @@
extends Handler
{
ActionForward handleException( Throwable ex, ActionMapping actionMapping,
String actionName,
- ActionForm form, HttpServletRequest
request, HttpServletResponse response,
- FlowController flowController )
+ ActionForm form, HttpServletRequest
request, HttpServletResponse response,
+ ServletContext servletContext,
FlowController flowController )
throws Exception;
Throwable unwrapException( Throwable ex );
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java
Wed Aug 18 14:36:32 2004
@@ -41,12 +41,9 @@
import org.apache.beehive.netui.pageflow.config.PageFlowExceptionConfig;
import org.apache.beehive.netui.pageflow.FlowController;
-import org.apache.beehive.netui.pageflow.PageFlowUtils;
import org.apache.beehive.netui.pageflow.PageFlowException;
import org.apache.beehive.netui.pageflow.FormData;
-import org.apache.beehive.netui.pageflow.PageFlowController;
import org.apache.beehive.netui.pageflow.handler.ExceptionsHandler;
-import org.apache.beehive.netui.pageflow.internal.DefaultHandler;
import org.apache.beehive.netui.util.Bundle;
import org.apache.beehive.netui.util.cache.ClassLevelCache;
import org.apache.beehive.netui.util.logging.Logger;
@@ -63,7 +60,7 @@
public ActionForward handleException( Throwable ex, ActionMapping
actionMapping, String actionName,
ActionForm form, HttpServletRequest
request, HttpServletResponse response,
- FlowController flowController )
+ ServletContext servletContext,
FlowController flowController )
throws Exception
{
if ( _log.isInfoEnabled() )
@@ -94,7 +91,6 @@
//
if ( exceptionConfig == null )
{
- ServletContext servletContext =
flowController.getServlet().getServletContext();
exceptionConfig =
getAlternateExceptionConfig( exClass, flowController,
request, servletContext );
@@ -125,7 +121,7 @@
if ( pfExceptionConfig.isHandlerMethod() )
{
return invokeExceptionHandlerMethod( ex,
pfExceptionConfig, form, actionName, actionMapping,
- flowController,
request, response );
+ flowController,
request, response, servletContext );
}
}
@@ -193,7 +189,7 @@
HttpServletRequest
request, ServletContext servletContext )
{
ModuleConfig exceptionHandlerModuleConfig =
- InternalUtils.getSharedFlowConfig(
originalFlowController.getModuleConfig(), servletContext );
+ InternalUtils.getSharedFlowConfig(
originalFlowController.getModuleConfig(), request, servletContext );
return getExceptionConfig( exClass, exceptionHandlerModuleConfig );
}
@@ -255,7 +251,8 @@
protected ActionForward invokeExceptionHandlerMethod( Throwable ex,
PageFlowExceptionConfig exceptionConfig,
ActionForm form,
String actionName,
ActionMapping
actionMapping, FlowController flowController,
- HttpServletRequest
request, HttpServletResponse response )
+ HttpServletRequest
request, HttpServletResponse response,
+ ServletContext
servletContext )
throws Exception
{
String methodName = exceptionConfig.getHandler();
@@ -269,7 +266,7 @@
if ( messageKey != null && messageKey.length() > 0 )
{
- message = getMessage( messageKey, null, null, request,
flowController );
+ message = getMessage( messageKey, null, null, request,
servletContext, flowController );
}
return flowController.invokeExceptionHandler( method, ex,
actionName, message, unwrappedFormBean,
@@ -300,14 +297,14 @@
}
protected String getMessage( String messageKey, String bundle, Object[]
args, HttpServletRequest request,
- FlowController flowController )
+ ServletContext servletContext, FlowController
flowController )
{
if ( bundle == null ) bundle = Globals.MESSAGES_KEY;
MessageResources resources = ( MessageResources )
request.getAttribute( bundle );
if ( resources == null )
{
- resources = ( MessageResources )
flowController.getServlet().getServletContext().getAttribute( bundle );
+ resources = ( MessageResources ) servletContext.getAttribute(
bundle );
}
if ( resources == null )
@@ -318,8 +315,14 @@
Locale userLocale = FlowController.retrieveUserLocale( request, null );
- if ( args == null ) return ( resources.getMessage( userLocale,
messageKey ) );
- else return ( resources.getMessage( userLocale, messageKey, args ) );
+ if ( args == null )
+ {
+ return resources.getMessage( userLocale, messageKey );
+ }
+ else
+ {
+ return resources.getMessage( userLocale, messageKey, args );
+ }
}
public void sendUnhandledExceptionError( Throwable ex, HttpServletRequest
request, HttpServletResponse response )
Added:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/FlowControllerAction.java
Wed Aug 18 14:36:32 2004
@@ -0,0 +1,58 @@
+/*
+ * B E A S Y S T E M S
+ * Copyright 2002-2004 BEA Systems, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * $Header:$
+ */
+package org.apache.beehive.netui.pageflow.internal;
+
+import org.apache.struts.action.Action;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionForm;
+import org.apache.beehive.netui.pageflow.FlowController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class FlowControllerAction
+ extends Action
+{
+ private FlowController _flowController;
+ private Class _flowControllerClass;
+
+
+ public FlowControllerAction( FlowController flowController, Class
flowControllerClass )
+ {
+ _flowController = flowController;
+ _flowControllerClass = flowControllerClass;
+ }
+
+ public FlowController getFlowController()
+ {
+ return _flowController;
+ }
+
+ public Class getFlowControllerClass()
+ {
+ return _flowControllerClass;
+ }
+
+ public ActionForward execute( ActionMapping mapping, ActionForm form,
HttpServletRequest request,
+ HttpServletResponse response ) throws
Exception
+ {
+ return _flowController.execute( mapping, form, request, response );
+ }
+}
Modified:
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
==============================================================================
---
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
(original)
+++
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
Wed Aug 18 14:36:32 2004
@@ -532,10 +532,20 @@
/**
* Get the Struts ModuleConfig associated with the SharedFlowController
for the given FlowController module.
*/
- public static ModuleConfig getSharedFlowConfig( ModuleConfig
flowControllerConfig, ServletContext servletContext )
+ public static ModuleConfig getSharedFlowConfig( ModuleConfig
flowControllerConfig, HttpServletRequest request,
+ ServletContext
servletContext )
{
ControllerConfig cc = flowControllerConfig.getControllerConfig();
- if ( ! ( cc instanceof PageFlowControllerConfig ) ) return null;
+
+ //
+ // If the current module is not a page flow module, use an alternate
method for finding the nearest shared flow.
+ //
+ if ( ! ( cc instanceof PageFlowControllerConfig ) )
+ {
+ SharedFlowController sfc = PageFlowUtils.getSharedFlow( request,
servletContext );
+ return sfc != null ? sfc.getModuleConfig() : null;
+ }
+
List< String > sfModules = ( ( PageFlowControllerConfig ) cc
).getSharedFlowModulesList();
return sfModules != null && sfModules.size() > 0 ? getModuleConfig(
sfModules.get( 0 ), servletContext ) : null;
}
@@ -790,7 +800,7 @@
if ( cur != null )
{
- cur.reInit( servletContext );
+ cur.reinitialize( request, response, servletContext );
return cur;
}
else
@@ -809,6 +819,13 @@
{
HttpServletRequest unwrappedRequest = PageFlowUtils.unwrapMultipart(
request );
+ if ( resolver == null )
+ {
+ ScopedServletUtils.removeScopedSessionAttr( CURRENT_JPF_ATTR,
unwrappedRequest );
+ ScopedServletUtils.removeScopedSessionAttr(
CURRENT_SINGLETON_ATTR, unwrappedRequest );
+ return;
+ }
+
//
// If this is a singleton page flow, also store the instance in an
attribute that never goes away.
//
@@ -960,7 +977,7 @@
public static SharedFlowController getSharedFlow( FlowController pfc,
HttpServletRequest request,
HttpServletResponse
response, ServletContext servletContext )
{
- ModuleConfig sfConfig = getSharedFlowConfig( pfc.getModuleConfig(),
servletContext );
+ ModuleConfig sfConfig = getSharedFlowConfig( pfc.getModuleConfig(),
request, servletContext );
if ( sfConfig == null ) return null;
String sfClassName = getFlowControllerClassName( sfConfig );
if ( sfClassName == null ) return null;
@@ -1007,7 +1024,8 @@
{
if ( _log.isTraceEnabled() )
{
- _log.trace( "No backing bean class found for request " +
request.getRequestURI() );
+ _log.trace( "No backing bean class " + backingClassName +
" found for request "
+ + request.getRequestURI() );
}
}
catch ( InstantiationException e )
Modified:
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
==============================================================================
---
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
(original)
+++
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
Wed Aug 18 14:36:32 2004
@@ -19,9 +19,9 @@
package org.apache.beehive.netui.tags.html;
import org.apache.beehive.netui.pageflow.FlowControllerFactory;
-import org.apache.beehive.netui.pageflow.PageFlowConstants;
import org.apache.beehive.netui.pageflow.PageFlowController;
import org.apache.beehive.netui.pageflow.PageFlowUtils;
+import org.apache.beehive.netui.pageflow.SharedFlowController;
import org.apache.beehive.netui.pageflow.internal.ContextCache;
import org.apache.beehive.netui.pageflow.internal.InternalUtils;
import org.apache.beehive.netui.pageflow.util.PageflowTagUtils;
@@ -978,9 +978,11 @@
// If we didn't find it in the current module's config, look in
Global.app
if (_mapping == null) {
- ModuleConfig sharedFlowConfig =
InternalUtils.getSharedFlowConfig(_appConfig, servletContext);
+ //ModuleConfig sharedFlowConfig =
InternalUtils.getSharedFlowConfig(_appConfig, request, servletContext);
+ SharedFlowController sfc = PageFlowUtils.getSharedFlow( request,
servletContext );
- if (sharedFlowConfig != null) {
+ if (sfc != null) {
+ ModuleConfig sharedFlowConfig = sfc.getModuleConfig();
ActionMapping globalMapping =
(ActionMapping)
sharedFlowConfig.findActionConfig(mappingName);
Modified: incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/web.xml
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/web.xml
(original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/web.xml
Wed Aug 18 14:36:32 2004
@@ -65,6 +65,7 @@
<filter-name>PageFlowJspFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>FORWARD</dispatcher>
+ <dispatcher>REQUEST</dispatcher>
</filter-mapping>
<!--
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test1/merge-jpf-struts-config.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test1/merge-jpf-struts-config.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test1/merge-jpf-struts-config.xml
Wed Aug 18 14:36:32 2004
@@ -17,18 +17,15 @@
<action-mappings>
<action
path="/jpfAction1"
- scope="session"
- parameter="jpfAction1" >
+ scope="session">
</action>
<action
path="/jpfAction2"
- scope="session"
- parameter="jpfAction2" >
+ scope="session">
</action>
<action
path="/jpfAction3"
- scope="session"
- parameter="jpfAction3" >
+ scope="session">
</action>
</action-mappings>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test2/merge-jpf-struts-config.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test2/merge-jpf-struts-config.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/formBean/test2/merge-jpf-struts-config.xml
Wed Aug 18 14:36:32 2004
@@ -17,9 +17,7 @@
<action-mappings>
<action
path="/jpfAction1"
- scope="session"
- parameter="jpfAction1" >
- </action>
+ scope="session"/>
</action-mappings>
</struts-config>
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/SharedFlow.jpfs
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/SharedFlow.jpfs
Wed Aug 18 14:36:32 2004
@@ -0,0 +1,15 @@
+package miniTests.jspSeesSharedFlow;
+
+import org.apache.beehive.netui.pageflow.SharedFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
[EMAIL PROTECTED](
+ simpleActions={
+ @Jpf.SimpleAction(name="sfAction",
path="/miniTests/jspSeesSharedFlow/subdir/success.jsp"),
+ @Jpf.SimpleAction(name="goPrev",
path="/miniTests/jspSeesSharedFlow/subdir/index.jsp")
+ }
+)
+public class SharedFlow extends SharedFlowController
+{
+}
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp
Wed Aug 18 14:36:32 2004
@@ -0,0 +1,22 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0"
prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0"
prefix="netui-template"%>
+
+
+<netui:html>
+ <head>
+ <netui:base/>
+ </head>
+ <body>
+ <h3>JSP Sees Shared Flow</h3>
+
+ <netui:anchor action="sfAction">sfAction (anchor)</netui:anchor>
+
+ <netui:form action="sfAction">
+ <netui:button value="sfAction (form)"/>
+ </netui:form>
+ </body>
+</netui:html>
+
+
Added:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/subdir/success.jsp
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/jspSeesSharedFlow/subdir/success.jsp
Wed Aug 18 14:36:32 2004
@@ -0,0 +1,21 @@
+<%@ page language="java" contentType="text/html;charset=UTF-8"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-html-1.0" prefix="netui"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-databinding-1.0"
prefix="netui-data"%>
+<%@ taglib uri="http://beehive.apache.org/netui/tags-template-1.0"
prefix="netui-template"%>
+
+
+<netui:html>
+ <head>
+ <netui:base/>
+ </head>
+ <body>
+ <h3>JSP Sees Shared Flow</h3>
+
+ <b>Success</b>
+ <br/>
+ <br/>
+ <netui:anchor action="goPrev">back</netui:anchor>
+ </body>
+</netui:html>
+
+
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanOverload/index.jsp
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanOverload/index.jsp
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanOverload/index.jsp
Wed Aug 18 14:36:32 2004
@@ -16,6 +16,6 @@
<br>
<netui:anchor action="chainToString">chainToString</netui:anchor>
<br>
- <netui:anchor action="chainToHashMap">chainToString</netui:anchor>
+ <netui:anchor action="chainToHashMap">chainToHashMap</netui:anchor>
</body>
</html>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test3/merge-jpf-struts-config.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test3/merge-jpf-struts-config.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test3/merge-jpf-struts-config.xml
Wed Aug 18 14:36:32 2004
@@ -17,13 +17,11 @@
<action-mappings>
<action
path="/jpfAction1"
- scope="session"
- parameter="jpfAction1" >
+ scope="session">
</action>
<action
path="/jpfAction2"
- scope="session"
- parameter="jpfAction2" >
+ scope="session">
</action>
</action-mappings>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test6/merge-jpf-struts-config.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test6/merge-jpf-struts-config.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test6/merge-jpf-struts-config.xml
Wed Aug 18 14:36:32 2004
@@ -16,8 +16,7 @@
<!-- ========== Action Mapping Definitions ==============================
-->
<action-mappings>
<action
- path="/jpfAction1"
- parameter="throw-exception" >
+ path="/jpfAction1">
<exception
type="strutsMerge.test6.Jpf1$Test1Exception"
key=""
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test7/merge-jpf-struts-config.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test7/merge-jpf-struts-config.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test7/merge-jpf-struts-config.xml
Wed Aug 18 14:36:32 2004
@@ -15,7 +15,7 @@
<!-- ========== Action Mapping Definitions ==============================
-->
<action-mappings>
- <action path="/jpfAction1" type="strutsMerge.test7.Struts1"
parameter="jpfAction1" >
+ <action path="/jpfAction1" type="strutsMerge.test7.Struts1" >
<forward name="gotoStrutsDone" contextRelative="true"
path="/resources/jsp/done.jsp" />
</action>
</action-mappings>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test8/merge-jpf-struts-config.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test8/merge-jpf-struts-config.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/strutsMerge/test8/merge-jpf-struts-config.xml
Wed Aug 18 14:36:32 2004
@@ -15,7 +15,7 @@
<!-- ========== Action Mapping Definitions ==============================
-->
<action-mappings>
- <action path="/jpfAction1" parameter="jpfAction1" >
+ <action path="/jpfAction1" >
<forward contextRelative="true" path="/resources/jsp/done.jsp"
name="gotoDone"/>
</action>
</action-mappings>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Wed Aug 18 14:36:32 2004
@@ -2772,6 +2772,18 @@
</features>
</test>
<test>
+ <name>JspSeesSharedFlow</name>
+ <description>Test of executing Shared Flow actions from JSPs that are
not in Page Flow directories</description>
+ <webapp>coreWeb</webapp>
+ <categories>
+ <category>bvt</category>
+ <category>corePageFlow</category>
+ </categories>
+ <features>
+ <feature>SharedFlow</feature>
+ </features>
+ </test>
+ <test>
<name>jsScriptScopeId</name>
<description>Test that scope id works</description>
<webapp>coreWeb</webapp>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/AnyBeanOverload.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/AnyBeanOverload.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/AnyBeanOverload.xml
Wed Aug 18 14:36:32 2004
@@ -87,7 +87,7 @@
<br>
<a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToString.do">chainToString</a>
<br>
- <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToString</a>
+ <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToHashMap</a>
</body>
</html>]]></responseBody>
@@ -184,7 +184,7 @@
<br>
<a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToString.do">chainToString</a>
<br>
- <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToString</a>
+ <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToHashMap</a>
</body>
</html>]]></responseBody>
@@ -273,7 +273,7 @@
<br>
<a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToString.do">chainToString</a>
<br>
- <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToString</a>
+ <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToHashMap</a>
</body>
</html>]]></responseBody>
@@ -362,7 +362,7 @@
<br>
<a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToString.do">chainToString</a>
<br>
- <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToString</a>
+ <a
href="/coreWeb/pageFlowCore/anyBeanOverload/chainToHashMap.do">chainToHashMap</a>
</body>
</html>]]></responseBody>
@@ -374,4 +374,4 @@
<endDate>11 May 2004, 10:32:15.957 AM MDT</endDate>
<testCount>4</testCount>
-</recorderSession>
\ No newline at end of file
+</recorderSession>
Added:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/JspSeesSharedFlow.xml
==============================================================================
--- (empty file)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/JspSeesSharedFlow.xml
Wed Aug 18 14:36:32 2004
@@ -0,0 +1,413 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session">
+ <ses:sessionName>JspSeesSharedFlow</ses:sessionName>
+ <ses:tester>rich</ses:tester>
+ <ses:startDate>17 Aug 2004, 10:24:27.272 AM MDT</ses:startDate>
+ <ses:description>Test of executing Shared Flow actions from JSPs that are
not in Page Flow directories.</ses:description>
+ <ses:tests>
+ <ses:test>
+ <ses:testNumber>1</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+
<ses:uri>/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>30BD0E3B54BFCF9C60A371AEB6A347D0</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=30BD0E3B54BFCF9C60A371AEB6A347D0</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML
4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+ <base
href="http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp">
+ </head>
+ <body>
+ <h3>JSP Sees Shared Flow</h3>
+
+ <a
href="/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do">sfAction
(anchor)</a>
+
+ <form id="Netui_Form_0"
action="/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do" method="post">
+ <input type="submit" value="sfAction (form)">
+ </form>
+ </body>
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>2</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+
<ses:uri>/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>30BD0E3B54BFCF9C60A371AEB6A347D0</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=30BD0E3B54BFCF9C60A371AEB6A347D0</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML
4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+ <base
href="http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/success.jsp">
+ </head>
+ <body>
+ <h3>JSP Sees Shared Flow</h3>
+
+ <b>Success</b>
+ <br/>
+ <br/>
+ <a
href="/coreWeb/miniTests/jspSeesSharedFlow/subdir/goPrev.do">back</a>
+ </body>
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>3</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+
<ses:uri>/coreWeb/miniTests/jspSeesSharedFlow/subdir/goPrev.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>30BD0E3B54BFCF9C60A371AEB6A347D0</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=30BD0E3B54BFCF9C60A371AEB6A347D0</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML
4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+ <base
href="http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp">
+ </head>
+ <body>
+ <h3>JSP Sees Shared Flow</h3>
+
+ <a
href="/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do">sfAction
(anchor)</a>
+
+ <form id="Netui_Form_0"
action="/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do" method="post">
+ <input type="submit" value="sfAction (form)">
+ </form>
+ </body>
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>4</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+
<ses:uri>/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do</ses:uri>
+ <ses:method>POST</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>30BD0E3B54BFCF9C60A371AEB6A347D0</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>0</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=30BD0E3B54BFCF9C60A371AEB6A347D0</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/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) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML
4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+ <base
href="http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/success.jsp">
+ </head>
+ <body>
+ <h3>JSP Sees Shared Flow</h3>
+
+ <b>Success</b>
+ <br/>
+ <br/>
+ <a
href="/coreWeb/miniTests/jspSeesSharedFlow/subdir/goPrev.do">back</a>
+ </body>
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ <ses:test>
+ <ses:testNumber>5</ses:testNumber>
+ <ses:request>
+ <ses:protocol>HTTP</ses:protocol>
+ <ses:protocolVersion>1.1</ses:protocolVersion>
+ <ses:host>localhost</ses:host>
+ <ses:port>8080</ses:port>
+
<ses:uri>/coreWeb/miniTests/jspSeesSharedFlow/subdir/goPrev.do</ses:uri>
+ <ses:method>GET</ses:method>
+ <ses:parameters/>
+ <ses:cookies>
+ <ses:cookie>
+ <ses:name>JSESSIONID</ses:name>
+ <ses:value>30BD0E3B54BFCF9C60A371AEB6A347D0</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=30BD0E3B54BFCF9C60A371AEB6A347D0</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>host</ses:name>
+ <ses:value>localhost:8080</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>keep-alive</ses:name>
+ <ses:value>300</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>referer</ses:name>
+
<ses:value>http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do</ses:value>
+ </ses:header>
+ <ses:header>
+ <ses:name>user-agent</ses:name>
+ <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US;
rv:1.7) Gecko/20040707 Firefox/0.9.2</ses:value>
+ </ses:header>
+ </ses:headers>
+ </ses:request>
+ <ses:response>
+ <ses:statusCode>200</ses:statusCode>
+ <ses:reason/>
+ <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML
4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+ <base
href="http://localhost:8080/coreWeb/miniTests/jspSeesSharedFlow/subdir/index.jsp">
+ </head>
+ <body>
+ <h3>JSP Sees Shared Flow</h3>
+
+ <a
href="/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do">sfAction
(anchor)</a>
+
+ <form id="Netui_Form_0"
action="/coreWeb/miniTests/jspSeesSharedFlow/subdir/sfAction.do" method="post">
+ <input type="submit" value="sfAction (form)">
+ </form>
+ </body>
+</html>]]></ses:responseBody>
+ </ses:response>
+ </ses:test>
+ </ses:tests>
+ <ses:endDate>17 Aug 2004, 10:25:13.889 AM MDT</ses:endDate>
+ <ses:testCount>5</ses:testCount>
+</ses:recorderSession>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml
Wed Aug 18 14:36:32 2004
@@ -161,7 +161,7 @@
<h4>PageFlow Global Info</h4>
<a href="/coreWeb/pageFlowCore/pfGlobalApp/globalAction_getInfo.do">Get Global
Info</a>
<hr />
-<table border='1'
cellspacing='0'cellpaddinig='2'><tr><td>Request</td><td>/coreWeb/-webappRoot/globalAction_getInfo.do</td></tr><tr><td>Response</td><td>Committed:false</td></tr><tr><td>Session</td><td>In
active
interval:3600</td></tr><tr><td>Nestable</td><td>false</td></tr><tr><td>PageFlow</td><td>false</td></tr><tr><td>Actions</td><td>gblJpfTest10<br
/>globalAction<br />globalAction_action<br />globalAction_form<br
/>globalAction_getInfo<br />globalAction_results<br />globalReturnToAction<br
/>globalReturnToCurrentPage<br />globalReturnToCurrentPageOverrideForm<br
/>globalReturnToCurrentPageOverrideInputs<br
/>globalReturnToCurrentPageWithForm<br />globalReturnToPage<br
/>globalReturnToPageOverrideForm<br />globalReturnToPageOverrideInputs<br
/>globalReturnToPageWithForm<br />globalReturnToPreviousAction<br
/>globalReturnToPreviousPage<br />globalReturnToPreviousPageOverrideForm<br
/>globalReturnToPreviousPageOverrideInputs<br />jpf1Begin<br />jpf1GoNested<br
/>jpf2Begin<br />jpf2GoNested<br />jpfReturn1<br
/>pageFlowCore_sharedFlow_globalAction<br />test35GlobalAction<br
/>test36GlobalAction<br />test39GlobalAction<br />test40GlobalAction<br
/>test40GlobalAction_B<br />test45GlobalAction<br />test46GlobalAction<br
/>test48GlobalAction<br />toLegacy<br />unHandledAction<br />unKnown<br
/></td></tr><tr><td>ActionMapping</td><td>ActionConfig[path=/globalAction_getInfo,name=globalForm,scope=request,type=webappRoot.SharedFlow</td></tr><tr><td>URI</td><td>/</td></tr><tr><td>parentDir</td><td>/-webappRoot</td></tr></table>
+<table border='1'
cellspacing='0'cellpaddinig='2'><tr><td>Request</td><td>/coreWeb/-webappRoot/globalAction_getInfo.do</td></tr><tr><td>Response</td><td>Committed:false</td></tr><tr><td>Session</td><td>In
active
interval:3600</td></tr><tr><td>Nestable</td><td>false</td></tr><tr><td>PageFlow</td><td>false</td></tr><tr><td>Actions</td><td>gblJpfTest10<br
/>globalAction<br />globalAction_action<br />globalAction_form<br
/>globalAction_getInfo<br />globalAction_results<br />globalReturnToAction<br
/>globalReturnToCurrentPage<br />globalReturnToCurrentPageOverrideForm<br
/>globalReturnToCurrentPageOverrideInputs<br
/>globalReturnToCurrentPageWithForm<br />globalReturnToPage<br
/>globalReturnToPageOverrideForm<br />globalReturnToPageOverrideInputs<br
/>globalReturnToPageWithForm<br />globalReturnToPreviousAction<br
/>globalReturnToPreviousPage<br />globalReturnToPreviousPageOverrideForm<br
/>globalReturnToPreviousPageOverrideInputs<br />jpf1Begin<br />jpf1GoNested<br
/>jpf2Begin<br />jpf2GoNested<br />jpfReturn1<br
/>pageFlowCore_sharedFlow_globalAction<br />test35GlobalAction<br
/>test36GlobalAction<br />test39GlobalAction<br />test40GlobalAction<br
/>test40GlobalAction_B<br />test45GlobalAction<br />test46GlobalAction<br
/>test48GlobalAction<br />toLegacy<br />unHandledAction<br />unKnown<br
/></td></tr><tr><td>ActionMapping</td><td>ActionConfig[path=/globalAction_getInfo,name=globalForm,parameter=webappRoot.SharedFlow,scope=request,type=org.apache.beehive.netui.pageflow.internal.FlowControllerAction</td></tr><tr><td>URI</td><td>/</td></tr><tr><td>parentDir</td><td>/-webappRoot</td></tr></table>
</body>
</html>]]></ses:responseBody>
</ses:response>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfPageFlow.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfPageFlow.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfPageFlow.xml
Wed Aug 18 14:36:32 2004
@@ -153,7 +153,7 @@
<a href="/coreWeb/pageFlowCore/pfPageFlow/getInfo.do">Generate Page Flow
Calls</a><br />
<a href="/coreWeb/pageFlowCore/pfPageFlow/sendError.do">Generate An Error
Page</a>
<hr />
-<table border='1'
cellspacing='0'cellpaddinig='2'><tr><td>Request</td><td>http://@NON_UNIQUE_HOST@:@NON_UNIQUE_PORT@/coreWeb/pageFlowCore/pfPageFlow/getInfo.do</td></tr><tr><td>Response</td><td>Committed:false</td></tr><tr><td>Session</td><td>In
active
interval:3600</td></tr><tr><td>Nestable</td><td>false</td></tr><tr><td>PageFlow</td><td>true</td></tr><tr><td>Actions</td><td>begin<br
/>getInfo<br />sendError<br
/></td></tr><tr><td>ActionMapping</td><td>ActionConfig[path=/getInfo,scope=request,type=pageFlowCore.pfPageFlow.Controller</td></tr><tr><td>Taxonomy</td><td>coreWeb.pageFlowCore.pfPageFlow.Controller</td></tr></table>
+<table border='1'
cellspacing='0'cellpaddinig='2'><tr><td>Request</td><td>http://@NON_UNIQUE_HOST@:@NON_UNIQUE_PORT@/coreWeb/pageFlowCore/pfPageFlow/getInfo.do</td></tr><tr><td>Response</td><td>Committed:false</td></tr><tr><td>Session</td><td>In
active
interval:3600</td></tr><tr><td>Nestable</td><td>false</td></tr><tr><td>PageFlow</td><td>true</td></tr><tr><td>Actions</td><td>begin<br
/>getInfo<br />sendError<br
/></td></tr><tr><td>ActionMapping</td><td>ActionConfig[path=/getInfo,parameter=pageFlowCore.pfPageFlow.Controller,scope=request,type=org.apache.beehive.netui.pageflow.internal.FlowControllerAction</td></tr><tr><td>Taxonomy</td><td>coreWeb.pageFlowCore.pfPageFlow.Controller</td></tr></table>
</body>
</html>]]></responseBody>
Modified:
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/StrutsMergeTest4.xml
==============================================================================
---
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/StrutsMergeTest4.xml
(original)
+++
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/StrutsMergeTest4.xml
Wed Aug 18 14:36:32 2004
@@ -194,7 +194,7 @@
<hr width="95%"/>
<br/>
<center>
- <form name="form1"
action="/coreWeb/strutsMerge/test4/jpfAction1.do" method="post">
+ <form name="form2"
action="/coreWeb/strutsMerge/test4/jpfAction1.do" method="post">
<table>
<tr>
<td>Field1</td>
@@ -436,4 +436,4 @@
<testCount>4</testCount>
<passedCount>2</passedCount>
<failedCount>2</failedCount>
-</recorderSession>
\ No newline at end of file
+</recorderSession>