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>

Reply via email to