svn commit: r111484 - in incubator/beehive/trunk/netui: src/compiler/org/apache/beehive/netui/compiler src/compiler/org/apache/beehive/netui/compiler/apt src/compiler/org/apache/beehive/netui/compiler/genmodel src/compiler/org/apache/beehive/netui/compiler/grammar src/compiler/org/apache/beehive/netui/compiler/model src/pageflow/org/apache/beehive/netui/pageflow src/pageflow/org/apache/beehive/netui/pageflow/annotations src/pageflow/org/apache/beehive/netui/pageflow/config src/pageflow/org/apache/beehive/netui/pageflow/internal src/pageflow/org/apache/beehive/netui/pageflow/util src/pageflow/org/apache/beehive/netui/script/common src/pageflow/org/apache/beehive/netui/script/el src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke src/tags-html/org/apache/beehive/netui/tags/html src/tags-html/org/apache/beehive/netui/tags/internal src/tags-html/org/apache/beehive/netui/tags/tree src/util/org/apache/beehive/netui/core/urls test/webapps/drt/coreWeb test/webapps/drt/coreWeb/WEB-INF/src/global test/webapps/drt/coreWeb/databinding/cellrepeatererror test/webapps/drt/coreWeb/databinding/globalApp/nojpf test/webapps/drt/coreWeb/miniTests/appState test/webapps/drt/coreWeb/miniTests/appStatePass test/webapps/drt/coreWeb/miniTests/appStatePass/nested test/webapps/drt/coreWeb/miniTests/lifecycle test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp test/webapps/drt/coreWeb/pageFlowCore/returnToTest test/webapps/drt/coreWeb/pageFlowCore/sharedFlow test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1 test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1 test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2 test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow1 test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow2 test/webapps/drt/coreWeb/results test/webapps/drt/coreWeb/webappRoot test/webapps/drt/testRecorder/config test/webapps/drt/testRecorder/tests

10 Dec 2004 08:33:34 -0000

Author: rich
Date: Fri Dec 10 00:33:03 2004
New Revision: 111484

URL: http://svn.apache.org/viewcvs?view=rev&rev=111484
Log:
Rewrote Shared Flow support.  A shared flow is an object that can provide 
common actions, state and exception handlers to a page flow.  It is declared in 
a page flow's @Jpf.Controller annotation like this:

        sharedFlowRefs={
            @Jpf.SharedFlowRef(name="mySharedFlow", 
type=foo.bar.MySharedFlow.class),
            @Jpf.SharedFlowRef(name="anotherSharedFlow", 
type=another.SharedFlow.class)
        }

    - Shared flow source files can exist in the webapp as ".jpfs" files, and 
they can also exist as normal Java source files.  Unlike page flows, they are 
not web-addressable.

    - When a page flow is hit, all its declared shared flows are created and 
stored in the session.

    - Raising an action on a shared flow is much like raising an action on a 
page flow.  It follows the pattern "<shared-flow-name>.<action-name>", e.g.,
    <netui:anchor action="mySharedFlow.someAction">raise someAction on 
mySharedFlow</netui:anchor>

    - Binding to a property of a shared flow is also much like binding to a 
property on a page flow.  It follows the patternn 
"sharedFlow.<shared-flow-name>.<property-name>", e.g.,
    <netui:span value="${sharedFlow.mySharedFlow.someProperty}"/>

    - Any unhandled exception raised during page flow action processing will be 
handled by the first declared shared flow with an appropriate @Jpf.Catch 
annotation.  The shared flows are tried in order of declaration in the 
'simpleActions' attribute of @Jpf.Controller.

    - If a page flow wants to have a direct reference to any of its shared 
flows, it simply declares a member variable annotated with @Jpf.SharedFlowField:
        
        @Jpf.SharedFlowField(name="mySharedFlow")
        foo.bar.MySharedFlow _mySharedFlow;
      
      When the page flow is created, this field will be initialized with a 
reference to the current instance of foo.bar.MySharedFlow.

    - Shared flows can be retrieved and deleted explicitly through methods on 
PageFlowUtils.

Finally, a quote from an ancient Shared Flow checkin:

    "Philosophical question: Why not just depend on inheritance for these 
features?  The main reason is that most often the state for a shared flow needs 
to be... shared, rather than duplicated across all page flows extending a 
common base class.  Shared flows have their own lifecycles, and can be managed 
independently of the page flows that depend on them.  Shared flows also avoid 
stealing the single spot in the inheritance hierarchy, so that various page 
flows using a single shared flow can extend the right base classes to provide 
inherited behavior and state." 


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



Added:
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SharedFlowRefGrammar.java
   (contents, props changed)
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedSharedFlowRefInfo.java
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/Global.app
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/Controller.jpf
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow1/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow1/SharedFlow.jpfs
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow2/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow2/SharedFlow.jpfs
   (contents, props changed)
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/webappRoot/
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/webappRoot/SharedFlow.jpfs
      - copied, changed from r111151, 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfSharedFlowActions.xml
   (contents, props changed)
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SharedFlowExceptions.xml
   (contents, props changed)
Removed:
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfSharedFlow.xml
Modified:
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.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/PageFlowChecker.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/EnumType.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/JavaIdentifierType.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
   
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.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/AutoRegisterActionServlet.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/GlobalApp.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/PageFlowPageFilter.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowControllerConfig.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedFacesBackingInfo.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedPageFlowInfo.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/pageflow/org/apache/beehive/netui/pageflow/util/URLRewriterService.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
   
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java
   
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/AnchorBase.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Button.java
   
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/internal/PageFlowTagUtils.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
   
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java
   
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urls/URLRewriterService.java
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/index.jsp
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/globalApp/nojpf/index.jsp
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Begin.jsp
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Controller.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/Controller.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/nested/Controller.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/lifecycle/Controller.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/AnyBeanReturnController.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested/NestedController.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp/Controller.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/returnToTest/returnToTestController.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp
   
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp
   incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/results/Begin.jsp
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CellRepeaterError2.xml
   
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/CompilerUtils.java
     Fri Dec 10 00:33:03 2004
@@ -152,6 +152,12 @@
         return value != null ? ( String ) value.getValue() : ( defaultIsNull ? 
null : "" );
     }
     
+    public static TypeMirror getTypeMirror( AnnotationMirror annotation, 
String memberName, boolean defaultIsNull )
+    {
+        AnnotationValue value = getAnnotationValue( annotation, memberName, 
defaultIsNull );
+        return value != null ? ( TypeMirror ) value.getValue() : null;
+    }
+    
     public static String getEnumFieldName( AnnotationMirror annotation, String 
memberName, boolean defaultIsNull )
     {
         AnnotationValue value = getAnnotationValue( annotation, memberName, 
defaultIsNull );

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerChecker.java
     Fri Dec 10 00:33:03 2004
@@ -128,23 +128,82 @@
         //
         // Run additional .jpf- or .app-specific checks.
         //
-        File sourceFile = CompilerUtils.getOriginalFile( jclass );
         doAdditionalClassChecks( jclass, getWebappRoot() );
         
+        //
+        // Runtime performance enhancement: enable saving of previous-page and 
previous-action information based on
+        // whether there were Forwards that contained navigateTo attributes.
+        //
+        enableNavigateTo( jclass, _fcInfo );
+        Map< String, TypeDeclaration > sharedFlowTypes = 
_fcInfo.getSharedFlowTypes();
+        
+        if ( sharedFlowTypes != null )
+        {
+            for ( TypeDeclaration sharedFlowType : sharedFlowTypes.values() )
+            {
+                //
+                // Saving of previous-page/previous-action info must be 
enabled if any of the referenced shared flows
+                // use this feature.
+                //
+                enableNavigateTo( sharedFlowType, _fcInfo );
+            }
+        }
+        
         endCheckClass( jclass );
         _fcInfo.endBuild();
         _checkResultMap.put( 
JpfLanguageConstants.ExtraInfoKeys.flowControllerInfo, _fcInfo );
         return _checkResultMap;
     }
     
-    protected void endCheckClass( ClassDeclaration jclass )
+    private static void enableNavigateTo( TypeDeclaration flowControllerClass, 
FlowControllerInfo fcInfo )
     {
-    
         //
-        // Now do some rudimentary code analysis to catch unresolvable 
forwards.
+        // Look through Forwards and SimpleActions in the Controller 
annotation.
+        //
+        AnnotationMirror controllerAnn = CompilerUtils.getAnnotation( 
flowControllerClass, CONTROLLER_TAG_NAME );
+        enableNavigateTo( controllerAnn, FORWARDS_ATTR, fcInfo );
+        enableNavigateTo( controllerAnn, SIMPLE_ACTIONS_ATTR, fcInfo );
+        
+        //
+        // Look through Forwards on Action and ExceptionHandler methods.
         //
-        // @TODO enable when it's supported
-        // checkActionMethodForwards( ( ILangNode ) first.getNode() );        
+        Collection< MethodDeclaration > methods = 
CompilerUtils.getClassMethods( flowControllerClass, null );
+        for ( MethodDeclaration method : methods )
+        {
+            AnnotationMirror ann = CompilerUtils.getAnnotation( method, 
ACTION_TAG_NAME );
+            if ( ann == null ) ann = CompilerUtils.getAnnotation( method, 
EXCEPTION_HANDLER_TAG_NAME );
+            if ( ann != null ) enableNavigateTo( ann, FORWARDS_ATTR, fcInfo );
+        }
+    }
+    
+    private static void enableNavigateTo( AnnotationMirror ann, String 
memberArrayName, FlowControllerInfo fcInfo )
+    {
+        List< AnnotationMirror > childAnnotations = 
CompilerUtils.getAnnotationArray( ann, memberArrayName, true );
+        
+        if ( childAnnotations != null )
+        {
+            for ( AnnotationMirror childAnnotation : childAnnotations )
+            {
+                String val = CompilerUtils.getEnumFieldName( childAnnotation, 
NAVIGATE_TO_ATTR, true );
+                
+                if ( val != null )
+                {
+                    if ( val.equals( NAVIGATE_TO_CURRENT_PAGE_STR ) || 
val.equals( NAVIGATE_TO_PREVIOUS_PAGE_STR )
+                         || val.equals( NAVIGATE_TO_PAGE_LEGACY_STR ) )
+                    {
+                        fcInfo.enableNavigateToPage();
+                    }
+                    else if ( val.equals( NAVIGATE_TO_PREVIOUS_ACTION_STR ) )
+                    {
+                        fcInfo.enableNavigateToAction();
+                    }
+                }
+            }
+        }
+    }
+    
+    protected void endCheckClass( ClassDeclaration jclass )
+    {
     }
     
     protected abstract GenStrutsApp createStrutsApp( File sourceFile, 
ClassDeclaration jclass )

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/FlowControllerInfo.java
        Fri Dec 10 00:33:03 2004
@@ -23,9 +23,9 @@
 import java.util.HashSet;
 import java.util.List;
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.Map;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.io.File;
 
 
@@ -38,12 +38,14 @@
     private boolean _nested = false;
     private Set _returnActions = null;
     private File _webappRoot = null;
-    private List< TypeDeclaration > _sharedFlowTypeHierarchy;
-    private List< String > _sharedFlowTypeNameHierarchy;
-    private List< File > _sharedFlowFileHierarchy;
+    private Map< String, TypeDeclaration > _sharedFlowTypes;
+    private LinkedHashMap< String, String > _sharedFlowTypeNames;
+    private LinkedHashMap< String, File > _sharedFlowFiles;
     private List< File > _referencedFiles = new ArrayList< File >();
     private boolean _isBuilding = false;
     private Map< String, String > _messageResourcesByKey = new HashMap< 
String, String >();
+    private boolean _navigateToActionEnabled = false;
+    private boolean _navigateToPageEnabled = false;
 
     
     public static class ActionInfo
@@ -120,7 +122,7 @@
     void endBuild()
     {
         _isBuilding = false;
-        _sharedFlowTypeHierarchy = null;     // don't hang onto the 
ClassDeclaration
+        _sharedFlowTypes = null;    // don't hang onto ClassDeclarations
     }
     
     public ActionInfo[] getActions()
@@ -207,37 +209,31 @@
         }
     }
     
-    public File getSharedFlowFile()
+    void setSharedFlowInfo( Map< String, TypeDeclaration > sharedFlowTypes )
     {
-        return _sharedFlowFileHierarchy != null && 
_sharedFlowFileHierarchy.size() > 0 ? _sharedFlowFileHierarchy.get( 0 ) : null;
-    }
-
-    void setSharedFlowInfo( List< TypeDeclaration > typeHierarchy, List< File 
> fileHierarchy )
-    {
-        _sharedFlowTypeHierarchy = typeHierarchy;
-        _sharedFlowFileHierarchy = fileHierarchy;
+        _sharedFlowTypes = sharedFlowTypes;
+        _sharedFlowTypeNames = new LinkedHashMap< String, String >();
+        _sharedFlowFiles = new LinkedHashMap< String, File >();
         
-        if ( fileHierarchy != null )
+        for ( Map.Entry< String, TypeDeclaration > entry : 
_sharedFlowTypes.entrySet() )
         {
-            _sharedFlowTypeNameHierarchy = new ArrayList< String >();
-            
-            for ( Iterator<TypeDeclaration> i = typeHierarchy.iterator(); 
i.hasNext(); )
-            {
-                TypeDeclaration sfType = i.next();
-                _sharedFlowTypeNameHierarchy.add( sfType != null ? 
sfType.getQualifiedName() : null );
-            }
+            TypeDeclaration type = entry.getValue();
+            _sharedFlowTypeNames.put( entry.getKey(), type.getQualifiedName() 
);
+            File file = type.getPosition().file();
+            _sharedFlowFiles.put( entry.getKey(), file );
+            _referencedFiles.add( file );
         }
     }
     
-    public List<TypeDeclaration> getSharedFlowTypeHierarchy()
+    public Map< String, TypeDeclaration > getSharedFlowTypes()
     {
-        assert _isBuilding : "use getSharedFlowTypeNameHierarchy after check 
phase";
-        return _sharedFlowTypeHierarchy;
+        assert _isBuilding : "use getSharedFlowTypeNames after check phase";
+        return _sharedFlowTypes;
     }
 
-    public List< String > getSharedFlowTypeNameHierarchy()
+    public Map< String, String > getSharedFlowTypeNames()
     {
-        return _sharedFlowTypeNameHierarchy;
+        return _sharedFlowTypeNames;
     }
 
     public File getWebappRoot()
@@ -263,5 +259,30 @@
     public String getControllerClassName()
     {
         return getClassName();
+    }
+
+    public Map< String, File > getSharedFlowFiles()
+    {
+        return _sharedFlowFiles;
+    }
+    
+    public void enableNavigateToAction()
+    {
+        _navigateToActionEnabled = true;
+    }
+    
+    public void enableNavigateToPage()
+    {
+        _navigateToPageEnabled = true;
+    }
+
+    public boolean isNavigateToActionEnabled()
+    {
+        return _navigateToActionEnabled;
+    }
+
+    public boolean isNavigateToPageEnabled()
+    {
+        return _navigateToPageEnabled;
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/JpfLanguageConstants.java&r2=111484
==============================================================================
--- 
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
      Fri Dec 10 00:33:03 2004
@@ -41,6 +41,8 @@
     public static final String FACES_BACKING_TAG_NAME = "FacesBacking";
     public static final String COMMAND_HANDLER_TAG_NAME = "CommandHandler";
     public static final String RAISE_ACTION_TAG_NAME = "RaiseAction";
+    public static final String SHARED_FLOW_REF_TAG_NAME = "SharedFlowRef";
+    public static final String SHARED_FLOW_FIELD_TAG_NAME = "SharedFlowField";
     
     public static final String VALIDATE_REQUIRED_TAG_NAME = "ValidateRequired";
     public static final String VALIDATE_RANGE_TAG_NAME = "ValidateRange";
@@ -79,6 +81,7 @@
     public static final String GLOBALAPP_BASE_CLASS = PAGEFLOW_PACKAGE + 
".GlobalApp";
     public static final String GLOBALAPP_PACKAGE = "global";
     public static final String GLOBALAPP_CLASSNAME = "Global";
+    public static final String GLOBALAPP_SHARED_FLOW_NAME = "__global";
     public static final String GLOBALAPP_FULL_CLASSNAME = GLOBALAPP_PACKAGE + 
'.' + GLOBALAPP_CLASSNAME;
     public static final String WEBINF_DIR_NAME = "WEB-INF";
     public static final String WEBINF_SRC_PATH = '/' + WEBINF_DIR_NAME + 
"/src";
@@ -155,6 +158,7 @@
     public static final String ACTION_ATTR = "action";
     public static final String RAISE_ACTIONS_ATTR = "raiseActions";
     public static final String MULTIPART_HANDLER_ATTR = "multipartHandler";
+    public static final String SHARED_FLOW_REFS_ATTR = "sharedFlowRefs";
     
     public static final String MIN_INT_ATTR = "minInt";
     public static final String MAX_INT_ATTR = "maxInt";

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/PageFlowChecker.java
   Fri Dec 10 00:33:03 2004
@@ -30,12 +30,16 @@
 import com.sun.mirror.declaration.AnnotationMirror;
 import com.sun.mirror.declaration.MemberDeclaration;
 import com.sun.mirror.declaration.AnnotationTypeElementDeclaration;
+import com.sun.mirror.declaration.FieldDeclaration;
+import com.sun.mirror.type.TypeMirror;
+import com.sun.mirror.type.DeclaredType;
 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 import java.util.Set;
 import java.util.HashSet;
+import java.util.LinkedHashMap;
 import java.io.File;
 import java.io.FilenameFilter;
 import java.io.IOException;
@@ -44,7 +48,6 @@
 public class PageFlowChecker
         extends FlowControllerChecker
 {
-    private static final FilenameFilter SHARED_FLOW_FILE_FILTER = new 
SharedFlowFileFilter();
     private static final FilenameFilter JPF_FILE_FILTER = new JpfFileFilter();
     
     
@@ -61,87 +64,109 @@
         }
     }
     
-    private static class SharedFlowFileFilter implements FilenameFilter
-    {
-        public boolean accept( File dir, String name )
-        {
-            return name.endsWith( SHARED_FLOW_FILE_EXTENSION_DOT ) || 
name.endsWith( JAVA_FILE_EXTENSION_DOT );
-        }
-    }
-
     public BaseGenerator getGenerator()
     {
         return new PageFlowGenerator( getEnv(), getFlowControllerInfo() );
     }
 
-    protected void startCheckClass( ClassDeclaration jclass )
+    protected void checkField( FieldDeclaration field, TypeDeclaration jclass )
     {
         //
-        // First, find the SharedFlow.jpfs file (or Global.app, for legacy 
apps).  Crawl up through the directories,
-        // looking for SharedFlow.jpfs files.  The first one found is the 
applicable one.
+        // Check to make sure that if this is a Shared Flow field, its type 
matches up with the type declared
+        // for the shared flow of that name.
         //
-        File jpfFile = CompilerUtils.getOriginalFile( jclass );
-        List< File > sharedFlowFileHierarchy = new ArrayList< File >();
-        List< TypeDeclaration > sharedFlowTypeHierarchy = new ArrayList< 
TypeDeclaration >();
-        
-        String webappRootPath = getWebappRoot().getPath();
+        AnnotationMirror sfFieldAnn = CompilerUtils.getAnnotation( field, 
SHARED_FLOW_FIELD_TAG_NAME );
         
-        for ( File i = jpfFile.getAbsoluteFile().getParentFile(); i != null; i 
= i.getParentFile() )
+        if ( sfFieldAnn != null )
         {
-            File[] sharedFlowFiles = i.listFiles( SHARED_FLOW_FILE_FILTER );
-            boolean atWebappRoot = i.equals( getWebappRoot() );
-
-            // HACK: apt doesn't like files whose pkg decl is inconsistent 
with its directory location,
-            // so when looking for a shared pageflow in the webapp root, we 
additionally look in a special
-            // subdir named "webappRoot".  This should all go away when shared 
pageflow usage is declared with
-            // annotations.
-            if ( atWebappRoot )
+            String sharedFlowName = CompilerUtils.getString( sfFieldAnn, 
NAME_ATTR, true );
+            assert sharedFlowName != null;
+            
+            List< AnnotationMirror > sharedFlowRefs =
+                    CompilerUtils.getAnnotationArrayValue( jclass, 
CONTROLLER_TAG_NAME, SHARED_FLOW_REFS_ATTR, true );
+            
+            boolean foundOne = false;
+            
+            if ( sharedFlowRefs != null )
             {
-                if ( sharedFlowFiles == null || sharedFlowFiles.length == 0 )
+                for ( AnnotationMirror sharedFlowRef : sharedFlowRefs )
                 {
-                    File specialRootPkg = new File( i, "webappRoot" );
-                    sharedFlowFiles = specialRootPkg.listFiles( 
SHARED_FLOW_FILE_FILTER );
+                    if ( sharedFlowName.equals( CompilerUtils.getString( 
sharedFlowRef, NAME_ATTR, true ) ) )
+                    {
+                        foundOne = true;
+                        
+                        TypeMirror sfType = CompilerUtils.getTypeMirror( 
sharedFlowRef, TYPE_ATTR, true );
+                        TypeMirror ft = field.getType();
+                        
+                        if ( ! ( sfType instanceof DeclaredType )
+                             || ! CompilerUtils.isAssignableFrom( ft, ( ( 
DeclaredType ) sfType ).getDeclaration() ) )
+                        {
+                            getDiagnostics().addError(
+                                    field, "error.field-not-assignable",
+                                    CompilerUtils.getDeclaration( ( 
DeclaredType ) sfType ).getQualifiedName() );
+                        }
+                    }
                 }
             }
-
-            if ( sharedFlowFiles != null && sharedFlowFiles.length > 0 )
+            
+            if ( ! foundOne )
             {
-                File sfFile = sharedFlowFiles[0];
-                TypeDeclaration sfType =
-                        atWebappRoot ?
-                        getEnv().getTypeDeclaration( WEBAPP_ROOT_PACKAGE + '.'
-                                                     + 
CompilerUtils.removeFileExtension( sfFile.getName() ) ):
-                        CompilerUtils.inferTypeFromFile( sfFile, 
webappRootPath, getEnv() );
+                getDiagnostics().addError( sfFieldAnn, 
"error.no-matching-shared-flow-declared",
+                                           SHARED_FLOW_REF_TAG_NAME, 
sharedFlowName );
+            }
+        }
+        
+        super.checkField( field, jclass );
+    }
 
-                if ( sfType != null && CompilerUtils.isAssignableFrom( 
SHARED_FLOW_BASE_CLASS, sfType, getEnv() ) )
+    protected void startCheckClass( ClassDeclaration jclass )
+    {
+        //
+        // First, find all referenced Shared Flow types.
+        //
+        LinkedHashMap< String, TypeDeclaration > sharedFlowTypes = new 
LinkedHashMap< String, TypeDeclaration >();
+        
+        AnnotationMirror ann = CompilerUtils.getAnnotation( jclass, 
CONTROLLER_TAG_NAME );
+        List< AnnotationMirror > sharedFlowRefs = 
CompilerUtils.getAnnotationArray( ann, SHARED_FLOW_REFS_ATTR, true );
+        
+        if ( sharedFlowRefs != null )
+        {
+            for ( AnnotationMirror sharedFlowRef : sharedFlowRefs )
+            {
+                String name = CompilerUtils.getString( sharedFlowRef, 
NAME_ATTR, true );
+                TypeMirror type = CompilerUtils.getTypeMirror( sharedFlowRef, 
TYPE_ATTR, true );
+                
+                if ( type instanceof DeclaredType )   // if it's not a 
DeclaredType, the error will be caught elsewhere.
                 {
-                    sharedFlowFileHierarchy.add( sfFile );
-                    sharedFlowTypeHierarchy.add( sfType );
+                    TypeDeclaration typeDecl = ( ( DeclaredType ) type 
).getDeclaration();
+                    
+                    if ( typeDecl != null )     // If the declaration is null, 
it's an error type.
+                    {
+                        sharedFlowTypes.put( name, typeDecl );
+                    }
                 }
             }
-
-            if ( atWebappRoot ) break;
         }
         
         //
         // If there's no SharedFlowController, fall back to the deprecated 
Global.app.
         //
-        if ( sharedFlowTypeHierarchy.isEmpty() )
+        if ( sharedFlowTypes.isEmpty() )
         {
-            File globalAppFile = new File( webappRootPath + GLOBALAPP_URI );
+            File globalAppFile = new File( getWebappRoot().getPath() + 
GLOBALAPP_URI );
+            
             if ( globalAppFile.exists() )
             {
                 TypeDeclaration type = getEnv().getTypeDeclaration( 
GLOBALAPP_FULL_CLASSNAME );
                 
                 if ( type != null )
                 {
-                    sharedFlowFileHierarchy.add( globalAppFile );
-                    sharedFlowTypeHierarchy.add( type );
+                    sharedFlowTypes.put( GLOBALAPP_SHARED_FLOW_NAME, type );
                 }
             }
         }
         
-        getFlowControllerInfo().setSharedFlowInfo( sharedFlowTypeHierarchy, 
sharedFlowFileHierarchy );
+        getFlowControllerInfo().setSharedFlowInfo( sharedFlowTypes );
         
         super.startCheckClass( jclass );
     }

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/apt/PageFlowAnnotationProcessor.java
   Fri Dec 10 00:33:03 2004
@@ -108,8 +108,8 @@
             
             if ( ann != null )
             {
-                diagnostics.addError( ann, 
"error.controller-annotation-invalid-base-class",
-                                      JPF_BASE_CLASS, SHARED_FLOW_BASE_CLASS );
+                diagnostics.addError( ann, 
"error.annotation-invalid-base-class2",
+                                      CONTROLLER_TAG_NAME, JPF_BASE_CLASS, 
SHARED_FLOW_BASE_CLASS );
             }
         }
         

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
 (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/diagnostics.properties
 Fri Dec 10 00:33:03 2004
@@ -132,8 +132,11 @@
 error.incompatible-locale-annotations = The attribute "{0}" may not be present 
when attribute "{1}" is true.
 error.missing-locale-annotations = The attribute "{0}" must be present when 
attribute "{1}" is false.
 
-error.controller-annotation-invalid-base-class = \
-This annotation is not valid on this class.  The class should extend {0} or 
{1}.
+error.annotation-invalid-base-class = \
+The {0} annotation is not valid on this class.  The class should extend {1}.
+
+error.annotation-invalid-base-class2 = \
+The {0} annotation is not valid on this class.  The class should extend {1} or 
{2}.
 
 error.controller-annotation-required = Files ending with "{0}" must have the 
{1} annotation.
 warning.no-controller-annotation = This class extends {0}, but it does not 
have the {1} annotation and is not abstract.
@@ -158,3 +161,6 @@
 error.action-outputs-with-redirect = Action outputs may not be used when the 
"{0}" attribute is true.
 error.action-outputs-with-absolute-uri = \
 Action outputs may not be used when the "{0}" attribute is an absolute URI, 
which automatically causes a redirect.
+
+error.field-not-assignable = This field must be of a type assignable from {0}.
+error.no-matching-shared-flow-declared = There is no {0} annotation that 
declares a shared flow with name "{1}".

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenSharedFlowStrutsApp.java
   Fri Dec 10 00:33:03 2004
@@ -26,6 +26,8 @@
 import java.io.File;
 import java.io.IOException;
 
+import static org.apache.beehive.netui.compiler.JpfLanguageConstants.*;
+
 public class GenSharedFlowStrutsApp
         extends GenStrutsApp
 {

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/genmodel/GenStrutsApp.java
     Fri Dec 10 00:33:03 2004
@@ -23,7 +23,6 @@
 import org.apache.beehive.netui.compiler.model.MessageResourcesModel;
 import org.apache.beehive.netui.compiler.model.ActionModel;
 import org.apache.beehive.netui.compiler.CompilerUtils;
-import org.apache.beehive.netui.compiler.JpfLanguageConstants;
 import org.apache.beehive.netui.compiler.FlowControllerInfo;
 import org.apache.xmlbeans.XmlException;
 import org.apache.xmlbeans.XmlCursor;
@@ -48,10 +47,11 @@
 import com.sun.mirror.type.TypeMirror;
 import com.sun.mirror.type.DeclaredType;
 
+import static org.apache.beehive.netui.compiler.JpfLanguageConstants.*;
+
 
 public class GenStrutsApp
         extends StrutsApp
-        implements JpfLanguageConstants
 {
     private ClassDeclaration _jclass;
     private String _containingPackage;
@@ -106,7 +106,9 @@
         
         if ( fcInfo != null )
         {
-            setSharedFlowTypeNames( fcInfo.getSharedFlowTypeNameHierarchy() );
+            setSharedFlows( fcInfo.getSharedFlowTypeNames() );
+            setReturnToActionDisabled( ! fcInfo.isNavigateToActionEnabled() );
+            setReturnToPageDisabled( ! fcInfo.isNavigateToPageEnabled() );
         }
     }
     
@@ -433,7 +435,7 @@
     private static String getAlternateLocation( File strutsConfigFile, File 
webappRoot )
         throws XmlException, IOException
     {
-        File webXmlFile = new File( webappRoot.getPath() + "/" + 
StrutsApp.WEBINF_DIR_NAME + "/web.xml" );
+        File webXmlFile = new File( webappRoot.getPath() + '/' + 
StrutsApp.WEBINF_DIR_NAME + "/web.xml" );
         
         if ( ! webXmlFile.canRead() )
         {
@@ -585,7 +587,7 @@
         {
             comment.append( " and " ).append( getWebappRelativePath( mergeFile 
) );
         }
-        comment.append( " on " ).append( new Date().toString() ).append( " " );
+        comment.append( " on " ).append( new Date().toString() ).append( ' ' );
         return comment.toString();
     }
     

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/CatchGrammar.java
      Fri Dec 10 00:33:03 2004
@@ -30,13 +30,11 @@
 import com.sun.mirror.declaration.ParameterDeclaration;
 import com.sun.mirror.declaration.AnnotationValue;
 import com.sun.mirror.declaration.TypeDeclaration;
-import com.sun.mirror.declaration.AnnotationTypeElementDeclaration;
 import com.sun.mirror.type.TypeMirror;
 import com.sun.mirror.type.DeclaredType;
 
 import java.util.Map;
 import java.util.Collection;
-import java.util.List;
 
 import static org.apache.beehive.netui.compiler.JpfLanguageConstants.*;
 
@@ -168,7 +166,7 @@
                         {
                             String otherForwardName = CompilerUtils.getString( 
otherForward, NAME_ATTR, true );
                             String otherForwardPath = CompilerUtils.getString( 
otherForward, PATH_ATTR, true );
-                            String otherFwdReturnTo =
+                            String otherFwdNavigateTo =
                                     CompilerUtils.getEnumFieldName( 
otherForward, NAVIGATE_TO_ATTR, true );
                         
                             Collection< AnnotationMirror > forwards = 
@@ -180,12 +178,12 @@
                             {
                                 String forwardName = CompilerUtils.getString( 
forward, NAME_ATTR, true );
                                 String forwardPath = CompilerUtils.getString( 
forward, PATH_ATTR, true );
-                                String fwdReturnTo = 
CompilerUtils.getEnumFieldName( forward, NAVIGATE_TO_ATTR, true );
+                                String fwdNavigateTo = 
CompilerUtils.getEnumFieldName( forward, NAVIGATE_TO_ATTR, true );
                             
                                 if ( forwardName != null && 
forwardName.equals( otherForwardName ) )
                                 {
                                     if ( ( forwardPath == null || ! 
forwardPath.equals( otherForwardPath ) )
-                                         && ( fwdReturnTo == null || ! 
fwdReturnTo.equals( otherFwdReturnTo ) ) )
+                                         && ( fwdNavigateTo == null || ! 
fwdNavigateTo.equals( otherFwdNavigateTo ) ) )
                                     {
                                         addError( value, 
"error.duplicate-exception-handler-forwards",
                                                   new Object[]{ 
methodBeingChecked.getSimpleName(), methodName, forwardName } );

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ControllerGrammar.java
 Fri Dec 10 00:33:03 2004
@@ -43,6 +43,7 @@
         addMemberType( VALIDATOR_MERGE_ATTR, new ValidXmlFileType( 
FormValidationDocument.type, null, this, fcInfo ) );
         addMemberType( MULTIPART_HANDLER_ATTR, new AnnotationMemberType( null, 
this ) );
         
+        addMemberArrayGrammar( SHARED_FLOW_REFS_ATTR, new 
SharedFlowRefGrammar( env, diags, rvc ) );
         addMemberArrayGrammar( FORWARDS_ATTR, new ForwardGrammar( env, diags, 
null, rvc, fcInfo ) );
         addMemberArrayGrammar( CATCHES_ATTR, new CatchGrammar( env, diags, 
null, rvc, CONTROLLER_TAG_NAME, fcInfo ) );
         addMemberArrayGrammar( MESSAGE_RESOURCES_ATTR, new 
MessageResourcesGrammar( env, diags, null, rvc, fcInfo ) );

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/EnumType.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/EnumType.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/EnumType.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/EnumType.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/EnumType.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/EnumType.java
  Fri Dec 10 00:33:03 2004
@@ -34,7 +34,7 @@
 /**
  * Supports deprecated values and values that require particular runtime 
versions.
  */ 
-public final class EnumType
+public class EnumType
         extends AnnotationMemberType
 {
     /** map of enum-val (String) -> required-runtime-version (String, may be 
null) */

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/ForwardGrammar.java
    Fri Dec 10 00:33:03 2004
@@ -84,7 +84,7 @@
         addMemberType( NAME_ATTR, getNameType() );
         addMemberType( OUTPUT_FORM_BEAN_TYPE_ATTR, new TypeNameType( null, 
false, null, this ) );
         addMemberType( OUTPUT_FORM_BEAN_ATTR, new MemberFieldType( null , 
null, this ) );
-        addMemberType( RETURN_ACTION_ATTR, new JavaIdentifierType( null, this 
) );
+        addMemberType( RETURN_ACTION_ATTR, new JavaIdentifierType( null, this, 
'.' ) );
         addMemberType( PATH_ATTR, new ExternalPathOrActionType( false, null, 
this, fcInfo ) );
         addMemberType( REDIRECT_ATTR, new AnnotationMemberType( null, this ) );
         addMemberType( EXTERNAL_REDIRECT_ATTR, new AbsolutePathType( null , 
this ) );

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/JavaIdentifierType.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/JavaIdentifierType.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/JavaIdentifierType.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/JavaIdentifierType.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/JavaIdentifierType.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/JavaIdentifierType.java
        Fri Dec 10 00:33:03 2004
@@ -27,9 +27,12 @@
 public class JavaIdentifierType
         extends AnnotationMemberType
 {
-    public JavaIdentifierType( String requiredRuntimeVersion, 
AnnotationGrammar parentGrammar )
+    private char[] _validChars;
+    
+    public JavaIdentifierType( String requiredRuntimeVersion, 
AnnotationGrammar parentGrammar, char ... validChars )
     {
         super( requiredRuntimeVersion, parentGrammar );
+        _validChars = validChars;
     }
 
     public Object onCheck( AnnotationTypeElementDeclaration valueDecl, 
AnnotationValue value,
@@ -49,14 +52,29 @@
             
             for ( int i = 1; i < val.length(); i++ )
             {
-                if ( ! Character.isJavaIdentifierPart( val.charAt( i ) ) )
+                char c = val.charAt( i );
+                
+                if ( ! Character.isJavaIdentifierPart( val.charAt( i ) ) && ! 
isValid( c ) )
                 {
-                    Object[] args = new Object[]{ new Character( val.charAt( i 
) ) };
+                    Object[] args = new Object[]{ c };
                     addError( value, "error.invalid-java-identifier-part", 
args );
                 }
             }
         }
         
         return null;
+    }
+    
+    private boolean isValid( char c )
+    {
+        if ( _validChars != null )
+        {
+            for ( int i = 0; i < _validChars.length; i++ )
+            {
+                if ( c == _validChars[i] ) return true;
+            }
+        }
+        
+        return false;
     }
 }

Added: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SharedFlowRefGrammar.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SharedFlowRefGrammar.java?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/SharedFlowRefGrammar.java
      Fri Dec 10 00:33:03 2004
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * 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.compiler.grammar;
+
+import org.apache.beehive.netui.compiler.AnnotationGrammar;
+import org.apache.beehive.netui.compiler.Diagnostics;
+import org.apache.beehive.netui.compiler.RuntimeVersionChecker;
+import org.apache.beehive.netui.compiler.CompilerUtils;
+import org.apache.beehive.netui.compiler.JpfLanguageConstants;
+import com.sun.mirror.apt.AnnotationProcessorEnvironment;
+import com.sun.mirror.declaration.AnnotationMirror;
+import com.sun.mirror.declaration.MemberDeclaration;
+import com.sun.mirror.declaration.TypeDeclaration;
+
+import static org.apache.beehive.netui.compiler.JpfLanguageConstants.TYPE_ATTR;
+import static 
org.apache.beehive.netui.compiler.JpfLanguageConstants.SHARED_FLOW_BASE_CLASS;
+import static 
org.apache.beehive.netui.compiler.JpfLanguageConstants.JPF_BASE_CLASS;
+import static 
org.apache.beehive.netui.compiler.JpfLanguageConstants.SHARED_FLOW_REF_TAG_NAME;
+
+public class SharedFlowRefGrammar
+        extends AnnotationGrammar
+{
+    public SharedFlowRefGrammar( AnnotationProcessorEnvironment env, 
Diagnostics diags, RuntimeVersionChecker rvc )
+    {
+        super( env, diags, null, rvc );
+        
+        // NAME_ATTR does not need a custom type
+        addMemberType( TYPE_ATTR, new TypeNameType( SHARED_FLOW_BASE_CLASS, 
false, null, this ) );
+    }
+
+    protected boolean onBeginCheck( AnnotationMirror annotation, 
AnnotationMirror[] parentAnnotations,
+                                    MemberDeclaration classMember )
+    {
+        assert classMember instanceof TypeDeclaration : 
classMember.getClass().getName();   // enforced in Jpf.java
+        
+        if ( ! CompilerUtils.isAssignableFrom( JPF_BASE_CLASS, ( 
TypeDeclaration ) classMember, getEnv() ) )
+        {
+            addError( annotation, "error.annotation-invalid-base-class", 
SHARED_FLOW_REF_TAG_NAME, JPF_BASE_CLASS );
+            return false;
+        }
+        
+        return super.onBeginCheck( annotation, parentAnnotations, classMember 
);
+    }
+}

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/grammar/WebappPathOrActionType.java
    Fri Dec 10 00:33:03 2004
@@ -29,7 +29,6 @@
 import com.sun.mirror.apt.AnnotationProcessorEnvironment;
 
 import java.util.Collection;
-import java.util.List;
 
 public class WebappPathOrActionType
         extends WebappPathType
@@ -56,12 +55,33 @@
 
                 if ( ! foundIt )
                 {
-                    List< TypeDeclaration > sharedFlowTypeHierarchy =
-                            
getFlowControllerInfo().getSharedFlowTypeHierarchy();
+                    //
+                    // Check for a Shared Flow action reference of the form 
<shared-flow-name>.<action>.
+                    //
+                    int dot = actionMethodName.indexOf( '.' );
                     
-                    if ( sharedFlowTypeHierarchy != null && 
sharedFlowTypeHierarchy.size() > 0 )
+                    if ( dot != 1 && dot > actionMethodName.length() -1 )
                     {
-                        foundIt = actionExists( actionMethodName, 
sharedFlowTypeHierarchy.get( 0 ), null, getEnv() );
+                        String sharedFlowName = actionMethodName.substring( 0, 
dot );
+                        TypeDeclaration sfTypeDecl = 
getFlowControllerInfo().getSharedFlowTypes().get( sharedFlowName );
+                        
+                        if ( sfTypeDecl != null )
+                        {
+                            actionMethodName = actionMethodName.substring( dot 
+ 1 );
+                            foundIt = actionExists( actionMethodName, 
sfTypeDecl, null, getEnv() );
+                        }
+                    }
+                }
+                
+                if ( ! foundIt )
+                {
+                    //
+                    // Look in (legacy) Global.app
+                    //
+                    TypeDeclaration globalAppDecl = 
getEnv().getTypeDeclaration( GLOBALAPP_FULL_CLASSNAME );
+                    if ( globalAppDecl != null )
+                    {
+                        foundIt = actionExists( actionMethodName, 
globalAppDecl, null, getEnv() );
                     }
                 }
                 

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/AbstractForwardContainer.java
    Fri Dec 10 00:33:03 2004
@@ -63,10 +63,6 @@
                  return;
          }
         
-         //
-         // Optimizations for the runtime.
-         //
-         getParentApp().enableReturnTo( newActionForward );
          _forwards.put( newActionForward.getName(), newActionForward );
      }
     

Modified: 
incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.java&r1=111483&p2=incubator/beehive/trunk/netui/src/compiler/org/apache/beehive/netui/compiler/model/StrutsApp.java&r2=111484
==============================================================================
--- 
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
   Fri Dec 10 00:33:03 2004
@@ -35,6 +35,7 @@
 import java.util.Iterator;
 import java.util.Collections;
 import java.util.Comparator;
+import java.util.LinkedHashMap;
 
 
 import static 
org.apache.beehive.netui.compiler.JpfLanguageConstants.PAGEFLOW_PACKAGE;
@@ -58,7 +59,8 @@
     private boolean _isNestedPageFlow = false;
     private boolean _isLongLivedPageFlow = false;
     private boolean _isSharedFlow = false;
-    private List< String > _sharedFlowTypeNames = null;
+    /** Map of name to typename */
+    private Map< String, String > _sharedFlows = null;
     private String _controllerClassName = null;
     private String _multipartHandlerClassName = null;
     
@@ -186,18 +188,6 @@
         _exceptionCatches.add( c );
     }
 
-    void enableReturnTo( ForwardModel fwd )
-    {  
-        if ( fwd.isReturnToAction() )
-        {
-            _returnToActionDisabled = false;
-        }
-        else if ( fwd.isReturnToPage() )
-        {
-            _returnToPageDisabled = false;
-        }
-    }
-
     /**
      * Returns all of the form beans that are defined for this
      * StrutsApp.
@@ -402,6 +392,16 @@
         return _returnToActionDisabled;
     }
     
+    public void setReturnToPageDisabled( boolean disabled )
+    {
+        _returnToPageDisabled = disabled;
+    }
+    
+    public void setReturnToActionDisabled( boolean disabled )
+    {
+        _returnToActionDisabled = disabled;
+    }
+    
     public void setValidationModel( ValidationModel validationModel )
     {
         if ( ! validationModel.isEmpty() )  // if there's nothing in the 
validation model, we don't care about it.
@@ -685,23 +685,21 @@
             if ( isReturnToPageDisabled() ) addSetProperty( controller, 
"isReturnToPageDisabled", "true" );
             if ( isReturnToActionDisabled() ) addSetProperty( controller, 
"isReturnToActionDisabled", "true" );
             
-            if ( _sharedFlowTypeNames != null )
+            if ( _sharedFlows != null )
             {
-                StringBuilder sharedFlowModules = new StringBuilder();
+                StringBuilder str = new StringBuilder();
+                boolean first = true;
                 
-                for ( Iterator< String > i = _sharedFlowTypeNames.iterator(); 
i.hasNext(); )
+                for ( Map.Entry< String, String > entry : 
_sharedFlows.entrySet() )
                 {
-                    String typeName = i.next();
-                    int lastDot = typeName.lastIndexOf( '.' );
-                    assert lastDot != -1 : typeName;
-                    String containingPackage = typeName.substring( 0, lastDot 
);
-                    if ( sharedFlowModules.length() > 0 ) 
sharedFlowModules.append( ';' );
-                    sharedFlowModules.append( '/' );
-                    sharedFlowModules.append( STRUTS_CONFIG_SEPARATOR );
-                    sharedFlowModules.append( containingPackage.replace( '.', 
'/' ) );
-               }
+                    if ( ! first ) str.append( ',' );
+                    first = false;
+                    String name = entry.getKey();
+                    String type = entry.getValue();
+                    str.append( name ).append( '=' ).append( type );
+                }
                 
-               addSetProperty( controller, "sharedFlowModules", 
sharedFlowModules.toString() );
+               addSetProperty( controller, "sharedFlows", str.toString() );
             }
             
             addSetProperty( controller, "controllerClass", 
_controllerClassName );
@@ -811,11 +809,11 @@
         _isSharedFlow = sharedFlow;
     }
 
-    protected void setSharedFlowTypeNames( List< String > sharedFlowTypeNames )
+    protected void setSharedFlows( Map< String, String > sharedFlows )
     {
-        _sharedFlowTypeNames = sharedFlowTypeNames;
+        _sharedFlows = sharedFlows;
     }
-
+    
     public String getMultipartHandlerClassName()
     {
         return _multipartHandlerClassName;

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 Fri Dec 10 00:33:03 2004
@@ -665,13 +665,14 @@
             }
             else
             {
+                String relativeURI = InternalUtils.getDecodedServletPath( 
request );
+                /*
                 //
                 // If we couldn't find an appropriate module, try raising the 
action on the appropriate
                 // SharedFlowController, if one exists.
                 //
                 SharedFlowController sf =
                         FlowControllerFactory.getSharedFlowForRequest( 
request, response, servletContext );
-                String relativeURI = InternalUtils.getDecodedServletPath( 
request );
                 
                 if ( sf != null )
                 {
@@ -683,7 +684,7 @@
                     frh.forward( sfActionURI.toString(), request, response );
                     return;
                 }
-                
+                */
                 
                 if ( _log.isErrorEnabled() )
                 {

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FacesBackingBean.java
  Fri Dec 10 00:33:03 2004
@@ -21,8 +21,10 @@
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.pageflow.internal.CachedFacesBackingInfo;
 import org.apache.beehive.netui.pageflow.internal.ServerAdapterManager;
+import org.apache.beehive.netui.pageflow.internal.CachedSharedFlowRefInfo;
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
 import org.apache.beehive.netui.util.cache.ClassLevelCache;
+import org.apache.beehive.netui.util.logging.Logger;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -35,6 +37,7 @@
         extends PageFlowManagedObject
 {
     private static final String CACHED_INFO_KEY = "cachedInfo";
+    private static final Logger _log = Logger.getInstance( 
FacesBackingBean.class );
     
     private Map _pageInputs;
     
@@ -87,14 +90,36 @@
         }
         
         //
-        // Initialize the shared flow field.
+        // Initialize the shared flow fields.
         //
-        Field sharedFlowMemberField = 
getCachedInfo().getSharedFlowMemberField();
+        CachedSharedFlowRefInfo.SharedFlowFieldInfo[] sharedFlowMemberFields =
+                getCachedInfo().getSharedFlowMemberFields();
         
-        if ( fieldIsUninitialized( sharedFlowMemberField ) )
+        if ( sharedFlowMemberFields != null )
         {
-            SharedFlowController sf = PageFlowUtils.getSharedFlow( request, 
servletContext );
-            initializeField( sharedFlowMemberField, sf );
+            for ( int i = 0; i < sharedFlowMemberFields.length; i++ )
+            {
+                CachedSharedFlowRefInfo.SharedFlowFieldInfo fi = 
sharedFlowMemberFields[i];
+                Field field = fi.field;
+                
+                if ( fieldIsUninitialized( field ) )
+                {
+                    Map< String, SharedFlowController > sharedFlows = 
PageFlowUtils.getSharedFlows( request );
+                    String name = fi.sharedFlowName;
+                    SharedFlowController sf =
+                            name != null ? sharedFlows.get( name ) : 
PageFlowUtils.getGlobalApp( request );
+                    
+                    if ( sf != null )
+                    {
+                        initializeField( field, sf );
+                    }
+                    else
+                    {
+                        _log.error( "Could not find shared flow with name \"" 
+ fi.sharedFlowName
+                                    + "\" to initialize field " + 
field.getName() + " in " + getClass().getName() );
+                    }
+                }
+            }
         }
         
         super.reinitialize( request, response, servletContext );

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowController.java&r2=111484
==============================================================================
--- 
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
    Fri Dec 10 00:33:03 2004
@@ -933,18 +933,6 @@
         {
             _moduleConfig = InternalUtils.getModuleConfig( getModulePath(), 
servletContext );
             
-            //
-            // We'll get into this next block if the requested module path 
differs in case from
-            // the "natural" module path for this file (Windows only).  If so, 
we'll parse the
-            // module path from the request.  Note that the request (which 
comes from _perRequestState)
-            // may be null for Global.app, but because we create the 
Global.app URIs ("/-global"
-            // module path), we'll never have a case issue.
-            //
-            if ( _moduleConfig == null && ! FileUtils.isOSCaseSensitive() && 
request != null )
-            {
-                _moduleConfig = InternalUtils.getModuleConfig( 
PageFlowUtils.getModulePath( request ), servletContext );
-            }
-            
             if ( _moduleConfig == null )
             {
                 //

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/FlowControllerFactory.java
     Fri Dec 10 00:33:03 2004
@@ -21,6 +21,8 @@
 import org.apache.beehive.netui.util.config.ConfigUtil;
 import org.apache.beehive.netui.util.config.bean.PageflowConfig;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.InternalConstants;
+import org.apache.beehive.netui.pageflow.config.PageFlowControllerConfig;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
@@ -28,9 +30,12 @@
 import javax.servlet.ServletException;
 
 import org.apache.struts.config.ModuleConfig;
+import org.apache.struts.config.ControllerConfig;
 import org.apache.struts.action.ActionServlet;
 
 import java.io.IOException;
+import java.util.Map;
+import java.util.LinkedHashMap;
 
 
 /**
@@ -103,30 +108,76 @@
         return cur;
     }    
     
-    public static SharedFlowController getSharedFlowForRequest( 
HttpServletRequest request,
-                                                                
HttpServletResponse response,
-                                                                ServletContext 
servletContext )
+    public static Map<String, SharedFlowController> getSharedFlowsForRequest( 
HttpServletRequest request,
+                                                                              
HttpServletResponse response,
+                                                                              
ServletContext servletContext )
     {
-        return getSharedFlowForRelativeURI( request, response, 
InternalUtils.getDecodedServletPath( request ), servletContext );
+        String relativeURI = InternalUtils.getDecodedServletPath( request );
+        return getSharedFlowsForRelativeURI( request, response, relativeURI, 
servletContext );
     }
     
-    public static SharedFlowController getSharedFlowForRelativeURI( 
HttpServletRequest request, HttpServletResponse response,
-                                                                    String 
relativeURI, ServletContext servletContext )
+    public static Map<String, SharedFlowController> 
getSharedFlowsForRelativeURI( HttpServletRequest request,
+                                                                               
   HttpServletResponse response,
+                                                                               
   String relativeURI,
+                                                                               
   ServletContext servletContext )
     {
-        String className = InternalUtils.getSharedFlowClassNameForRelativeURI( 
relativeURI, request, servletContext );
-        if ( className == null ) return null;
-        SharedFlowController cur = PageFlowUtils.getSharedFlow( className, 
request );
+        String parentDir = PageFlowUtils.getModulePathForRelativeURI( 
relativeURI );
+        ModuleConfig mc = InternalUtils.ensureModuleConfig( parentDir, 
request, servletContext );
+        
+        if ( mc != null )
+        {
+            ControllerConfig cc = mc.getControllerConfig();
+            
+            if ( cc instanceof PageFlowControllerConfig )
+            {
+                Map< String, String > sharedFlowTypes = ( ( 
PageFlowControllerConfig ) cc ).getSharedFlowTypes();
+                
+                if ( sharedFlowTypes != null && sharedFlowTypes.size() > 0 )
+                {
+                    LinkedHashMap< String, SharedFlowController > sharedFlows =
+                            new LinkedHashMap< String, SharedFlowController 
>();
+                    
+                    for ( Map.Entry< String, String > entry : 
sharedFlowTypes.entrySet() )
+                    {
+                        String name = entry.getKey();
+                        String className = entry.getValue();
+                        SharedFlowController sf = PageFlowUtils.getSharedFlow( 
className, request );
+                        
+                        //
+                        // Reinitialize transient data that may have been lost 
on session failover.
+                        //
+                        if ( sf != null )
+                        {
+                            sf.reinitialize( request, response, servletContext 
);
+                        }
+                        else
+                        {
+                            sf = getSharedFlow( className, request, response, 
servletContext );
+                        }
+                        
+                        if ( sf != null && ! ( sf instanceof GlobalApp ) ) 
sharedFlows.put( name, sf );
+                    }
+                    
+                    return sharedFlows;
+                }
+            }
+        }
         
-        if ( cur != null )
+        //
+        // Legacy behavior: if there's no page flow for the request, 
initialize a GlobalApp instance.
+        //
+        SharedFlowController ga = PageFlowUtils.getGlobalApp( request );
+        
+        if ( ga != null )
+        {
+            ga.reinitialize( request, response, servletContext );
+        }
+        else
         {
-            //
-            // Reinitialize transient data that may have been lost on session 
failover.
-            //
-            cur.reinitialize( request, response, servletContext );
-            return cur;
+            getSharedFlow( InternalConstants.GLOBALAPP_CLASSNAME, request, 
response, servletContext );
         }
         
-        return getSharedFlow( className, request, response ,servletContext );
+        return null;
     }    
     
     /**

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/ForwardHandler.java
    Fri Dec 10 00:33:03 2004
@@ -377,7 +377,7 @@
                                                   HttpServletResponse 
response, ActionMapping mapping )
     {
         PageFlowStack pfStack = PageFlowStack.get( request );
-        String exitAction = pageFlowFwd.getPath();
+        String returnAction = pageFlowFwd.getPath();
                 
         if ( pfStack.isEmpty() )
         {
@@ -397,7 +397,7 @@
                 _log.warn( msg.append( '.' ).toString() );
             }
                     
-            PageFlowException ex = new EmptyNestingStackException( exitAction, 
curJpf );
+            PageFlowException ex = new EmptyNestingStackException( 
returnAction, curJpf );
             InternalUtils.throwPageFlowException( ex, request );
         }
                 
@@ -426,7 +426,7 @@
             {
                 interceptorForward = interceptor.doPostIntercept( request, 
response, poppedPageFlow,
                                                                   
pushedPageFlowWrapper.getInterceptedForward(),
-                                                                  exitAction );
+                                                                  returnAction 
);
             }
             catch ( Exception e )
             {
@@ -449,29 +449,21 @@
         //
         // Raise the returned action on the popped pageflow.
         //                    
-        assert exitAction.charAt( 0 ) != '/' : exitAction;
+        assert returnAction.charAt( 0 ) != '/' : returnAction;
 
         if ( _log.isDebugEnabled() )
         {
-            _log.debug( "Action on popped PageFlowController is " + exitAction 
);
+            _log.debug( "Action on popped PageFlowController is " + 
returnAction );
         }
 
-        StringBuilder exitActionPath = new StringBuilder( 
poppedPageFlow.getModulePath() );
-        if ( exitAction.charAt( 0 ) != '/' )
-        {
-            exitActionPath.append( '/' );
-        }
-        exitActionPath.append( exitAction ).append( ACTION_EXTENSION );
+        StringBuilder returnActionPath = new StringBuilder( 
poppedPageFlow.getModulePath() );
+        returnActionPath.append( '/' ).append( returnAction ).append( 
ACTION_EXTENSION );
 
         //
         // Store the returned form in the request.
         //
         ActionForm retForm = pageFlowFwd.getFirstOutputForm( request );
-                
-        if ( retForm != null )
-        {
-            RequestValues.setForwardedForm( request, retForm );
-        }
+        if ( retForm != null ) RequestValues.setForwardedForm( request, 
retForm );
                 
         // @TODO 9.0 - delete this deprecated feature (following line)
         request.setAttribute( InternalConstants.RETURNING_FROM_NESTING_ATTR, 
Boolean.TRUE );
@@ -479,7 +471,7 @@
         //
         // Forward to the rerturn-action on the nestig page flow.
         //
-        ActionForward fwd = new ActionForward( exitActionPath.toString(), 
false );
+        ActionForward fwd = new ActionForward( returnActionPath.toString(), 
false );
         fwd.setContextRelative( true );
         return fwd;
     }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/GlobalApp.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/GlobalApp.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/GlobalApp.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/GlobalApp.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/GlobalApp.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/GlobalApp.java
 Fri Dec 10 00:33:03 2004
@@ -39,6 +39,7 @@
  * Data in the current GlobalApp instance can be accessed by databinding tags 
using the
  * <code>globalApp</code> scope.
  * 
+ * @deprecated Use [EMAIL PROTECTED] SharedFlowController} instead.
  * @see PageFlowController
  */
 public class GlobalApp

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java&r2=111484
==============================================================================
--- 
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
        Fri Dec 10 00:33:03 2004
@@ -20,9 +20,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSession;
 import javax.servlet.ServletContext;
 import java.lang.reflect.Field;
+import java.util.Map;
 
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionMapping;
@@ -37,6 +37,7 @@
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.pageflow.internal.InternalConstants;
 import org.apache.beehive.netui.pageflow.internal.ServerAdapterManager;
+import org.apache.beehive.netui.pageflow.internal.CachedSharedFlowRefInfo;
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
 
 import static org.apache.beehive.netui.pageflow.internal.InternalConstants.*;
@@ -233,32 +234,56 @@
                                              HttpServletResponse response )
         throws Exception
     {
-        initializeSharedFlowField( request, response, getServletContext() );
+        initializeSharedFlowFields( request );
         return super.internalExecute( mapping, form, request, response );
     }
     
-    private void initializeSharedFlowField( HttpServletRequest request, 
HttpServletResponse response, 
-                                            ServletContext servletContext )
+    private void initializeSharedFlowFields( HttpServletRequest request )
     {
-        Field sharedFlowMemberField = 
getCachedInfo().getSharedFlowMemberField();
+        //
+        // Initialize the shared flow fields.
+        //
+        CachedSharedFlowRefInfo.SharedFlowFieldInfo[] sharedFlowMemberFields =
+                getCachedInfo().getSharedFlowMemberFields();
         
-        if ( fieldIsUninitialized( sharedFlowMemberField ) )
+        if ( sharedFlowMemberFields != null )
         {
-            SharedFlowController sf = InternalUtils.getSharedFlow( this, 
request, response, servletContext );
-            initializeField( sharedFlowMemberField, sf );
+            for ( int i = 0; i < sharedFlowMemberFields.length; i++ )
+            {
+                CachedSharedFlowRefInfo.SharedFlowFieldInfo fi = 
sharedFlowMemberFields[i];
+                Field field = fi.field;
+                
+                if ( fieldIsUninitialized( field ) )
+                {
+                    Map< String, SharedFlowController > sharedFlows = 
PageFlowUtils.getSharedFlows( request );
+                    String name = fi.sharedFlowName;
+                    SharedFlowController sf =
+                            name != null ? sharedFlows.get( name ) : 
PageFlowUtils.getGlobalApp( request );
+                    
+                    if ( sf != null )
+                    {
+                        initializeField( field, sf );
+                    }
+                    else
+                    {
+                        _log.error( "Could not find shared flow with name \"" 
+ fi.sharedFlowName
+                                    + "\" to initialize field " + 
field.getName() + " in " + getClass().getName() );
+                    }
+                }
+            }
         }
     }
     
-    protected SharedFlowController getSharedFlow()
+    public Map< String, SharedFlowController > getSharedFlows()
     {
-        return InternalUtils.getSharedFlow( this, getRequest(), getResponse(), 
getServletContext() );
+        return PageFlowUtils.getSharedFlows( getRequest() );
     }
     
     public final synchronized void create( HttpServletRequest request, 
HttpServletResponse response,
                                     ServletContext servletContext )
     {
         reinitialize( request, response, servletContext );
-        initializeSharedFlowField( request, response, servletContext );
+        initializeSharedFlowFields( request );
         super.create( request, response, servletContext );
     }
     
@@ -552,17 +577,7 @@
         ControllerConfig cc = mc.getControllerConfig();       
         if ( cc instanceof PageFlowControllerConfig && ( ( 
PageFlowControllerConfig ) cc ).isReturnToActionDisabled() )
         {
-            //
-            // Make sure previous-action is disabled in the 
SharedFlowController too; if not, we can't do it.
-            //
-            ModuleConfig sharedFlowConfig = InternalUtils.getSharedFlowConfig( 
mc, request, servletContext );
-            ControllerConfig sc = sharedFlowConfig != null ? 
sharedFlowConfig.getControllerConfig() : null;
-            
-            if ( sc == null ||
-                ( sc instanceof PageFlowControllerConfig && ( ( 
PageFlowControllerConfig ) sc ).isReturnToActionDisabled() ) )
-            {
-                if ( ! alwaysTrackPreviousAction() ) return;
-            }
+            if ( ! alwaysTrackPreviousAction() ) return;
         }
         
         String actionURI = PageFlowUtils.getRelativeURI( request, null );
@@ -583,17 +598,7 @@
         ControllerConfig cc = mc.getControllerConfig();       
         if ( cc instanceof PageFlowControllerConfig && ( ( 
PageFlowControllerConfig ) cc ).isReturnToPageDisabled() )
         {
-            //
-            // Make sure previous-page is disabled in the 
SharedFlowController, too; if not, we can't do it.
-            //
-            ModuleConfig sharedFlowConfig = InternalUtils.getSharedFlowConfig( 
mc, request, servletContext );
-            ControllerConfig sc = sharedFlowConfig != null ? 
sharedFlowConfig.getControllerConfig() : null;
-            
-            if ( sc == null ||
-                 ( sc instanceof PageFlowControllerConfig && ( ( 
PageFlowControllerConfig ) sc ).isReturnToPageDisabled() ) )
-            {
-                if ( ! alwaysTrackPreviousPage() ) return;
-            }
+            if ( ! alwaysTrackPreviousPage() ) return;
         }
         
         if ( forward != null )

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowPageFilter.java
        Fri Dec 10 00:33:03 2004
@@ -28,6 +28,7 @@
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.Set;
+import java.util.Map;
 
 import org.apache.struts.util.RequestUtils;
 import org.apache.struts.util.MessageResources;
@@ -162,6 +163,14 @@
                 ModuleConfig prevModuleConfig = 
RequestUtils.getRequestModuleConfig( httpRequest );
                 MessageResources prevMessageResources = ( MessageResources ) 
request.getAttribute( Globals.MESSAGES_KEY );
                 initializeModule( httpRequest, httpResponse );
+                
+                //
+                // Initialize shared flows for the current request.
+                //
+                Map< String, SharedFlowController > sharedFlows =
+                        FlowControllerFactory.getSharedFlowsForRequest( 
httpRequest, httpResponse, _servletContext );
+                ImplicitObjectUtil.loadSharedFlow( request, sharedFlows );
+                ImplicitObjectUtil.loadGlobalApp( request, 
PageFlowUtils.getGlobalApp( httpRequest ) );
                 
                 //
                 // Make sure that the current PageFlowController is set up for 
this request.

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java&r2=111484
==============================================================================
--- 
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
  Fri Dec 10 00:33:03 2004
@@ -79,6 +79,7 @@
 import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
 import org.apache.beehive.netui.pageflow.internal.FlowControllerAction;
 import org.apache.beehive.netui.pageflow.internal.ServerAdapterManager;
+import org.apache.beehive.netui.pageflow.internal.InternalConstants;
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
 import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
 import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler;
@@ -414,7 +415,7 @@
                     String actionPath = paramName.substring( 
ACTION_OVERRIDE_PARAM_PREFIX_LEN );
                     ServletContext servletContext = getServletContext();
 
-                    String qualifiedAction = InternalUtils.qualifiedAction( 
servletContext,actionPath );
+                    String qualifiedAction = InternalUtils.qualifyAction( 
servletContext,actionPath );
                     actionPath = InternalUtils.createActionPath(request, 
qualifiedAction );
 
                     if ( _log.isDebugEnabled() )
@@ -499,14 +500,6 @@
         if ( processActionOverride( request, response ) ) return;
         
         //
-        // Create the appropriate SharedFlowController if it doesn't exist.
-        //
-        if ( _log.isInfoEnabled() )
-        {
-            _log.info( "Attempting to instantiate a SharedFlowController for 
request " + request.getRequestURI() );
-        }
-        
-        //
         // Process any direct request for a page flow by forwarding to its 
"begin" action.
         //
         if ( processPageFlowRequest( request, response, uri ) ) return;
@@ -528,6 +521,19 @@
                         + " for \"controllerClass\".  Page Flow actions in 
this module may not be handled correctly." );
         }
         
+        //
+        // Create the appropriate SharedFlowController if it doesn't exist.
+        //
+        if ( _log.isInfoEnabled() )
+        {
+            _log.info( "Attempting to instantiate SharedFlowControllers for 
request " + request.getRequestURI() );
+        }
+        
+        Map< String, SharedFlowController > sharedFlows =
+                FlowControllerFactory.getSharedFlowsForRequest( request, 
response, servletContext );
+        ImplicitObjectUtil.loadSharedFlow( request, sharedFlows );
+        ImplicitObjectUtil.loadGlobalApp( request, PageFlowUtils.getGlobalApp( 
request ) );
+        
         FlowController currentFlowController = null;
         
         if ( flowControllerClassName != null )
@@ -1053,11 +1059,19 @@
     public ActionMapping processMapping( HttpServletRequest request, 
HttpServletResponse response, String path )
         throws IOException
     {
+        FlowController fc = RequestValues.getCurrentFlowController( request );
+        Object forwardedForm = InternalUtils.unwrapFormBean( 
RequestValues.getForwardedForm( request, false ) );
+        
+        //
+        // First, see if this is a request for a shared flow action.  The 
shared flow's name (as declared by the
+        // current page flow) will precede the dot.
+        //
+        if ( fc != null && ! processSharedFlowMapping( request, response, 
path, fc ) ) return null;
+        
         //
         // Look for a form-specific action path.  This is used when there are 
two actions with the same
         // name, but different forms (in nesting).
         //
-        Object forwardedForm = InternalUtils.unwrapFormBean( 
RequestValues.getForwardedForm( request, false ) );
         Class forwardedFormClass = null;
         
         if ( forwardedForm != null )
@@ -1142,70 +1156,97 @@
         }
 
         //
-        // If we've already tried Global.app, return an error.  Otherwise, try 
it (forward to it).
+        // RequestValues.getOriginalServletPath returns the request URI we had 
before trying to forward to an action
+        // in a shared flow.
         //
+        String errorServletPath = RequestValues.getOriginalServletPath( 
request );
         
-        // originalRequestURI is the request URI we had before trying to 
forward to an action in Global.app.
-        String originalServletPath = RequestValues.getOriginalServletPath( 
request );
-        
-        if ( originalServletPath != null )
-        {
-            return processUnresolvedAction( path, originalServletPath, 
request, response, forwardedForm );
-        }
-        else
+        if ( errorServletPath == null
+             && InternalUtils.getModuleConfig( GLOBALAPP_MODULE_CONTEXT_PATH, 
getServletContext() ) != null )
         {
-            if ( !trySharedFlowAction( path, request, response ) )
-            {
-                return processUnresolvedAction( path, 
InternalUtils.getDecodedServletPath( request ),
-                                                request, response, 
forwardedForm );
-            }
-        }
-        
-        return null;
-    }
-    
-    protected boolean 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() )
             {
-                _log.debug( "Action \"" + actionPath + "\" not handled in 
request for "
-                            + request.getRequestURI() + ".  Trying this action 
on the SharedFlowController." );
+                _log.debug( "Trying Global.app for unhandled action " + path );
             }
             
             //
-            // Save the original request URI, so if the action fails on the 
shared flow, too, then we can
-            // give an error message that includes *this* URI, not the shared 
flow URI.
-            //
-            RequestValues.setOriginalServletPath( request, 
InternalUtils.getDecodedServletPath( request ) );
-            
+            // We haven't tried the deprecated Global.app fallback yet.  Try 
it now.
             //
-            // Construct a URI that is [shared flow module path] + [base 
action path] + [action-extension (.do)]
-            //
-            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 );
-            
+            errorServletPath = InternalUtils.getDecodedServletPath( request );
+            RequestValues.setOriginalServletPath( request, errorServletPath );
+            String globalAppURI = GLOBALAPP_MODULE_CONTEXT_PATH + path + 
ACTION_EXTENSION;
             try
             {
-                doForward( uri.toString(), request, response );
+                doForward( globalAppURI, request, response );
             }
             catch ( ServletException e )
             {
-                _log.error( "Could not forward to shared flow URI " + uri, e );
+                _log.error( "Could not forward to Global.app URI " + 
globalAppURI );
             }
-            return true;
+            return null;
+        }
+        else
+        {
+            errorServletPath = InternalUtils.getDecodedServletPath( request );
+            return processUnresolvedAction( path, errorServletPath, request, 
response, forwardedForm );
         }
-
-        return false;
+    }
+    
+    protected boolean processSharedFlowMapping( HttpServletRequest request, 
HttpServletResponse response,
+                                                String actionPath, 
FlowController currentFlowController )
+            throws IOException
+    {
+        if ( currentFlowController.isPageFlow() )
+        {
+            int dot = actionPath.indexOf( '.' );
+            
+            if ( dot != -1 )
+            {
+                Map< String, SharedFlowController > sharedFlows = 
PageFlowUtils.getSharedFlows( request );
+                if ( sharedFlows == null ) return true;
+                if ( dot == actionPath.length() - 1 ) return true;     // 
empty action name
+                assert actionPath.startsWith( "/" ) : actionPath;
+                String sharedFlowName = actionPath.substring( 1, dot );
+                SharedFlowController sf = sharedFlows.get( sharedFlowName );
+                
+                if ( sf != null )
+                {
+                    if ( _log.isDebugEnabled() )
+                    {
+                        _log.debug( "Forwarding to shared flow " + sf.getURI() 
+ " to handle action \""
+                                    + actionPath + "\"." );
+                    }
+                    
+                    //
+                    // Save the original request URI, so if the action fails 
on the shared flow, too, then we can
+                    // give an error message that includes *this* URI, not the 
shared flow URI.
+                    //
+                    RequestValues.setOriginalServletPath( request, 
InternalUtils.getDecodedServletPath( request ) );
+                    
+                    //
+                    // Construct a URI that is [shared flow module path] + 
[base action path] + [action-extension (.do)]
+                    //
+                    int lastSlash = actionPath.lastIndexOf( '/' );
+                    assert lastSlash != -1 : actionPath;
+                    StringBuilder uri = new StringBuilder( sf.getModulePath() 
);
+                    uri.append( '/' );
+                    uri.append( actionPath.substring( dot + 1 ) );
+                    uri.append( ACTION_EXTENSION );
+                    
+                    try
+                    {
+                        doForward( uri.toString(), request, response );
+                        return false;
+                    }
+                    catch ( ServletException e )
+                    {
+                        _log.error( "Could not forward to shared flow URI " + 
uri, e );
+                    }
+                }
+            }
+        }
+        
+        return true;
     }
     
     protected ActionMapping processUnresolvedAction( String actionPath, String 
originalServletPath,
@@ -1224,14 +1265,11 @@
         // action-not-found exception.  Otherwise, let Struts print out its 
"invalid path"
         // message.
         //
-        FlowController fc = null;
+        FlowController fc = PageFlowUtils.getCurrentPageFlow( request );
+        if ( fc == null ) fc = RequestValues.getCurrentFlowController( request 
);
         
         try
         {
-            ServletContext servletContext = getServletContext();
-            fc = FlowControllerFactory.getPageFlowForRelativeURI( request, 
response, originalServletPath, servletContext );
-            if ( fc == null ) fc = PageFlowUtils.getSharedFlow( request, 
servletContext );
-            
             if ( fc != null )
             {
                 Exception ex = new ActionNotFoundException( actionPath, fc, 
returningForm );
@@ -1366,7 +1404,7 @@
                 ActionMapping mapping = ( ActionMapping ) 
request.getAttribute( Globals.MAPPING_KEY );
                 assert mapping != null;
                 ActionForm form = InternalUtils.getFormBean( mapping, request 
);
-                PageFlowController curJpf = 
InternalUtils.ensureCurrentPageFlow( request, response );
+                PageFlowController curJpf = PageFlowUtils.getCurrentPageFlow( 
request );
                 Forward pfFwd = new Forward( ( ActionForward ) fwd, 
servletContext );
                 fwd = ForwardHandler.processForward( pfFwd, mapping, request, 
response, form, servletContext, curJpf );
             }
@@ -1417,8 +1455,8 @@
                     // path so it makes sense (strip off the shared flow 
module prefix "/-" and replace it with "/").
                     //
                     ModuleConfig mc = ( ModuleConfig ) request.getAttribute( 
Globals.MODULE_KEY );
-                    if ( InternalUtils.isSharedFlowModule( mc )
-                         && fwdURI.startsWith( SHARED_FLOW_MODULE_PREFIX ) )
+                    
+                    if ( InternalUtils.isSharedFlowModule( mc ) && 
fwdURI.startsWith( SHARED_FLOW_MODULE_PREFIX ) )
                     {
                         fwdURI = '/' + fwdURI.substring( 
SHARED_FLOW_MODULE_PREFIX_LEN );
                     }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
     (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowUtils.java
     Fri Dec 10 00:33:03 2004
@@ -18,7 +18,6 @@
 package org.apache.beehive.netui.pageflow;
 
 import org.apache.beehive.netui.pageflow.config.PageFlowActionFormBean;
-import org.apache.beehive.netui.pageflow.config.PageFlowActionMapping;
 import org.apache.beehive.netui.pageflow.internal.ActionResultImpl;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.pageflow.internal.RequestValues;
@@ -31,6 +30,7 @@
 import org.apache.beehive.netui.util.FileUtils;
 import org.apache.beehive.netui.util.ServletUtils;
 import org.apache.beehive.netui.util.logging.Logger;
+import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 import org.apache.struts.action.ActionError;
 import org.apache.struts.action.ActionForm;
 import org.apache.struts.action.ActionMapping;
@@ -42,15 +42,14 @@
 
 import javax.servlet.ServletContext;
 import javax.servlet.ServletRequest;
-import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Stack;
+import java.util.Collections;
 import java.util.concurrent.ConcurrentHashMap;
-import java.io.IOException;
 import java.io.PrintStream;
 
 import static org.apache.beehive.netui.pageflow.internal.InternalConstants.*;
@@ -235,6 +234,7 @@
     /**
      * Get the current [EMAIL PROTECTED] GlobalApp} instance.
      * 
+     * @deprecated Use [EMAIL PROTECTED] #getSharedFlow} instead.
      * @param request the current HttpServletRequest.
      * @return the current [EMAIL PROTECTED] GlobalApp} from the user session, 
or <code>null</code> if none
      *         exists.
@@ -245,10 +245,10 @@
         return sf instanceof GlobalApp ? ( GlobalApp ) sf : null;
     }
 
-    public static SharedFlowController getSharedFlow( HttpServletRequest 
request, ServletContext servletContext )
+    public static Map< String, SharedFlowController > getSharedFlows( 
HttpServletRequest request )
     {
-        String className = InternalUtils.getSharedFlowClassName( request, 
servletContext );
-        return className != null ? getSharedFlow( className, request ) : null;
+        Map< String, SharedFlowController > sharedFlows = 
ImplicitObjectUtil.getSharedFlow( request );
+        return sharedFlows != null ? sharedFlows : Collections.EMPTY_MAP;
     }
     
     public static SharedFlowController getSharedFlow( String 
sharedFlowClassName, HttpServletRequest request )
@@ -263,11 +263,22 @@
         return null;
     }
     
+    /**
+     * Destroy the current [EMAIL PROTECTED] GlobalApp} instance.
+     * 
+     * @deprecated Use [EMAIL PROTECTED] #deleteSharedFlow} instead.
+     * @param request the current HttpServletRequest.
+     */ 
     public static void deleteGlobalApp( HttpServletRequest request )
     {
         deleteSharedFlow( InternalConstants.GLOBALAPP_CLASSNAME, request );
     }
     
+    /**
+     * Destroy the current [EMAIL PROTECTED] SharedFlowController} of the 
given class name.
+     * @param sharedFlowClassName the class name of the current 
SharedFlowController to destroy.
+     * @param request the current HttpServletRequest.
+     */ 
     public static void deleteSharedFlow( String sharedFlowClassName, 
HttpServletRequest request )
     {
         HttpSession session = request.getSession( false );
@@ -647,7 +658,7 @@
     }
     
     /**
-     * Sets the most recent action URI that was processed by [EMAIL PROTECTED] 
org.apache.beehive.netui.pageflow.FlowController#execute}.
+     * Sets the most recent action URI that was processed by [EMAIL PROTECTED] 
FlowController#execute}.
      */ 
     static void setActionURI( HttpServletRequest request )
     {
@@ -805,8 +816,8 @@
      * @exclude
      * 
      * @param context the current ServletContext
-     * @param request the ServletRequest, which must be a [EMAIL PROTECTED] 
org.apache.beehive.netui.pageflow.scoping.ScopedRequest}.
-     * @param response the ServletResponse, which must be a [EMAIL PROTECTED] 
org.apache.beehive.netui.pageflow.scoping.ScopedResponse}.
+     * @param request the ServletRequest, which must be a [EMAIL PROTECTED] 
ScopedRequest}.
+     * @param response the ServletResponse, which must be a [EMAIL PROTECTED] 
ScopedResponse}.
      * @param actionOverride if not <code>null</code>, this action-name is 
used to construct an action
      *                       URI which is set as the request URI.
      * @param autoResolveExtensions a list of URI extensions (e.g., ".do", 
".jpf") that will be auto-resolved, i.e.,
@@ -929,12 +940,13 @@
      */ 
     public static GlobalApp ensureGlobalApp( HttpServletRequest request, 
HttpServletResponse response )
     {
-        return ( GlobalApp ) InternalUtils.ensureSharedFlow( request, response 
);
+        ServletContext servletContext = InternalUtils.getServletContext( 
request );
+        return ensureGlobalApp( request, response, servletContext );
     }
     
     /**
      * Get or create the current [EMAIL PROTECTED] GlobalApp} instance.
-     * @deprecated Use [EMAIL PROTECTED] #getGlobalApp} instead.
+     * @deprecated Use [EMAIL PROTECTED] #getSharedFlow} instead.
      * 
      * @param request the current HttpServletRequest.
      * @param response the current HttpServletResponse
@@ -945,7 +957,9 @@
     public static GlobalApp ensureGlobalApp( HttpServletRequest request, 
HttpServletResponse response,
                                              ServletContext servletContext )
     {
-        return ( GlobalApp ) InternalUtils.ensureSharedFlow( request, 
response, servletContext );
+        Map< String, SharedFlowController > sf =
+                FlowControllerFactory.getSharedFlowsForRequest( request, 
response, servletContext );
+        return getGlobalApp( request );
     }
     
     /**
@@ -962,7 +976,6 @@
      *             not guaranteed to be supported in the future.
      */ 
     public static ModuleConfig ensureModuleConfig( String modulePath, 
ServletRequest request, ServletContext context )
-        throws IOException, ServletException
     {
         return InternalUtils.ensureModuleConfig( modulePath, request, context 
);
     }
@@ -1033,7 +1046,7 @@
                                                                   
HttpServletResponse response,
                                                                   
ServletContext servletContext )
     {
-        return InternalUtils.ensureCurrentPageFlow( request, response );
+        return FlowControllerFactory.getPageFlowForRequest( request, response, 
servletContext );
     }
     
     /**
@@ -1042,7 +1055,14 @@
     public static final PageFlowController ensureCurrentPageFlow( 
HttpServletRequest request,
                                                                   
HttpServletResponse response )
     {
-        return InternalUtils.ensureCurrentPageFlow( request, response );
+        ServletContext servletContext = InternalUtils.getServletContext( 
request );
+        
+        if ( servletContext == null && _log.isWarnEnabled() )
+        {
+            _log.warn( "could not get ServletContext from request " + request 
);
+        }
+        
+        return FlowControllerFactory.getPageFlowForRequest( request, response, 
servletContext );
     }
     
     /**

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/annotations/Jpf.java
   Fri Dec 10 00:33:03 2004
@@ -39,6 +39,8 @@
     @Retention( RUNTIME )
     public @interface Controller
     {
+        SharedFlowRef[] sharedFlowRefs() default {};
+        
         /**
          * Location of the Struts merge file; relative to the page flow, or a 
path from the webapp root.  Optional.
          */
@@ -174,14 +176,12 @@
     public @interface Action
     {
         /**
-         * page flow-scoped form; references a member variable (bean) in the 
page flow
-         * (optional )
+         * page flow-scoped form; references a member variable (bean) in the 
page flow (optional )
          */
         String useFormBean() default "";
         
         /**
-         * is this action read-only, i.e., is it guaranteed not to modify 
member state
-         * (optional )
+         * is this action read-only, i.e., is it guaranteed not to modify 
member state (optional )
          */
         boolean readOnly() default false;
         
@@ -740,8 +740,12 @@
 
     @Target( FIELD )
     @Retention( RUNTIME )
-            public @interface SharedFlowField
+    public @interface SharedFlowField
     {
+        /**
+         * The name of the shared flow, as declared in [EMAIL PROTECTED] 
SharedFlowRef#name()} 
+         */ 
+        String name();
     }
 
     @Target( FIELD )
@@ -757,8 +761,8 @@
     }
     
     @Target( METHOD )
-            @Retention( RUNTIME )
-            public @interface CommandHandler
+    @Retention( RUNTIME )
+    public @interface CommandHandler
     {
         RaiseAction[] raiseActions() default {};
     }
@@ -769,5 +773,13 @@
     {
         String action();
         String outputFormBean() default "";
+    }
+    
+    @Target( ANNOTATION_TYPE )
+    @Retention( RUNTIME )
+    public @interface SharedFlowRef
+    {
+        Class type();
+        String name();
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowControllerConfig.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowControllerConfig.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowControllerConfig.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowControllerConfig.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowControllerConfig.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/config/PageFlowControllerConfig.java
   Fri Dec 10 00:33:03 2004
@@ -23,8 +23,8 @@
 import org.apache.beehive.netui.util.config.bean.PageflowConfig;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 
-import java.util.List;
-import java.util.Arrays;
+import java.util.LinkedHashMap;
+import java.util.Map;
 
 public class PageFlowControllerConfig extends ControllerConfig
 {
@@ -36,7 +36,7 @@
     private boolean _isReturnToPageDisabled;
     private boolean _isReturnToActionDisabled;
     private boolean _isMissingDefaultMessages;
-    private List< String > _sharedFlowModules;
+    private LinkedHashMap< String, String > _sharedFlowTypes;
     private String _controllerClass;
     private boolean _isSharedFlow;
     private String _overrideMultipartClass = null;
@@ -93,19 +93,29 @@
         _isMissingDefaultMessages = missingDefaultMessages;
     }
 
-    public void setSharedFlowModules( String sharedFlowModules )
+    public void setSharedFlows( String sharedFlows )
     {
-        _sharedFlowModules = Arrays.asList( sharedFlowModules.split( ";" ) );
+        String[] keyValues = sharedFlows.split( "," );
+        _sharedFlowTypes = new LinkedHashMap< String, String >();
+        
+        for ( int i = 0; i < keyValues.length; i++ )
+        {
+            String keyValue = keyValues[i];
+            int delim = keyValue.indexOf( '=' );
+            assert delim != -1 : "no delimiter in " + keyValue;
+            assert delim < keyValue.length() - 1 : "missing value in " + 
keyValue;
+            _sharedFlowTypes.put( keyValue.substring( 0, delim ), 
keyValue.substring( delim + 1 ) );
+        }
     }
-
-    public String getSharedFlowModules()
+    
+    public String getSharedFlows()
     {
-        throw new IllegalStateException( "not implemented" );
+        throw new UnsupportedOperationException( "not implemented; uses 
getSharedFlowTypes" );
     }
     
-    public List< String > getSharedFlowModulesList()
+    public Map< String, String > getSharedFlowTypes()
     {
-        return _sharedFlowModules;
+        return _sharedFlowTypes;
     }
 
     public String getControllerClass()

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedFacesBackingInfo.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedFacesBackingInfo.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedFacesBackingInfo.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedFacesBackingInfo.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedFacesBackingInfo.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedFacesBackingInfo.java
   Fri Dec 10 00:33:03 2004
@@ -17,7 +17,6 @@
 */
 package org.apache.beehive.netui.pageflow.internal;
 
-import org.apache.beehive.netui.pageflow.PageFlowConstants;
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
 import java.lang.reflect.Field;
@@ -25,48 +24,34 @@
 
 /**
  * Information that is cached per pageflow class.
- * 
- * @exclude
  */ 
 public class CachedFacesBackingInfo
+        extends CachedSharedFlowRefInfo
 {
     /**
-     * The SharedFlowController-initialized member field -- may or may not be 
present.
-     */ 
-    private Field _sharedFlowMemberField;
-    
-    /**
      * The PageFlowController-initialized member field -- may or may not be 
present.
      */ 
     private Field _pageFlowMemberField;
     
     
-    public CachedFacesBackingInfo( Class pageFlowClass )
+    public CachedFacesBackingInfo( Class facesBackingClass )
     {
-        Field[] fields = pageFlowClass.getDeclaredFields();
+        Field[] fields = facesBackingClass.getDeclaredFields();
         
         for ( int i = 0; i < fields.length; i++ )
         {
             Field field = fields[i];
             
-            if ( field.getAnnotation( Jpf.SharedFlowField.class ) != null )
-            {
-                _sharedFlowMemberField = field;
-                _sharedFlowMemberField.setAccessible( true );
-            }
-            else if ( field.getAnnotation( Jpf.PageFlowField.class ) != null )
+            if ( field.getAnnotation( Jpf.PageFlowField.class ) != null )
             {
                 _pageFlowMemberField = field;
                 _pageFlowMemberField.setAccessible( true );
             }
         }
+        
+        initSharedFlowFields( fields );
     }
     
-    public Field getSharedFlowMemberField()
-    {
-        return _sharedFlowMemberField;
-    }
-
     public Field getPageFlowMemberField()
     {
         return _pageFlowMemberField;

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedPageFlowInfo.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedPageFlowInfo.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedPageFlowInfo.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedPageFlowInfo.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedPageFlowInfo.java
       (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedPageFlowInfo.java
       Fri Dec 10 00:33:03 2004
@@ -18,17 +18,13 @@
 package org.apache.beehive.netui.pageflow.internal;
 
 import org.apache.beehive.netui.pageflow.PageFlowConstants;
-import org.apache.beehive.netui.pageflow.annotations.Jpf;
-
-import java.lang.reflect.Field;
 
 
 /**
  * Information that is cached per pageflow class.
- * 
- * @exclude
  */ 
 public class CachedPageFlowInfo
+        extends CachedSharedFlowRefInfo
 {
     /**
      * A cached copy of the module path for this PageFlowController (the path 
starting at the webapp root).
@@ -40,35 +36,16 @@
      */ 
     private String _URI;
     
-    /**
-     * The SharedFlowController-initialized member field -- may or may not be 
present.
-     */ 
-    private Field _sharedFlowMemberField;
-    
     
     public CachedPageFlowInfo( Class pageFlowClass )
     {
-        Field[] fields = pageFlowClass.getDeclaredFields();
-        
-        for ( int i = 0; i < fields.length; i++ )
-        {
-            Field field = fields[i];
-            
-            // TODO: auto-upgrade to get rid of legacy "globalApp" field
-            if ( field.getAnnotation( Jpf.SharedFlowField.class ) != null
-                 || field.getName().equals( 
InternalConstants.GLOBALAPP_MEMBER_NAME ) )
-            {
-                _sharedFlowMemberField = field;
-                _sharedFlowMemberField.setAccessible( true );
-                break;
-            }
-        }
+        initSharedFlowFields( pageFlowClass.getDeclaredFields() );
         
         //
         // URI
         //
         String className = pageFlowClass.getName();
-        _URI = "/" + className.replace( '.', '/' ) + 
PageFlowConstants.JPF_EXTENSION;
+        _URI = '/' + className.replace( '.', '/' ) + 
PageFlowConstants.JPF_EXTENSION;
         
         //
         // module path
@@ -94,15 +71,5 @@
     public void setURI( String URI )
     {
         _URI = URI;
-    }
-
-    public Field getSharedFlowMemberField()
-    {
-        return _sharedFlowMemberField;
-    }
-
-    public void setSharedFlowMemberField( Field sharedFlowMemberField )
-    {
-        _sharedFlowMemberField = sharedFlowMemberField;
     }
 }

Added: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedSharedFlowRefInfo.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedSharedFlowRefInfo.java?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/CachedSharedFlowRefInfo.java
  Fri Dec 10 00:33:03 2004
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2004 The Apache Software Foundation.
+ *
+ * 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.beehive.netui.pageflow.annotations.Jpf;
+
+import java.util.List;
+import java.util.ArrayList;
+import java.lang.reflect.Field;
+
+public class CachedSharedFlowRefInfo
+{
+    public static class SharedFlowFieldInfo
+    {
+        public Field field;
+        public String sharedFlowName;
+    }
+    
+    /**
+     * The SharedFlowController-initialized member fields -- may or may not be 
present.
+     */ 
+    private SharedFlowFieldInfo[] _sharedFlowMemberFields;
+    
+    protected void initSharedFlowFields( Field[] fields )
+    {
+        List< SharedFlowFieldInfo > sharedFlowFields = null;
+        
+        for ( int i = 0; i < fields.length; i++ )
+        {
+            Field field = fields[i];
+            
+            Jpf.SharedFlowField sharedFlowFieldAnn = field.getAnnotation( 
Jpf.SharedFlowField.class );
+            
+            if ( sharedFlowFieldAnn != null )
+            {
+                field.setAccessible( true );
+                if ( sharedFlowFields == null ) sharedFlowFields = new 
ArrayList< SharedFlowFieldInfo >();
+                SharedFlowFieldInfo info = new SharedFlowFieldInfo();
+                info.field = field;
+                info.sharedFlowName = sharedFlowFieldAnn.name();
+                sharedFlowFields.add( info );
+            }
+            else if ( field.getName().equals( 
InternalConstants.GLOBALAPP_MEMBER_NAME ) )
+            {
+                //
+                // Legacy behavior: initialize a field called 'globalApp' with 
the Global.app instance.
+                //
+                field.setAccessible( true );
+                if ( sharedFlowFields == null ) sharedFlowFields = new 
ArrayList< SharedFlowFieldInfo >();
+                SharedFlowFieldInfo info = new SharedFlowFieldInfo();
+                info.field = field;
+                info.sharedFlowName = null;
+                sharedFlowFields.add( info );
+            }
+        }
+        
+        if ( sharedFlowFields != null )
+        {
+            _sharedFlowMemberFields = sharedFlowFields.toArray( new 
SharedFlowFieldInfo[ sharedFlowFields.size() ] );
+        }
+    }
+    
+    public SharedFlowFieldInfo[] getSharedFlowMemberFields()
+    {
+        return _sharedFlowMemberFields;
+    }
+}

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultExceptionsHandler.java&r2=111484
==============================================================================
--- 
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
 Fri Dec 10 00:33:03 2004
@@ -35,6 +35,7 @@
 import java.lang.reflect.UndeclaredThrowableException;
 import java.lang.reflect.Method;
 import java.util.Locale;
+import java.util.Collection;
 import java.io.StringWriter;
 import java.io.PrintWriter;
 import java.io.IOException;
@@ -43,6 +44,8 @@
 import org.apache.beehive.netui.pageflow.FlowController;
 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.SharedFlowController;
 import org.apache.beehive.netui.pageflow.handler.ExceptionsHandler;
 import org.apache.beehive.netui.util.Bundle;
 import org.apache.beehive.netui.util.cache.ClassLevelCache;
@@ -91,13 +94,13 @@
         //
         if ( exceptionConfig == null )
         {
-            exceptionConfig =
-                    getAlternateExceptionConfig( exClass, flowController, 
request, servletContext );
+            FlowController fallbackFC =
+                    getFallbackFlowController( flowController, exClass, 
request, response, servletContext );
             
-            if ( exceptionConfig != null )
+            if ( fallbackFC != null )
             {
-                flowController = getAlternateFlowController( flowController, 
request, response, servletContext );
-                if ( flowController == null ) exceptionConfig = null;   // 
must have both for this to work.
+                flowController = fallbackFC;
+                exceptionConfig = getExceptionConfig( exClass, 
fallbackFC.getModuleConfig() );
             }
             
             actionMapping = null;   // This action mapping isn't relevant if 
we found the exception elsewhere.
@@ -192,36 +195,35 @@
         return config;
     }
     
-    protected ExceptionConfig getAlternateExceptionConfig( Class exClass, 
FlowController originalFlowController,
-                                                           HttpServletRequest 
request, ServletContext servletContext )
+    protected FlowController getFallbackFlowController( FlowController 
originalFlowController, Class exClass,
+                                                        HttpServletRequest 
request, HttpServletResponse response,
+                                                        ServletContext 
servletContext )
     {
-        ModuleConfig exceptionHandlerModuleConfig =
-                InternalUtils.getSharedFlowConfig( 
originalFlowController.getModuleConfig(), request, servletContext );
-        return getExceptionConfig( exClass, exceptionHandlerModuleConfig );
-    }
-    
-    protected FlowController getAlternateFlowController( FlowController 
originalFlowController, 
-                                                         HttpServletRequest 
request, HttpServletResponse response,
-                                                         ServletContext 
servletContext )
-    {
-        FlowController exceptionController = 
-                InternalUtils.getSharedFlow( originalFlowController, request, 
response, servletContext );
-                    
-        //
-        // If there's no Global.app class, then it means there's an orphan 
module configuration file
-        // for Global.app (jpf-struts-config--global.xml).  Effectively 
there's no Global.app.
-        //
-        if ( exceptionController != null )
+        if ( originalFlowController instanceof PageFlowController )
         {
-            InternalUtils.setCurrentModule( 
exceptionController.getModuleConfig(), request );
-
-            if ( _log.isDebugEnabled() )
+            Collection< SharedFlowController > sharedFlows =
+                    ( ( PageFlowController ) originalFlowController 
).getSharedFlows().values();
+            
+            for ( SharedFlowController sf : sharedFlows )
             {
-                _log.debug( "Found exception-config in SharedFlowController " 
+ exceptionController.getDisplayName() );
-            }                    
+                ModuleConfig mc = sf.getModuleConfig();
+                ExceptionConfig ec = getExceptionConfig( exClass, mc );
+                
+                if ( ec != null )
+                {
+                    if ( _log.isDebugEnabled() )
+                    {
+                        _log.debug( "Found exception-config for " + 
exClass.getName() + " in SharedFlowController "
+                                    + sf.getDisplayName() );
+                    }                    
+                    
+                    InternalUtils.setCurrentModule( mc, request );
+                    return sf;
+                }
+            }
         }
         
-        return exceptionController;
+        return null;
     }
     
     protected ActionForward invokeExceptionHandlerClass( Throwable throwable, 
ExceptionConfig exceptionConfig,

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java&r2=111484
==============================================================================
--- 
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
    Fri Dec 10 00:33:03 2004
@@ -225,52 +225,12 @@
         }
     }    
 
-    /**
-     * Get or create the current PageFlowConroller for the given request.  
Deduces the
-     * ServletContext from the request.
-     * 
-     * @exclude
-     * 
-     * @param request the current HttpServletRequest.
-     * @param response the current HttpServletResponse
-     * @return the current PageFlowController in the user session, or if there 
is none, create one
-     * appropriate to the given request if possible.  Failing that, return 
<code>null</code>.
-     */ 
-    public static final PageFlowController ensureCurrentPageFlow( 
HttpServletRequest request,
-                                                                  
HttpServletResponse response )
-    {
-        assert request != null;
-        assert response != null;
-        
-        //
-        // This method is provided for 
org.apache.beehive.netui.script.xscript.context.PageFlowContextResolver.
-        //
-        ServletContext servletContext = getServletContext( request );
-        
-        if ( servletContext == null && _log.isWarnEnabled() )
-        {
-            _log.warn( "could not get ServletContext from request " + request 
);
-        }
-        
-        return FlowControllerFactory.getPageFlowForRequest( request, response, 
servletContext );
-    }
-    
     public static String getFlowControllerClassName( String modulePath, 
ServletRequest request, ServletContext context )
     {
         //
         // We're going to look in the struts config to get the 
PageFlowController class.
         //
-        ModuleConfig mc = null;
-        
-        try
-        {
-            mc = ensureModuleConfig( modulePath, request, context );
-        }        
-        catch ( Exception e )
-        {
-            _log.error( "Error while registering Struts module " + modulePath, 
e );
-        }
-        
+        ModuleConfig mc = ensureModuleConfig( modulePath, request, context );
         return mc != null ? getFlowControllerClassName( mc ) : null;
     }
     
@@ -504,27 +464,6 @@
     }
     
     /**
-     * Get the Struts ModuleConfig associated with the SharedFlowController 
for the given FlowController module.
-     */ 
-    public static ModuleConfig getSharedFlowConfig( ModuleConfig 
flowControllerConfig, HttpServletRequest request,
-                                                    ServletContext 
servletContext )
-    {
-        ControllerConfig cc = flowControllerConfig.getControllerConfig();
-        
-        //
-        // 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;
-    }
-    
-    /**
      * Get the Struts ModuleConfig for the given module path.
      */ 
     public static ModuleConfig getModuleConfig( String modulePath, 
ServletContext context )
@@ -536,25 +475,34 @@
      * Get the Struts ModuleConfig for the given module path.  If there is 
none registered,
      * and if it is possible to register one automatically, do so.
      */ 
-    public static ModuleConfig ensureModuleConfig( String modulePath, 
ServletRequest request,
-                                                   ServletContext context )
-        throws IOException, ServletException
+    public static ModuleConfig ensureModuleConfig( String modulePath, 
ServletRequest request, ServletContext context )
     {
-        ModuleConfig ret = getModuleConfig( modulePath, context );
-        
-        if ( ret != null )
-        {
-            return ret;
-        }
-        else
+        try
         {
-            ActionServlet as = getActionServlet( context );
+            ModuleConfig ret = getModuleConfig( modulePath, context );
             
-            if ( as instanceof AutoRegisterActionServlet )
+            if ( ret != null )
+            {
+                return ret;
+            }
+            else
             {
-                return ( ( AutoRegisterActionServlet ) as 
).ensureModuleRegistered( modulePath, request ); 
+                ActionServlet as = getActionServlet( context );
+                
+                if ( as instanceof AutoRegisterActionServlet )
+                {
+                    return ( ( AutoRegisterActionServlet ) as 
).ensureModuleRegistered( modulePath, request ); 
+                }
             }
         }
+        catch ( IOException e )
+        {
+            _log.error( "Error while registering Struts module " + modulePath, 
e );
+        }
+        catch ( ServletException e )
+        {
+            _log.error( "Error while registering Struts module " + modulePath, 
e );
+        }
         
         return null;
     }
@@ -920,17 +868,6 @@
         }
     }
     
-    public static SharedFlowController getSharedFlow( FlowController pfc, 
HttpServletRequest request, 
-                                                      HttpServletResponse 
response, ServletContext servletContext )
-    {
-        ModuleConfig sfConfig = getSharedFlowConfig( pfc.getModuleConfig(), 
request, servletContext );
-        if ( sfConfig == null ) return null;
-        String sfClassName = getFlowControllerClassName( sfConfig );
-        if ( sfClassName == null ) return null;
-        SharedFlowController sf = PageFlowUtils.getSharedFlow( sfClassName, 
request );
-        return sf != null ? sf : FlowControllerFactory.getSharedFlow( 
sfClassName, request, response, servletContext );
-    }
-    
     public static boolean isSharedFlowModule( ModuleConfig mc )
     {
         ControllerConfig cc = mc.getControllerConfig();
@@ -1018,7 +955,7 @@
         return qualifiedAction;
     }
 
-    public static String qualifiedAction( ServletContext servletContext, 
String action )
+    public static String qualifyAction( ServletContext servletContext, String 
action )
     {
         assert action != null;
         StringBuilder sb = new StringBuilder( 32 );
@@ -1033,7 +970,7 @@
             {
                 queryString = action.substring( question );
             }
-            String actionMapping = URLRewriterService.getActionMappingName( 
action );
+            String actionMapping = getActionMappingName( action );
             if ( servletMapping.startsWith( "*." ) )
             {
                 sb.append( actionMapping );
@@ -1067,6 +1004,51 @@
 
         return sb.toString();
     }
+    
+    /**
+     * Return the form action converted into an action mapping path.  The
+     * value of the <code>action</code> property is manipulated as follows in
+     * computing the name of the requested mapping:
+     * <ul>
+     * <li>Any filename extension is removed (on the theory that extension
+     * mapping is being used to select the controller servlet).</li>
+     * <li>If the resulting value does not start with a slash, then a
+     * slash is prepended.</li>
+     * </ul>
+     * 
+     * @param action the action name to be converted.
+     * @return an action path, suitable for lookup in the Struts configuration 
file.
+     */
+    public static String getActionMappingName( String action )
+    {
+        return getCleanActionName( action, true );
+    }
+    
+    public static String getCleanActionName( String action, boolean 
prependSlash )
+    {
+        int question = action.indexOf( '?' );
+        if ( question >= 0 )
+        {
+            action = action.substring( 0, question );
+        }
+        
+        if ( action.endsWith( ACTION_EXTENSION ) )
+        {
+            action = action.substring( 0, action.length() - 
ACTION_EXTENSION_LEN );
+        }
+        
+        if ( action.charAt( 0 ) == '/' )
+        {
+            if ( ! prependSlash ) action = action.substring( 1 );
+        }
+        else
+        {
+            if ( prependSlash ) action = '/' + action;
+        }
+        
+        return action;
+    }
+
 
     /**
      * Add a parameter to the given URL. Assumes there is no trailing

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/URLRewriterService.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/URLRewriterService.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/URLRewriterService.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/URLRewriterService.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/URLRewriterService.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/util/URLRewriterService.java
   Fri Dec 10 00:33:03 2004
@@ -20,6 +20,7 @@
 import org.apache.beehive.netui.core.urls.MutableURI;
 import org.apache.beehive.netui.pageflow.PageFlowUtils;
 import org.apache.beehive.netui.pageflow.SecurityProtocol;
+import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.util.logging.Logger;
 
 import javax.servlet.ServletContext;
@@ -203,7 +204,7 @@
      */
     public static String getActionMappingName(String action)
     {
-        return 
org.apache.beehive.netui.core.urls.URLRewriterService.getActionMappingName( 
action );
+        return InternalUtils.getActionMappingName( action );
     }
 
     /**

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/common/ImplicitObjectUtil.java
   Fri Dec 10 00:33:03 2004
@@ -53,6 +53,7 @@
 
     private static final String PAGE_FLOW_IMPLICIT_OBJECT_KEY = "pageFlow";
     private static final String SHARED_FLOW_IMPLICIT_OBJECT_KEY = "sharedFlow";
+    private static final String GLOBAL_APP_IMPLICIT_OBJECT_KEY = "globalApp";
     private static final String BUNDLE_IMPLICIT_OBJECT_KEY = "bundle";
     private static final String BACKING_IMPLICIT_OBJECT_KEY = "backing";
     private static final String PAGE_INPUT_IMPLICIT_OBJECT_KEY = "pageInput";
@@ -83,10 +84,16 @@
         request.setAttribute(PAGE_INPUT_IMPLICIT_OBJECT_KEY, map != null ? map 
: Collections.EMPTY_MAP);
     }
 
-    public static final void loadSharedFlow(ServletRequest request, 
SharedFlowController sharedFlow)
+    public static final void loadSharedFlow(ServletRequest request, 
Map<String, SharedFlowController> sharedFlows)
     {
-        if (sharedFlow != null)
-            request.setAttribute(SHARED_FLOW_IMPLICIT_OBJECT_KEY, sharedFlow);
+        if (sharedFlows != null)
+            request.setAttribute(SHARED_FLOW_IMPLICIT_OBJECT_KEY, sharedFlows);
+    }
+    
+    public static final void loadGlobalApp(ServletRequest request, GlobalApp 
globalApp)
+    {
+        if (globalApp != null)
+            request.setAttribute(GLOBAL_APP_IMPLICIT_OBJECT_KEY, globalApp);
     }
 
     public static final void loadBundleMap(ServletRequest servletRequest, 
BundleMap bundleMap)
@@ -104,31 +111,28 @@
         else return form;
     }
 
-    public static final SharedFlowController getSharedFlow(ServletRequest 
request, ServletResponse response)
+    public static final Map<String, SharedFlowController> 
getSharedFlow(ServletRequest request)
     {
        assert request instanceof HttpServletRequest;
-        assert response instanceof HttpServletResponse;
 
-        SharedFlowController sharedFlow = 
InternalUtils.ensureSharedFlow((HttpServletRequest)request, 
(HttpServletResponse)response);
-        if(sharedFlow == null)
+        Map<String, SharedFlowController> sharedFlows = (Map<String, 
SharedFlowController>) request.getAttribute(SHARED_FLOW_IMPLICIT_OBJECT_KEY);
+        if(sharedFlows == null)
         {
             // @todo: i18n
-            RuntimeException re = new RuntimeException("Can not create the 
sharedFlow binding context; the SharedFlow object is null.");
+            RuntimeException re = new RuntimeException("Can not create the 
sharedFlow binding context; the SharedFlow map is null.");
             if(_logger.isErrorEnabled())
                 _logger.error("", re);
 
             throw re;
         }
-        else return sharedFlow;
+        else return sharedFlows;
     }
 
     public static final PageFlowController getPageFlow(ServletRequest request, 
ServletResponse response)
     {
         assert request instanceof HttpServletRequest;
-        assert response instanceof HttpServletResponse;
 
-        PageFlowController jpf = 
InternalUtils.ensureCurrentPageFlow((HttpServletRequest)request, 
-                                                                     
(HttpServletResponse)response);
+        PageFlowController jpf = 
PageFlowUtils.getCurrentPageFlow((HttpServletRequest)request);
         if(jpf != null)
             return jpf;
         else 
@@ -303,9 +307,6 @@
                     FacesBackingBeanFactory.getFacesBackingBeanForRequest( 
request, response, servletContext );
             loadPageFlow( request, curJpf, fbb );
         }
-        
-        SharedFlowController sf = 
FlowControllerFactory.getSharedFlowForRequest( request, response, 
servletContext );
-        loadSharedFlow( request, sf );
         
         // @todo: need to move bundleMap creation to a BundleMapFactory
         BundleMap bundleMap = new BundleMap( request, servletContext, null );

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java&r1=111483&p2=incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/script/el/NetUIUpdateVariableResolver.java
      Fri Dec 10 00:33:03 2004
@@ -31,6 +31,8 @@
 import org.apache.beehive.netui.pageflow.PageFlowController;
 import org.apache.beehive.netui.pageflow.GlobalApp;
 
+import java.util.Map;
+
 /**
  *
  */
@@ -101,9 +103,9 @@
         else return new String[] {"actionForm", "pageFlow", "globalApp", 
"request", "session", "application"};
     }
 
-    private static final SharedFlowController getSharedFlow(ServletRequest 
request, ServletResponse response)
+    private static final Map<String, SharedFlowController> 
getSharedFlow(ServletRequest request, ServletResponse response)
     {
-           return ImplicitObjectUtil.getSharedFlow(request, response);
+           return ImplicitObjectUtil.getSharedFlow(request);
     }
 
     private static final PageFlowController getPageFlow(ServletRequest 
request, ServletResponse response)

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/databinding/datagrid/model/PagerModel.java
      Fri Dec 10 00:33:03 2004
@@ -106,7 +106,7 @@
         String pageUri = null;
         if (_pageAction != null) {
             PageContext pageContext = 
JspUtil.getPageContext(_model.getJspContext());
-            String qualifiedAction = 
InternalUtils.qualifiedAction(pageContext.getServletContext(), _pageAction);
+            String qualifiedAction = 
InternalUtils.qualifyAction(pageContext.getServletContext(), _pageAction);
             pageUri = InternalUtils.createActionURL((HttpServletRequest) 
pageContext.getRequest(), qualifiedAction);
         } else if (_pageHref != null) {
             pageUri = _pageHref;

Modified: 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java
       (original)
+++ 
incubator/beehive/trunk/netui/src/tags-databinding/org/apache/beehive/netui/tags/databinding/invoke/CallPageFlow.java
       Fri Dec 10 00:33:03 2004
@@ -126,8 +126,7 @@
     /**
      * Get the PageFlow for the using JSP's directory.  This is an 
implementation of the 
      * [EMAIL PROTECTED] CallMethod#resolveObject()} method that finds the 
current PageFlow 
-     * using the [EMAIL PROTECTED] 
InternalUtils#ensureCurrentPageFlow(HttpServletRequest, HttpServletResponse)}
-     * method.
+     * using the [EMAIL PROTECTED] InternalUtils#getCurrentPageFlow} method.
      *
      * @throws ObjectNotFoundException when an exception occurs ensuring that 
a Page Flow is created.
      * @return the current PageFlow.  If there is no current PageFlow, the 
[EMAIL PROTECTED] ObjectNotFoundException} will 
@@ -138,8 +137,7 @@
     {
         try
         {
-            PageFlowController jpf = 
InternalUtils.ensureCurrentPageFlow((HttpServletRequest)pageContext.getRequest(),
-                                                                         
(HttpServletResponse)pageContext.getResponse());
+            PageFlowController jpf = 
InternalUtils.getCurrentPageFlow((HttpServletRequest)pageContext.getRequest(), 
false);
             
             if(_logger.isDebugEnabled()) 
                 _logger.debug("Found a pageflow of type: " + (jpf != null ? 
jpf.getClass().getName() : "null"));

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/AnchorBase.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/AnchorBase.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/AnchorBase.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/AnchorBase.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/AnchorBase.java
      (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/AnchorBase.java
      Fri Dec 10 00:33:03 2004
@@ -328,7 +328,7 @@
         }
 
         // report that action is not an action
-        if ((_action != null) && (!PageFlowTagUtils.isAction(request, 
response, ctxt, _action))) {
+        if ((_action != null) && (!PageFlowTagUtils.isAction(request, 
_action))) {
             String s = null;
             if (_action.equals("")) {
                 s = Bundle.getString("Tags_NullBadAction", null);

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Button.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Button.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Button.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Button.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Button.java
  (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Button.java
  Fri Dec 10 00:33:03 2004
@@ -231,7 +231,7 @@
 
         ByRef ref = new ByRef();
         if (_action != null) {
-            boolean isAction = PageFlowTagUtils.isAction(request, response, 
pageContext.getServletContext(), _action);
+            boolean isAction = PageFlowTagUtils.isAction(request, _action);
             if (isAction) {
                 String overrideAction = ACTION_OVERRIDE + _action;
                 overrideAction = HtmlUtils.addParams(overrideAction, _params, 
response.getCharacterEncoding());

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/html/Form.java&r2=111484
==============================================================================
--- 
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
    Fri Dec 10 00:33:03 2004
@@ -22,6 +22,7 @@
 import org.apache.beehive.netui.pageflow.*;
 import org.apache.beehive.netui.pageflow.internal.ContextCache;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.InternalConstants;
 import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 import org.apache.beehive.netui.tags.internal.PageFlowTagUtils;
 import org.apache.beehive.netui.tags.rendering.*;
@@ -878,55 +879,21 @@
         _flowController = PageFlowUtils.getCurrentPageFlow(request);
 
         // check to see if this is a bad action
-        boolean isAction = PageFlowTagUtils.isAction(request, response, 
servletContext, _state.action);
-        if (!isAction) {
+        
+        PageFlowTagUtils.MappingAndController mac = 
PageFlowTagUtils.getActionMapping(request, _flowController, _state.action);
+        if (mac == null) {
+            FlowController globalApp = 
PageFlowUtils.getSharedFlow(InternalConstants.GLOBALAPP_CLASSNAME, request);
+            mac = PageFlowTagUtils.getActionMapping( request, globalApp, 
_state.action );
+        }
+        if (mac == null) {
             registerTagError(Bundle.getString("Tags_BadAction", 
_state.action), null);
             return;
         }
-
-        //
-        // If the current module is a SharedFlowController module, then we'll 
first try the module
-        // associated with the current pageflow.  Later we'll retry this one 
if necessary.
-        if (InternalUtils.isSharedFlowModule(_appConfig)) {
-            if (_flowController != null) {
-                _appConfig = _flowController.getModuleConfig();
-            }
-        }
-
-        // Look up the action mapping we will be submitting to
-        String mappingName = 
URLRewriterService.getActionMappingName(_state.action);
-        _mapping = (ActionMapping) _appConfig.findActionConfig(mappingName);
-
-        // If we didn't find it in the current module's config, look in 
Global.app
-        if (_mapping == null) {
-            //ModuleConfig sharedFlowConfig = 
InternalUtils.getSharedFlowConfig(_appConfig, request, servletContext);
-            SharedFlowController sfc = PageFlowUtils.getSharedFlow(request, 
servletContext);
-
-            if (sfc != null) {
-                ModuleConfig sharedFlowConfig = sfc.getModuleConfig();
-                ActionMapping globalMapping =
-                        (ActionMapping) 
sharedFlowConfig.findActionConfig(mappingName);
-
-                if (globalMapping != null) {
-                    _appConfig = sharedFlowConfig;
-                    _flowController = sfc;
-                    _mapping = globalMapping;
-                }
-            }
-        }
-
-        if (_mapping == null) {
-            // @TODO portal - will most likely require requestURI and lookupKey
-            String jpfDescrip = "";
-            PageFlowController curJpf =
-                    FlowControllerFactory.getPageFlowForRequest(request, 
response, pageContext.getServletContext());
-
-            if (curJpf != null)
-                jpfDescrip = " in " + curJpf.getClass().getName();
-            JspException e = new JspException("form: ActionMapping \"" + 
mappingName + "\" not found" + jpfDescrip);
-            pageContext.setAttribute(Globals.EXCEPTION_KEY, e, 
PageContext.REQUEST_SCOPE);
-            throw e;
-        }
+        
+        _flowController = mac.controller;
+        _mapping = mac.mapping;
+        _appConfig = _mapping.getModuleConfig();
+        assert _mapping != null;
 
         // Were the required values already specified?
         if (_state.name != null) {
@@ -940,21 +907,17 @@
             return;
         }
 
-        if (_mapping != null) {
-
-            // Look up the form bean definition
-            FormBeanConfig formBeanConfig =
-                    _appConfig.findFormBeanConfig(_mapping.getName());
-            if (formBeanConfig == null) {
-                //Ignore - this is okay if binding happens in the pageFlow.
-            }
-            else {
-                // Calculate the required values
-                _beanName = _mapping.getAttribute();
-                _beanScope = _mapping.getScope();
-                _beanType = formBeanConfig.getType();
-            }
+        // Look up the form bean definition
+        FormBeanConfig formBeanConfig =
+                _appConfig.findFormBeanConfig(_mapping.getName());
+        if (formBeanConfig == null) {
+            //Ignore - this is okay if binding happens in the pageFlow.
+        }
+        else {
+            // Calculate the required values
+            _beanName = _mapping.getAttribute();
+            _beanScope = _mapping.getScope();
+            _beanType = formBeanConfig.getType();
         }
-
     }
 }

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/PageFlowTagUtils.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/PageFlowTagUtils.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/PageFlowTagUtils.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/PageFlowTagUtils.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/PageFlowTagUtils.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/internal/PageFlowTagUtils.java
    Fri Dec 10 00:33:03 2004
@@ -25,7 +25,11 @@
 import org.apache.beehive.netui.pageflow.PageFlowConstants;
 import org.apache.beehive.netui.pageflow.PageFlowUtils;
 import org.apache.beehive.netui.pageflow.SecurityProtocol;
+import org.apache.beehive.netui.pageflow.SharedFlowController;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
+import org.apache.beehive.netui.pageflow.internal.InternalConstants;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.config.ActionConfig;
 
 import java.net.URISyntaxException;
 import java.util.Map;
@@ -61,7 +65,7 @@
         ServletContext servletContext = pageContext.getServletContext();
         ServletRequest request = pageContext.getRequest();
         HttpServletResponse response = ( HttpServletResponse ) 
pageContext.getResponse();
-        String qualifiedAction = InternalUtils.qualifiedAction( 
servletContext, action );
+        String qualifiedAction = InternalUtils.qualifyAction( servletContext, 
action );
         String actionUrl = InternalUtils.createActionURL( ( HttpServletRequest 
) request, qualifiedAction );
         MutableURI uri = new MutableURI( actionUrl );
 
@@ -150,44 +154,81 @@
      * Determine whether a given URI is an Action.
      *
      * @param request          the current HttpServletRequest.
-     * @param response         the current HttpServletResponse.
-     * @param servletContext   the current ServletContext.
      * @param action           the URI to check.
      * @return <code>true</code> if the action is defined in the current page 
flow
      *         or in a shared flow. Otherwise, return <code>false</code>.
      */
-    public static boolean isAction( HttpServletRequest request, 
HttpServletResponse response,
-                                    ServletContext servletContext, String 
action )
+    public static boolean isAction( HttpServletRequest request, String action )
     {
-        boolean isAnAction = true;
         FlowController flowController = InternalUtils.getCurrentPageFlow( 
request, false );
+        
         if ( flowController != null )
         {
-            String checkAction = action;
-            if ( checkAction.startsWith( "/" ) )
+            if ( action.endsWith( PageFlowConstants.ACTION_EXTENSION ) )
             {
-                checkAction = checkAction.substring( 1 );
+                action = action.substring( 0, action.length() - 
PageFlowConstants.ACTION_EXTENSION.length() );
             }
-            if ( checkAction.endsWith( PageFlowConstants.ACTION_EXTENSION ) )
+            
+            if ( getActionMapping( request, flowController, action ) != null ) 
return true;
+            FlowController globalApp = PageFlowUtils.getSharedFlow( 
InternalConstants.GLOBALAPP_CLASSNAME, request );
+            return getActionMapping( request, globalApp, action ) != null;
+        }
+        
+        return true;
+    }
+
+    public static class MappingAndController
+    {
+        public ActionMapping mapping;
+        public FlowController controller;
+    }
+    
+    public static MappingAndController getActionMapping( HttpServletRequest 
request, FlowController flowController, String action )
+    {
+        ActionConfig mapping = null;
+        FlowController fc = null;
+        
+        if ( flowController != null )
+        {
+            //
+            // If there's a '.' delimiter, it's a shared flow action.
+            //
+            int dot = action.indexOf( '.' );
+            
+            if ( dot == -1 )
             {
-                checkAction = checkAction.substring( 0, checkAction.length() - 
PageFlowConstants.ACTION_EXTENSION.length() );
+                if ( action.charAt( 0 ) != '/' ) action = '/' + action;
+                mapping = flowController.getModuleConfig().findActionConfig( 
action );
+                fc = flowController;
             }
-            isAnAction = flowController.isAction( checkAction );
-
-            if ( !isAnAction )
+            else if ( dot < action.length() - 1 )
             {
-                FlowController globalController =
-                        FlowControllerFactory.getSharedFlowForRequest( 
request, response, servletContext );
-                if ( globalController != null )
+                String sharedFlowName = action.substring( 0, dot );
+                if ( sharedFlowName.charAt( 0 ) == '/' ) sharedFlowName = 
sharedFlowName.substring( 1 );
+                FlowController sharedFlow = PageFlowUtils.getSharedFlows( 
request ).get( sharedFlowName );
+                
+                if ( sharedFlow != null )
                 {
-                    isAnAction = globalController.isAction( checkAction );
+                    String actionPath = '/' + action.substring( dot + 1 );
+                    mapping = sharedFlow.getModuleConfig().findActionConfig( 
actionPath );
+                    fc = sharedFlow;
                 }
             }
         }
-
-        return isAnAction;
+        
+        assert mapping == null || mapping instanceof ActionMapping : 
mapping.getClass().getName();
+        
+        if ( mapping != null )
+        {
+            MappingAndController mac = new MappingAndController();
+            mac.mapping = ( ActionMapping ) mapping;
+            mac.controller = fc;
+            return mac;
+        }
+        
+        return null;
     }
-
+    
     /**
      * Tell whether a given URI should be written to be secure.
      *

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
    (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/Tree.java
    Fri Dec 10 00:33:03 2004
@@ -1011,7 +1011,7 @@
         if (action == null) {
             action = _iState.getSelectionAction();
         }
-        boolean isAction = PageFlowTagUtils.isAction(request, response, 
pageContext.getServletContext(), action);
+        boolean isAction = PageFlowTagUtils.isAction(request, action);
         if (!isAction) {
             registerTagError(Bundle.getString("Tags_BadAction", action), null);
             return false;

Modified: 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java&r1=111483&p2=incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java
        (original)
+++ 
incubator/beehive/trunk/netui/src/tags-html/org/apache/beehive/netui/tags/tree/TreeItem.java
        Fri Dec 10 00:33:03 2004
@@ -302,7 +302,7 @@
         if (_action != null) {
             HttpServletRequest request = (HttpServletRequest) 
pageContext.getRequest();
             HttpServletResponse response = (HttpServletResponse) 
pageContext.getResponse();
-            boolean isAction = PageFlowTagUtils.isAction(request, response, 
pageContext.getServletContext(), _action);
+            boolean isAction = PageFlowTagUtils.isAction(request, _action);
             if (!isAction) {
                 registerTagError(Bundle.getString("Tags_BadAction", _action), 
null);
             }

Modified: 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urls/URLRewriterService.java
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urls/URLRewriterService.java?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urls/URLRewriterService.java&r1=111483&p2=incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urls/URLRewriterService.java&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urls/URLRewriterService.java
   (original)
+++ 
incubator/beehive/trunk/netui/src/util/org/apache/beehive/netui/core/urls/URLRewriterService.java
   Fri Dec 10 00:33:03 2004
@@ -244,45 +244,6 @@
     }
 
     /**
-     * Return the form action converted into an action mapping path.  The
-     * value of the <code>action</code> property is manipulated as follows in
-     * computing the name of the requested mapping:
-     * <ul>
-     * <li>Any filename extension is removed (on the theory that extension
-     * mapping is being used to select the controller servlet).</li>
-     * <li>If the resulting value does not start with a slash, then a
-     * slash is prepended.</li>
-     * </ul>
-     *
-     * @param action the action name to be converted.
-     * @return an action path, suitable for lookup in the Struts configuration 
file.
-     */
-    public static String getActionMappingName( String action )
-    {
-        String value = action;
-        int question = action.indexOf( "?" );
-        if ( question >= 0 )
-        {
-            value = value.substring( 0, question );
-        }
-        int slash = value.lastIndexOf( "/" );
-        int period = value.lastIndexOf( "." );
-        if ( ( period >= 0 ) && ( period > slash ) )
-        {
-            value = value.substring( 0, period );
-        }
-
-        if ( value.startsWith( "/" ) )
-        {
-            return ( value );
-        }
-        else
-        {
-            return ( "/" + value );
-        }
-    }
-
-    /**
      * Tell whether rewritten form actions should be allowed to have query 
parameters.  If this returns
      * <code>false</code>, then a form-tag implementation should render query 
parameters into hidden
      * fields on the form instead of allowing them to remain in the URL.

Deleted: /incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs?view=auto&rev=111483
==============================================================================

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/Global.app
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/Global.app?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/WEB-INF/src/global/Global.app
        Fri Dec 10 00:33:03 2004
@@ -0,0 +1,530 @@
+package global; 
+
+import org.apache.beehive.netui.pageflow.*;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.util.Arrays;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionForward;
+import shared.FormA;
+import shared.QaTrace;
+import pageFlowCore.returnToTest.returnToTestController.InputForm;
+
[EMAIL PROTECTED](
+    catches={
+        @Jpf.Catch(type=NoPreviousPageException.class, 
path="/timeout/error.jsp"),
+        @Jpf.Catch(type=SessionExpiredException.class, 
path="/timeout/error.jsp")
+    },
+    strutsMerge="/WEB-INF/src/global/merge-jpf-struts-config.xml"
+)
+public class Global extends GlobalApp
+{
+    private String _globalAppInfo = "";
+    private String _results;
+
+    public String getGlobalAppInfo() {
+        return _globalAppInfo;
+    }
+
+    public String getResults() {
+        return _results;
+    }
+    public void setResults(String results) {
+        _results = results;
+    }
+    
+    @Jpf.Action(
+        forwards={
+            @Jpf.Forward(
+                name="success",
+                navigateTo=Jpf.NavigateTo.currentPage
+            )
+        }
+    )
+    public Forward pageFlowCore_sharedFlow_globalAction()
+    {
+        return new Forward( "success", "message", "hit Global.app" );
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "nesting", path = 
"/globalJpfs/nestReturn/Controller.jpf") })
+    public Forward globalAction_action()
+    {
+        return new Forward("nesting");
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "nesting", path = 
"/globalJpfs/nestReturn/Controller.jpf") })
+    public Forward globalAction_form(GlobalForm form)
+    {
+        return new Forward("nesting");
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "return", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    public Forward globalAction_getInfo(GlobalForm form)
+    {
+        StringBuffer sb = new StringBuffer();
+        sb.append("<table border='1' cellspacing='0'cellpaddinig='2'>");
+
+        sb = new StringBuffer();
+        sb.append("<table border='1' cellspacing='0'cellpaddinig='2'>");
+
+        HttpServletRequest req = getRequest();
+        sb.append("<tr><td>Request</td><td>");
+        sb.append(req.getRequestURI());
+        sb.append("</td></tr>");
+
+
+        HttpServletResponse resp = getResponse();
+        sb.append("<tr><td>Response</td><td>Committed:");
+        sb.append("" + resp.isCommitted());
+        sb.append("</td></tr>");
+
+
+        HttpSession session = getSession();
+        session.setMaxInactiveInterval( 3600 );
+        sb.append("<tr><td>Session</td><td>In active interval:");
+        sb.append("" + session.getMaxInactiveInterval());
+        sb.append("</td></tr>");
+
+        // nestable
+        sb.append("<tr><td>Nestable</td><td>");
+        sb.append("" + isNestable());
+        sb.append("</td></tr>");
+
+        // nestable
+        sb.append("<tr><td>PageFlow</td><td>");
+        sb.append("" + isPageFlow());
+        sb.append("</td></tr>");
+
+        // get action
+        sb.append("<tr><td>Actions</td><td>");
+        String[] actions = getActions();
+        Arrays.sort(actions);
+        for (int i=0;i<actions.length;i++) {
+            sb.append(actions[i]);
+            sb.append("<br />");
+        }
+        sb.append("</td></tr>");
+
+
+        // get mapping
+        ActionMapping map = getMapping();
+        sb.append("<tr><td>ActionMapping</td><td>");
+        sb.append("" + map);
+        sb.append("</td></tr>");
+
+        // URI
+        sb.append("<tr><td>URI</td><td>");
+        sb.append("" + getURI());
+        sb.append("</td></tr>");
+
+        // parent dir
+        sb.append("<tr><td>parentDir</td><td>");
+        sb.append("" + getModulePath());
+        sb.append("</td></tr>");
+
+
+        sb.append("</table>");
+        _globalAppInfo = sb.toString();
+
+        return new Forward("return");
+    }
+
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "results", path = 
"/results/Controller.jpf") })
+    public Forward globalAction_results()
+    {
+        return new Forward("results");
+    }
+
+    public static class GlobalForm extends FormData
+    {
+        String _search;
+        public void setSearch(String search) {
+            _search = search;
+        }
+        public String getSearch() {
+            return _search;
+        }
+
+       }
+
+    public String getAppState() {
+       return "running";
+    }
+
+    public String getAppInfo() {
+       return "App DRT";
+    }
+
+    /** 
+     * This property is referenced by the databinding/globalApp/nojpf/ BVT.
+     */
+    public String getSayHello()
+    {
+        return "Hello World! -- the Global.app";
+    }
+
+    public String[] getStrings()
+    {
+        return new String[] {"One", "Fish", "Two", "Fish"}; 
+    }
+
+    //
+    // The following actions are for 
/pageFlowCore/returnToTest/returnToTestController.jpf.
+    //
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToCurrentPageOverrideInputs()
+    {
+        Forward fwd = new Forward( "success", "input1", "overridden #1" );
+        fwd.addPageInput( "input2", "overridden #2" );
+        return fwd;
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToCurrentPageOverrideForm()
+    {
+        InputForm overrideForm = new InputForm();
+        overrideForm.setFoo( "override foo" );
+        overrideForm.setBar( "override bar" );
+        return new Forward("success", overrideForm);
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToCurrentPage()
+    {
+        return new Forward("success");
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToCurrentPageWithForm( InputForm form )
+    {
+        return new Forward("success");
+    }
+
+
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToPageOverrideInputs()
+    {
+        Forward fwd = new Forward( "success", "input1", "overridden #1" );
+        fwd.addPageInput( "input2", "overridden #2" );
+        return fwd;
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToPageOverrideForm()
+    {
+        InputForm overrideForm = new InputForm();
+        overrideForm.setFoo( "override foo" );
+        overrideForm.setBar( "override bar" );
+        return new Forward("success", overrideForm);
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToPage()
+    {
+        return new Forward("success");
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
+    protected Forward globalReturnToPageWithForm( InputForm form )
+    {
+        return new Forward("success");
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousPage) })
+    protected Forward globalReturnToPreviousPage()
+    {
+        return new Forward("success");
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousPage) })
+    protected Forward globalReturnToPreviousPageOverrideInputs()
+    {
+        Forward fwd = new Forward( "success", "input1", "overridden #1" );
+        fwd.addPageInput( "input2", "overridden #2" );
+        return fwd;
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousPage) })
+    protected Forward globalReturnToPreviousPageOverrideForm()
+    {
+        InputForm overrideForm = new InputForm();
+        overrideForm.setFoo( "override foo" );
+        overrideForm.setBar( "override bar" );
+        return new Forward("success", overrideForm);
+    }
+   
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousAction) })
+    protected Forward globalReturnToPreviousAction()
+    {
+        return new Forward("success");
+    }
+
+    @Jpf.Action(forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousAction) })
+    protected Forward globalReturnToAction()
+    {
+        return new Forward("success");
+    }
+
+        @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "goBack",
+                navigateTo = Jpf.NavigateTo.previousPage) 
+        })
+   public Forward test35GlobalAction()
+      {
+          //_log.tracePoint("Global.test35GlobalAction():" + _cnt + " - 
Test35");
+      return new Forward("goBack");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "gotoPg2",
+                path = "/returnTo/test36/Jsp2.jsp") 
+        })
+   public Forward test36GlobalAction()
+      {
+          //_log.tracePoint("Global.test36GlobalAction():" + _cnt + " - 
Test36");
+      return new Forward("gotoPg2");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "goBack",
+                navigateTo = Jpf.NavigateTo.currentPage) 
+        })
+   public Forward test39GlobalAction()
+      {
+          //_log.tracePoint("Global.test39GlobalAction():" + _cnt + " - 
Test39");
+      return new Forward("goBack");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "gotoPg2",
+                path = "/returnTo/test40/Jsp2.jsp") 
+        })
+   public Forward test40GlobalAction()
+      {
+      //_log.tracePoint("Global.test40GlobalAction():" + _cnt + " - Test40");
+      return new Forward("gotoPg2");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "goBack",
+                navigateTo = Jpf.NavigateTo.currentPage) 
+        })
+   public Forward test40GlobalAction_B()
+      {
+      //_log.tracePoint("Global.test40GlobalAction_B():" + _cnt + " - Test40");
+      return new Forward("goBack");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "goBack",
+                navigateTo = Jpf.NavigateTo.previousAction) 
+        })
+   public Forward test45GlobalAction()
+      {
+      //_log.tracePoint("Global.test45GlobalAction():" + _cnt + " - Test45");
+      return new Forward("goBack");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "gotoAct2",
+                path = "/returnTo/test46/action2.do") 
+        })
+   public Forward test46GlobalAction()
+      {
+      //_log.tracePoint("Global.test46GlobalAction():" + _cnt + " - Test46");
+      if (_toggle == true)
+         {
+         _toggle = false;
+         return new Forward("gotoAct2");
+         }
+      _toggle = true;
+      return new Forward("gotoError");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "goBack",
+                navigateTo = Jpf.NavigateTo.previousAction) 
+        })
+   public Forward test48GlobalAction(FormA inForm)
+//   public Forward test48GlobalAction()
+      {
+      //_log.tracePoint("Global.test48GlobalAction(FormA):"
+      //                  + _cnt
+      //                  + " - Test48 - FormA instance:"
+      //                   + _log.getClassCnter(inForm));
+      return new Forward("goBack");
+      }
+
+          private String _pageGroupState = "";
+
+    // from QA Global.app
+    private  boolean  _toggle  = true;
+    private QaTrace _log = null;
+    private int     _cnt = 0;
+
+    public String getPageFlowState() {
+       return _pageGroupState;
+    }
+    public void setPageFlowState(String pgs) {
+       _pageGroupState = pgs;
+    }
+
+    // from QA Web
+    /**
+     * onCreate
+     */
+    public void onCreate() throws Exception
+        {
+        HttpSession session = getSession();
+        _log = QaTrace.getTrace(getSession(), true);
+        //_cnt = _log.newClass(this);
+        //_log.tracePoint("Global.onCreate():" + session.hashCode());
+    }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "struts1Do",
+                path = "/interOp/tests/test2/gotoStrutsJSP.do") 
+        })
+   public Forward toLegacy()
+      {
+          // _log.tracePoint("Global.toLegacy():" + _cnt + " - Test2");
+      return new Forward("struts1Do");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "struts2Do",
+                path = "/interOp/tests/test5/gotoStruts2JSP.do") 
+        })
+   public Forward globalAction()
+      {
+          //_log.tracePoint("Global.globalAction():" + _cnt + " - Test5");
+      return new Forward("struts2Do");
+      }
+
+    @Jpf.Action(
+        )
+   public Forward unKnown()
+      {
+      ActionMapping mapping = getMapping();
+      //_log.tracePoint("Global.unKnown():"
+      //                  + _cnt
+      //                  + " - Parameter:"
+      //                  + mapping.getParameter());
+      return new Forward("gotoError");
+      }
+
+   /**
+    * StrutsMergeTest2 will raise this "unHandledAction" action.  The forward
+    * "jpf:gotoAction1" below will be overridden by the "struts-merge"
+    * annotation above and send control back to a valid action in the
+    * StrutsMergeTest2 pageflow.
+    */
+    @Jpf.Action(
+        )
+   public Forward unHandledAction()
+      {
+      ActionMapping mapping = getMapping();
+      //_log.tracePoint("Global.unHandledAction():"
+      //                  + _cnt
+      //                  + " - Parameter:"
+      //                  + mapping.getParameter());
+      return new Forward("gotoAction1");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "gotoResults",
+                path = "/miscJpf/bug30448/jpfReturn1.do") 
+        })
+   public Forward jpfReturn1(FormA inForm)
+      {
+      //_log.tracePoint("Global.jpfReturn1(FormA):" + _cnt + " - bug30448");
+      return new Forward("gotoResults");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "success",
+                path = "/scopedJpf/jpfTest5/jpf1/Jpf1.jpf") 
+        })
+   public Forward jpf1Begin()
+      {
+      //_log.tracePoint("Global.jpf1Begin():" + _cnt + " - JpfTest5");
+      return new Forward("success");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "success",
+                path = "/scopedJpf/jpfTest5/jpf2/Jpf2.jpf") 
+        })
+   public Forward jpf2Begin()
+      {
+      //_log.tracePoint("Global.jpf2Begin():" + _cnt + " - JpfTest5");
+      return new Forward("success");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "success",
+                path = "/scopedJpf/jpfTest5/jpf1/goNested.do") 
+        })
+   public Forward jpf1GoNested(FormA form)
+      {
+      //_log.tracePoint("Global.jpf1GoNested(FormA):" + _cnt + " - JpfTest5");
+      return new Forward("success");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "success",
+                path = "/scopedJpf/jpfTest5/jpf2/goNested.do") 
+        })
+   public Forward jpf2GoNested(FormA form)
+      {
+      //_log.tracePoint("Global.jpf2GoNested(FormA):" + _cnt + " - JpfTest5");
+      return new Forward("success");
+      }
+
+    @Jpf.Action(
+        forwards = {
+            @Jpf.Forward(
+                name = "success",
+                path = "/singletonJpf/jpfTest10/jpf1/Jpf1.jpf") 
+        })
+   public Forward gblJpfTest10()
+      {
+      //_log.tracePoint("Global.jpfTest10():" + _cnt + " - JpfTest10");
+      return new Forward("success");
+      }
+
+} 

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/Controller.jpf?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/Controller.jpf
 Fri Dec 10 00:33:03 2004
@@ -0,0 +1,16 @@
+package databinding.cellrepeatererror;
+
+import org.apache.beehive.netui.pageflow.PageFlowController;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
[EMAIL PROTECTED](
+    sharedFlowRefs={
+        @Jpf.SharedFlowRef(name="root", type=webappRoot.SharedFlow.class)
+    },
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
+public class Controller extends PageFlowController
+{
+}

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/index.jsp?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/index.jsp&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/index.jsp&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/index.jsp
      (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/cellrepeatererror/index.jsp
      Fri Dec 10 00:33:03 2004
@@ -71,7 +71,7 @@
 <%}catch(Exception e){out.write(HtmlExceptionFormatter.format("Expected 
failure, columns < 0", e, false));}%>
 <hr/>
 <% try{ %>
-<netui-data:cellRepeater dataSource="sharedFlow.noCellRepeaterProperty" 
rows="-42" columns="5">
+<netui-data:cellRepeater dataSource="sharedFlow.root.noCellRepeaterProperty" 
rows="-42" columns="5">
     Item: <netui-html:span value="${container.item}"/>
 </netui-data:cellRepeater>
 <%}catch(Exception e){out.write(HtmlExceptionFormatter.format("Expected 
failure, rows < 0", e, false));}%>

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/globalApp/nojpf/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/globalApp/nojpf/index.jsp?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/globalApp/nojpf/index.jsp&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/globalApp/nojpf/index.jsp&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/globalApp/nojpf/index.jsp
        (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/databinding/globalApp/nojpf/index.jsp
        Fri Dec 10 00:33:03 2004
@@ -13,11 +13,11 @@
 <br/>
 <br/>
 <b>JSP 2.0 EL</b>
-The Global.app says: <netui:span value="${sharedFlow.sayHello}"/>
+The Global.app says: <netui:span value="${globalApp.sayHello}"/>
 <br/>
 <br/>
 <b>NetUIEL</b><br/>
-<netui-data:repeater dataSource="sharedFlow.strings">
+<netui-data:repeater dataSource="globalApp.strings">
     ${container.item}<br/>
 </netui-data:repeater>
 <br/>

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Begin.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Begin.jsp?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Begin.jsp&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Begin.jsp&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Begin.jsp
 (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Begin.jsp
 Fri Dec 10 00:33:03 2004
@@ -11,7 +11,7 @@
 binding is done the page flow.  The page flow exposes a a property that passes 
through the property
 on the global app.  This is a single page test.
 </p>
-App State: <netui:span value="${sharedFlow.appState}"/><br>
+App State: <netui:span value="${globalApp.appState}"/><br>
 App State through page flow: <netui:span value="${pageFlow.appInfo}"/>
 </netui:body>
 </netui:html>

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Controller.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Controller.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Controller.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Controller.jpf
    (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appState/Controller.jpf
    Fri Dec 10 00:33:03 2004
@@ -23,11 +23,10 @@
 @Jpf.Controller
 public class Controller extends PageFlowController
 {
-    @Jpf.SharedFlowField
-    protected transient webappRoot.SharedFlow _sharedFlow;
+    protected transient global.Global globalApp;
 
     public String getAppInfo() {
-           return _sharedFlow.getAppInfo();
+           return globalApp.getAppInfo();
     }
 
     @Jpf.Action(

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/Controller.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/Controller.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/Controller.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/Controller.jpf
        (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/Controller.jpf
        Fri Dec 10 00:33:03 2004
@@ -23,97 +23,12 @@
 
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
[EMAIL PROTECTED](
-)
-
[EMAIL PROTECTED](
-    value = { 
-        "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->", 
-        "<view-properties>", 
-        "<pageflow-object 
id='pageflow:/miniTests/appStatePass/Controller.jpf'/>", 
-        "<pageflow-object id='action:nest.do'>", 
-        "  <property value='100' name='x'/>", 
-        "  <property value='120' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:returnToPage.do'>", 
-        "  <property value='400' name='x'/>", 
-        "  <property value='80' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:returnToAction.do'>", 
-        "  <property value='400' name='x'/>", 
-        "  <property value='240' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:begin.do'>", 
-        "  <property value='400' name='x'/>", 
-        "  <property value='320' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='external-jpf:nested/Controller.jpf'>", 
-        "  <property value='240' name='x'/>", 
-        "  <property value='120' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='forward:path#nest#nested/[EMAIL 
PROTECTED]:nest.do@'>", 
-        "  <property value='136,170,170,204' name='elbowsX'/>", 
-        "  <property value='112,112,112,112' name='elbowsY'/>", 
-        "  <property value='East_1' name='fromPort'/>", 
-        "  <property value='West_1' name='toPort'/>", 
-        "  <property value='nest' name='label'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='page:Begin.jsp'>", 
-        "  <property value='600' name='x'/>", 
-        "  <property value='160' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:returnToPage.do@'>", 
-        "  <property value='436,500,500,564' name='elbowsX'/>", 
-        "  <property value='72,72,152,152' name='elbowsY'/>", 
-        "  <property value='East_1' name='fromPort'/>", 
-        "  <property value='West_1' name='toPort'/>", 
-        "  <property value='begin' name='label'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:returnToAction.do@'>", 
-        "  <property value='436,500,500,564' name='elbowsX'/>", 
-        "  <property value='232,232,163,163' name='elbowsY'/>", 
-        "  <property value='East_1' name='fromPort'/>", 
-        "  <property value='West_2' name='toPort'/>", 
-        "  <property value='begin' name='label'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'>", 
-        "  <property value='436,500,500,564' name='elbowsX'/>", 
-        "  <property value='312,312,163,163' name='elbowsY'/>", 
-        "  <property value='East_1' name='fromPort'/>", 
-        "  <property value='West_2' name='toPort'/>", 
-        "  <property value='begin' name='label'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action-call:@external-jpf:nested/[EMAIL 
PROTECTED]@action:returnToAction.do@'>", 
-        "  <property value='276,320,320,364' name='elbowsX'/>", 
-        "  <property value='123,123,232,232' name='elbowsY'/>", 
-        "  <property value='East_2' name='fromPort'/>", 
-        "  <property value='West_1' name='toPort'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action-call:@external-jpf:nested/[EMAIL 
PROTECTED]@action:returnToPage.do@'>", 
-        "  <property value='276,320,320,364' name='elbowsX'/>", 
-        "  <property value='123,123,72,72' name='elbowsY'/>", 
-        "  <property value='East_2' name='fromPort'/>", 
-        "  <property value='West_1' name='toPort'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:/nest.do'>", 
-        "  <property value='740' name='x'/>", 
-        "  <property value='180' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:/nest.do@'>", 
-        "  <property value='636,670,670,704' name='elbowsX'/>", 
-        "  <property value='163,163,172,172' name='elbowsY'/>", 
-        "  <property value='East_2' name='fromPort'/>", 
-        "  <property value='West_1' name='toPort'/>", 
-        "</pageflow-object>", 
-        "</view-properties>"
-    }
-)
[EMAIL PROTECTED]
 public class Controller extends PageFlowController
 {
-    @Jpf.SharedFlowField
-    protected transient webappRoot.SharedFlow _sharedFlow;
+    protected transient global.Global globalApp;
     public String getState() {
-           return _sharedFlow.getPageFlowState();
+           return globalApp.getPageFlowState();
     }
 
     @Jpf.Action(
@@ -124,7 +39,7 @@
         })
     public Forward nest()
     {
-        _sharedFlow.setPageFlowState(_sharedFlow.getPageFlowState() + "<br 
/>nest");
+        globalApp.setPageFlowState(globalApp.getPageFlowState() + "<br 
/>nest");
         return new Forward("nest");
     }
 
@@ -138,7 +53,7 @@
     {
         HttpSession session = getSession();
         session.setAttribute("pageFlow",this);
-        _sharedFlow.setPageFlowState(_sharedFlow.getPageFlowState() + "<br 
/>returnToPage");
+        globalApp.setPageFlowState(globalApp.getPageFlowState() + "<br 
/>returnToPage");
         return new Forward("begin");
     }
 
@@ -152,7 +67,7 @@
     {
         HttpSession session = getSession();
         session.setAttribute("pageFlow",this);
-        _sharedFlow.setPageFlowState(_sharedFlow.getPageFlowState() + "<br 
/>returnToAction");
+        globalApp.setPageFlowState(globalApp.getPageFlowState() + "<br 
/>returnToAction");
         return new Forward("begin");
     }
 
@@ -164,7 +79,7 @@
         })
     public Forward begin()
     {
-        _sharedFlow.setPageFlowState(_sharedFlow.getPageFlowState() + "<br 
/>begin");
+        globalApp.setPageFlowState(globalApp.getPageFlowState() + "<br 
/>begin");
         return new Forward("begin");
     }
 }

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/nested/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/nested/Controller.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/nested/Controller.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/nested/Controller.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/nested/Controller.jpf
 (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/appStatePass/nested/Controller.jpf
 Fri Dec 10 00:33:03 2004
@@ -24,87 +24,14 @@
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
 @Jpf.Controller(
-    nested = true)
[EMAIL PROTECTED](
-    value = { 
-        "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->", 
-        "<view-properties>", 
-        "<pageflow-object 
id='pageflow:/miniTests/appStatePass/nested/Controller.jpf'/>", 
-        "<pageflow-object id='action:nestOne.do'>", 
-        "  <property value='560' name='x'/>", 
-        "  <property value='220' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:nestTwo.do'>", 
-        "  <property value='560' name='x'/>", 
-        "  <property value='60' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:begin.do'>", 
-        "  <property value='560' name='x'/>", 
-        "  <property value='140' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='exit:returnToPage'>", 
-        "  <property value='400' name='x'/>", 
-        "  <property value='180' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:nestOne.do@'>", 
-        "  <property value='524,480,480,436' name='elbowsX'/>", 
-        "  <property value='212,212,172,172' name='elbowsY'/>", 
-        "  <property value='West_1' name='fromPort'/>", 
-        "  <property value='East_1' name='toPort'/>", 
-        "  <property value='return' name='label'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='exit:returnToAction'>", 
-        "  <property value='400' name='x'/>", 
-        "  <property value='80' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:nestTwo.do@'>", 
-        "  <property value='524,480,480,436' name='elbowsX'/>", 
-        "  <property value='52,52,72,72' name='elbowsY'/>", 
-        "  <property value='West_1' name='fromPort'/>", 
-        "  <property value='East_1' name='toPort'/>", 
-        "  <property value='return' name='label'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='page:Begin.jsp'>", 
-        "  <property value='260' name='x'/>", 
-        "  <property value='120' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'>", 
-        "  <property value='524,410,410,296' name='elbowsX'/>", 
-        "  <property value='132,132,123,123' name='elbowsY'/>", 
-        "  <property value='West_1' name='fromPort'/>", 
-        "  <property value='East_2' name='toPort'/>", 
-        "  <property value='begin' name='label'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:/nestOne.do'>", 
-        "  <property value='140' name='x'/>", 
-        "  <property value='120' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:/nestTwo.do'>", 
-        "  <property value='260' name='x'/>", 
-        "  <property value='260' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:nestOne.do@'>", 
-        "  <property value='296,410,410,524' name='elbowsX'/>", 
-        "  <property value='112,112,201,201' name='elbowsY'/>", 
-        "  <property value='East_1' name='fromPort'/>", 
-        "  <property value='West_0' name='toPort'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:nestTwo.do@'>", 
-        "  <property value='296,410,410,524' name='elbowsX'/>", 
-        "  <property value='101,101,63,63' name='elbowsY'/>", 
-        "  <property value='East_0' name='fromPort'/>", 
-        "  <property value='West_2' name='toPort'/>", 
-        "</pageflow-object>", 
-        "</view-properties>"
-    }
+    nested=true
 )
 public class Controller extends PageFlowController
 {
-    @Jpf.SharedFlowField
-    protected transient webappRoot.SharedFlow _sharedFlow;
+    protected transient global.Global globalApp;
     
     public String getState() {
-        return _sharedFlow.getPageFlowState();
+        return globalApp.getPageFlowState();
     }
 
     @Jpf.Action(
@@ -117,7 +44,7 @@
     {
         HttpSession session = getSession();
         session.setAttribute("pageFlow",this);
-        _sharedFlow.setPageFlowState(_sharedFlow.getPageFlowState() + "<br 
/>[nested]nestOne");
+        globalApp.setPageFlowState(globalApp.getPageFlowState() + "<br 
/>[nested]nestOne");
         return new Forward("return");
     }
 
@@ -131,7 +58,7 @@
     {
         HttpSession session = getSession();
         session.setAttribute("pageFlow",this);
-        _sharedFlow.setPageFlowState(_sharedFlow.getPageFlowState() + "<br 
/>[nested]nestTwo");
+        globalApp.setPageFlowState(globalApp.getPageFlowState() + "<br 
/>[nested]nestTwo");
         return new Forward("return");
     }
 
@@ -145,7 +72,7 @@
     {
         HttpSession session = getSession();
         session.setAttribute("pageFlow",this);
-        _sharedFlow.setPageFlowState(_sharedFlow.getPageFlowState() + "<br 
/>[nested]begin");
+        globalApp.setPageFlowState(globalApp.getPageFlowState() + "<br 
/>[nested]begin");
         return new Forward("begin");
     }
 }

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/lifecycle/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/lifecycle/Controller.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/lifecycle/Controller.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/lifecycle/Controller.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/lifecycle/Controller.jpf
   (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/lifecycle/Controller.jpf
   Fri Dec 10 00:33:03 2004
@@ -31,36 +31,6 @@
             name = "begin",
             path = "Begin.jsp") 
     })
[EMAIL PROTECTED](
-    value = { 
-        "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->", 
-        "<view-properties>", 
-        "<pageflow-object 
id='pageflow:/miniTests/lifecycle/Controller.jpf'/>", 
-        "<pageflow-object id='action:begin.do'/>", 
-        "<pageflow-object id='action:postback.do'/>", 
-        "<pageflow-object id='page:Begin.jsp'/>", 
-        "<pageflow-object id='forward:path#begin#Begin.jsp'/>", 
-        "<pageflow-object id='action:/postback.do'/>", 
-        "<pageflow-object id='action:/globalAction_results.do'/>", 
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:postback.do@'>", 
-        "  <property value='100,100,100,100' name='elbowsX'/>", 
-        "  <property value='164,270,270,376' name='elbowsY'/>", 
-        "  <property value='South_1' name='fromPort'/>", 
-        "  <property value='North_1' name='toPort'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action:globalAction_results.do'>", 
-        "  <property value='220' name='x'/>", 
-        "  <property value='120' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalAction_results.do@'>", 
-        "  <property value='136,160,160,185' name='elbowsX'/>", 
-        "  <property value='112,112,112,112' name='elbowsY'/>", 
-        "  <property value='East_1' name='fromPort'/>", 
-        "  <property value='West_1' name='toPort'/>", 
-        "</pageflow-object>", 
-        "</view-properties>"
-    }
-)
 public class Controller extends PageFlowController
 {
     protected void onCreate() {
@@ -75,11 +45,10 @@
         
         System.err.println("inside onDestroy [lifecycle]");
         _lifecycle += "onDestroy<br />";
-        _sharedFlow.setResults(_lifecycle);
+        globalApp.setResults(_lifecycle);
     }
 
-    @Jpf.SharedFlowField
-    protected transient webappRoot.SharedFlow _sharedFlow;
+    protected transient global.Global globalApp;
 
     String _lifecycle = "";
     public String getLifecycle() {

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/AnyBeanReturnController.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/AnyBeanReturnController.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/AnyBeanReturnController.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/AnyBeanReturnController.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/AnyBeanReturnController.jpf
       (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/AnyBeanReturnController.jpf
       Fri Dec 10 00:33:03 2004
@@ -4,6 +4,9 @@
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
 @Jpf.Controller(
+    sharedFlowRefs={
+        @Jpf.SharedFlowRef(name="sf", type=SharedFlow.class)
+    },
     simpleActions={
         @Jpf.SimpleAction(name="begin", path="index.jsp"),
         @Jpf.SimpleAction(name="goNested", path="nested/NestedController.jpf")

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested/NestedController.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested/NestedController.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested/NestedController.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested/NestedController.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested/NestedController.jpf
       (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/anyBeanReturn/nested/NestedController.jpf
       Fri Dec 10 00:33:03 2004
@@ -16,7 +16,7 @@
 {
     @Jpf.Action(
         forwards={
-           @Jpf.Forward(name="done", returnAction="sharedFlowAction", 
outputFormBeanType=String.class)
+           @Jpf.Forward(name="done", returnAction="sf.sharedFlowAction", 
outputFormBeanType=String.class)
         }
     )
     protected Forward done()

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp/Controller.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp/Controller.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp/Controller.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp/Controller.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp/Controller.jpf
      (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/pfGlobalApp/Controller.jpf
      Fri Dec 10 00:33:03 2004
@@ -30,36 +30,14 @@
 import org.apache.struts.action.ActionMapping;
 import org.apache.struts.action.ActionForward;
 
[EMAIL PROTECTED](
-    value = { 
-        "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->", 
-        "<view-properties>", 
-        "<pageflow-object 
id='pageflow:/pageFlowCore/pfGlobalApp/Controller.jpf'/>", 
-        "<pageflow-object id='action:begin.do'/>", 
-        "<pageflow-object id='page:Begin.jsp'/>", 
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'/>", 
-        "<pageflow-object 
id='action:globalAction_getInfo.do#global.Global.GlobalForm'>", 
-        "  <property value='360' name='x'/>", 
-        "  <property value='80' name='y'/>", 
-        "</pageflow-object>", 
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalAction_getInfo.do#global.Global.GlobalForm@'>", 
-        "  <property value='276,300,300,325' name='elbowsX'/>", 
-        "  <property value='72,72,72,72' name='elbowsY'/>", 
-        "  <property value='East_1' name='fromPort'/>", 
-        "  <property value='West_1' name='toPort'/>", 
-        "</pageflow-object>", 
-        "</view-properties>"
-    }
-)
[EMAIL PROTECTED]
[EMAIL PROTECTED]()
 public class Controller extends PageFlowController
 {
-    @Jpf.SharedFlowField
-    protected transient webappRoot.SharedFlow _sharedFlow;
+    protected transient global.Global globalApp;
 
     public String getGlobalAppInfo()
     {
-        return _sharedFlow.getGlobalAppInfo();
+        return globalApp.getGlobalAppInfo();
     }
 
     @Jpf.Action(

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/returnToTest/returnToTestController.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/returnToTest/returnToTestController.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/returnToTest/returnToTestController.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/returnToTest/returnToTestController.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/returnToTest/returnToTestController.jpf
 (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/returnToTest/returnToTestController.jpf
 Fri Dec 10 00:33:03 2004
@@ -32,810 +32,10 @@
 import org.apache.struts.action.ActionErrors;
 import org.apache.struts.action.ActionMapping;
 
-/**
- * @jpf:controller 
- * @jpf:message-resources resources="returnToTest.Messages"
- * 
- * @jpf:view-properties view-properties::
- * <!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->
- * <view-properties>
- * <pageflow-object id="pageflow:/returnToTest/returnToTestController.jpf"/>
- * <pageflow-object id="action:begin.do">
- *   <property value="540" name="x"/>
- *   <property value="40" name="y"/>
- * </pageflow-object>
- * <pageflow-object 
id="action:input.do#returnToTest.returnToTestController.InputForm">
- *   <property value="540" name="x"/>
- *   <property value="620" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToPage.do">
- *   <property value="720" name="x"/>
- *   <property value="840" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToCurrentPage.do">
- *   <property value="720" name="x"/>
- *   <property value="320" name="y"/>
- * </pageflow-object>
- * <pageflow-object 
id="action:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm">
- *   <property value="720" name="x"/>
- *   <property value="480" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToPreviousPage.do">
- *   <property value="340" name="x"/>
- *   <property value="840" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToCurrentPageOverrideInputs.do">
- *   <property value="720" name="x"/>
- *   <property value="400" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToCurrentPageOverrideForm.do">
- *   <property value="720" name="x"/>
- *   <property value="560" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToPreviousPageOverrideInputs.do">
- *   <property value="340" name="x"/>
- *   <property value="740" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToPreviousPageOverrideForm.do">
- *   <property value="340" name="x"/>
- *   <property value="940" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToPageOverrideInputs.do">
- *   <property value="720" name="x"/>
- *   <property value="740" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:returnToPageOverrideForm.do">
- *   <property value="720" name="x"/>
- *   <property value="940" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:goNested.do">
- *   <property value="40" name="x"/>
- *   <property value="1020" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToCurrentPageOverrideForm.do">
- *   <property value="280" name="x"/>
- *   <property value="260" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToPage.do">
- *   <property value="280" name="x"/>
- *   <property value="380" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToPageOverrideInputs.do">
- *   <property value="280" name="x"/>
- *   <property value="500" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToCurrentPage.do">
- *   <property value="280" name="x"/>
- *   <property value="200" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToPageOverrideForm.do">
- *   <property value="280" name="x"/>
- *   <property value="440" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToCurrentPageWithForm.do">
- *   <property value="280" name="x"/>
- *   <property value="120" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToPageWithForm.do">
- *   <property value="280" name="x"/>
- *   <property value="560" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToCurrentPageOverrideInputs.do">
- *   <property value="280" name="x"/>
- *   <property value="60" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="576,630,630,684" name="elbowsX"/>
- *   <property value="472,472,472,472" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPageOverrideForm.do@">
- *   <property value="576,630,630,684" name="elbowsX"/>
- *   <property value="472,472,552,552" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPageOverrideForm.do@">
- *   <property value="504,409,409,315" name="elbowsX"/>
- *   <property value="472,472,252,252" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPage.do@">
- *   <property value="504,409,409,315" name="elbowsX"/>
- *   <property value="472,472,372,372" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPageOverrideInputs.do@">
- *   <property value="576,630,630,684" name="elbowsX"/>
- *   <property value="472,472,392,392" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:goNested.do@">
- *   <property value="504,290,290,76" name="elbowsX"/>
- *   <property value="483,483,1012,1012" name="elbowsY"/>
- *   <property value="West_2" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:input.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="540,540,540,540" name="elbowsX"/>
- *   <property value="524,550,550,576" name="elbowsY"/>
- *   <property value="South_1" name="fromPort"/>
- *   <property value="North_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPageOverrideInputs.do@">
- *   <property value="504,409,409,315" name="elbowsX"/>
- *   <property value="472,472,492,492" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPage.do@">
- *   <property value="504,409,409,315" name="elbowsX"/>
- *   <property value="472,472,192,192" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPageOverrideForm.do@">
- *   <property value="504,409,409,315" name="elbowsX"/>
- *   <property value="472,472,432,432" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPageWithForm.do@">
- *   <property value="504,410,410,316" name="elbowsX"/>
- *   <property value="472,472,112,112" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPageWithForm.do@">
- *   <property value="504,410,410,316" name="elbowsX"/>
- *   <property value="472,472,552,552" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPage.do@">
- *   <property value="576,630,630,684" name="elbowsX"/>
- *   <property value="472,472,312,312" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPageOverrideInputs.do@">
- *   <property value="504,409,409,315" name="elbowsX"/>
- *   <property value="472,472,52,52" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="page:inputPage.jsp">
- *   <property value="540" name="x"/>
- *   <property value="480" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToPreviousPageOverrideInputs.do">
- *   <property value="320" name="x"/>
- *   <property value="1300" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToPreviousPage.do">
- *   <property value="540" name="x"/>
- *   <property value="1300" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action:globalReturnToPreviousPageOverrideForm.do">
- *   <property value="760" name="x"/>
- *   <property value="1300" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToPreviousPageOverrideInputs.do@">
- *   <property value="504,440,440,376" name="elbowsX"/>
- *   <property value="1032,1032,732,732" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPreviousPageOverrideInputs.do@">
- *   <property value="504,430,430,356" name="elbowsX"/>
- *   <property value="1032,1032,1292,1292" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPreviousPage.do@">
- *   <property value="540,540,540,540" name="elbowsX"/>
- *   <property value="1084,1170,1170,1256" name="elbowsY"/>
- *   <property value="South_1" name="fromPort"/>
- *   <property value="North_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToPageOverrideForm.do@">
- *   <property value="576,630,630,684" name="elbowsX"/>
- *   <property value="1032,1032,932,932" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToPageOverrideInputs.do@">
- *   <property value="576,630,630,684" name="elbowsX"/>
- *   <property value="1032,1032,732,732" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:goNested.do@">
- *   <property value="504,290,290,76" name="elbowsX"/>
- *   <property value="1021,1021,1012,1012" name="elbowsY"/>
- *   <property value="West_0" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToPage.do@">
- *   <property value="576,630,630,684" name="elbowsX"/>
- *   <property value="1032,1032,832,832" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToPreviousPageOverrideForm.do@">
- *   <property value="504,440,440,376" name="elbowsX"/>
- *   <property value="1032,1032,932,932" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPreviousPageOverrideForm.do@">
- *   <property value="576,650,650,724" name="elbowsX"/>
- *   <property value="1032,1032,1292,1292" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@page:[EMAIL 
PROTECTED]@action:returnToPreviousPage.do@">
- *   <property value="504,440,440,376" name="elbowsX"/>
- *   <property value="1032,1032,832,832" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="page:nextPage.jsp">
- *   <property value="540" name="x"/>
- *   <property value="1040" name="y"/>
- * </pageflow-object>
- * <pageflow-object 
id="action:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm">
- *   <property value="40" name="x"/>
- *   <property value="120" name="y"/>
- * </pageflow-object>
- * <pageflow-object 
id="action:returnToPreviousPageWithForm.do#returnToTest.returnToTestController.InputForm">
- *   <property value="60" name="x"/>
- *   <property value="40" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="76,380,380,684" name="elbowsX"/>
- *   <property value="841,841,483,483" name="elbowsY"/>
- *   <property value="East_0" name="fromPort"/>
- *   <property value="West_2" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="29,29,40,40" name="elbowsX"/>
- *   <property value="816,490,490,164" name="elbowsY"/>
- *   <property value="North_0" name="fromPort"/>
- *   <property value="South_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPage.do@">
- *   <property value="76,380,380,684" name="elbowsX"/>
- *   <property value="852,852,832,832" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToCurrentPage.do@">
- *   <property value="76,380,380,684" name="elbowsX"/>
- *   <property value="863,863,323,323" name="elbowsY"/>
- *   <property value="East_2" name="fromPort"/>
- *   <property value="West_2" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPreviousPageWithForm.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="40,40,60,60" name="elbowsX"/>
- *   <property value="816,450,450,84" name="elbowsY"/>
- *   <property value="North_1" name="fromPort"/>
- *   <property value="South_1" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object id="action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPreviousPage.do@">
- *   <property value="76,190,190,304" name="elbowsX"/>
- *   <property value="863,863,821,821" name="elbowsY"/>
- *   <property value="East_2" name="fromPort"/>
- *   <property value="West_0" name="toPort"/>
- * </pageflow-object>
- * <pageflow-object 
id="external-jpf:/returnToTest/nested/nestedController.jpf">
- *   <property value="40" name="x"/>
- *   <property value="860" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL PROTECTED]:begin.do@">
- *   <property value="540,540,540,540" name="elbowsX"/>
- *   <property value="84,260,260,436" name="elbowsY"/>
- *   <property value="South_1" name="fromPort"/>
- *   <property value="North_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:input.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="540,540,540,540" name="elbowsX"/>
- *   <property value="664,830,830,996" name="elbowsY"/>
- *   <property value="South_1" name="fromPort"/>
- *   <property value="North_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:input.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="416,460,460,504" name="elbowsX"/>
- *   <property value="392,392,392,392" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- *   <property value="validationFail" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPage.do@@">
- *   <property value="860" name="x"/>
- *   <property value="840" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL PROTECTED]:returnToPage.do@">
- *   <property value="756,790,790,824" name="elbowsX"/>
- *   <property value="832,832,832,832" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL PROTECTED]:returnToCurrentPage.do@">
- *   <property value="184,140,140,96" name="elbowsX"/>
- *   <property value="252,252,252,252" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm@"/>
- * <pageflow-object id="forward:[EMAIL PROTECTED]:returnToPreviousPage.do@">
- *   <property value="184,140,140,96" name="elbowsX"/>
- *   <property value="512,512,512,512" name="elbowsY"/>
- *   <property value="West_1" name="fromPort"/>
- *   <property value="East_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToCurrentPageOverrideInputs.do@"/>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToCurrentPageOverrideForm.do@"/>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToPreviousPageOverrideInputs.do@"/>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToPreviousPageOverrideForm.do@"/>
- * <pageflow-object id="return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPageOverrideInputs.do@@">
- *   <property value="860" name="x"/>
- *   <property value="740" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToPageOverrideInputs.do@">
- *   <property value="756,790,790,824" name="elbowsX"/>
- *   <property value="732,732,732,732" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPageOverrideForm.do@@">
- *   <property value="860" name="x"/>
- *   <property value="940" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToPageOverrideForm.do@">
- *   <property value="756,790,790,824" name="elbowsX"/>
- *   <property value="932,932,932,932" name="elbowsY"/>
- *   <property value="East_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="forward:path#success#/returnToTest/nested/[EMAIL 
PROTECTED]:goNested.do@">
- *   <property value="40,40,40,40" name="elbowsX"/>
- *   <property value="976,940,940,904" name="elbowsY"/>
- *   <property value="North_1" name="fromPort"/>
- *   <property value="South_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object 
id="formbeanprop:returnToTest.returnToTestController.InputForm#foo#java.lang.String"/>
- * <pageflow-object 
id="formbeanprop:returnToTest.returnToTestController.InputForm#bar#java.lang.String"/>
- * <pageflow-object 
id="formbean:returnToTest.returnToTestController.InputForm"/>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm@">
- *   <property value="40,-26,-26,74" name="elbowsX"/>
- *   <property value="76,76,82,82" name="elbowsY"/>
- *   <property value="North_1" name="fromPort"/>
- *   <property value="West_1" name="toPort"/>
- *   <property value="success" name="label"/>
- * </pageflow-object>
- * <pageflow-object id="return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm@@">
- *   <property value="110" name="x"/>
- *   <property value="90" name="y"/>
- * </pageflow-object>
- * <pageflow-object id="forward:[EMAIL 
PROTECTED]:returnToPreviousPageWithForm.do#returnToTest.returnToTestController.InputForm@"/>
- * </view-properties>
- * ::
- */
 @Jpf.Controller(
     messageResources = {
         @Jpf.MessageResource(
             name = "returnToTest.Messages") 
-    })
[EMAIL PROTECTED](
-    value = {
-        "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->",
-        "<view-properties>",
-        "<pageflow-object 
id='pageflow:/returnToTest/returnToTestController.jpf'/>",
-        "<pageflow-object id='action:begin.do'>",
-        "  <property value='540' name='x'/>",
-        "  <property value='40' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:input.do#returnToTest.returnToTestController.InputForm'>",
-        "  <property value='540' name='x'/>",
-        "  <property value='620' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToPage.do'>",
-        "  <property value='720' name='x'/>",
-        "  <property value='840' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToCurrentPage.do'>",
-        "  <property value='720' name='x'/>",
-        "  <property value='320' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm'>",
-        "  <property value='720' name='x'/>",
-        "  <property value='480' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToPreviousPage.do'>",
-        "  <property value='340' name='x'/>",
-        "  <property value='840' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToCurrentPageOverrideInputs.do'>",
-        "  <property value='720' name='x'/>",
-        "  <property value='400' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToCurrentPageOverrideForm.do'>",
-        "  <property value='720' name='x'/>",
-        "  <property value='560' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToPreviousPageOverrideInputs.do'>",
-        "  <property value='340' name='x'/>",
-        "  <property value='740' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToPreviousPageOverrideForm.do'>",
-        "  <property value='340' name='x'/>",
-        "  <property value='940' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToPageOverrideInputs.do'>",
-        "  <property value='720' name='x'/>",
-        "  <property value='740' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:returnToPageOverrideForm.do'>",
-        "  <property value='720' name='x'/>",
-        "  <property value='940' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:goNested.do'>",
-        "  <property value='40' name='x'/>",
-        "  <property value='1020' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:globalReturnToCurrentPageOverrideForm.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='260' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:globalReturnToPage.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='380' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:globalReturnToPageOverrideInputs.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='500' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:globalReturnToCurrentPage.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='200' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:globalReturnToPageOverrideForm.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='440' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:globalReturnToCurrentPageWithForm.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='120' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:globalReturnToPageWithForm.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='560' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:globalReturnToCurrentPageOverrideInputs.do'>",
-        "  <property value='280' name='x'/>",
-        "  <property value='60' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='576,630,630,684' name='elbowsX'/>",
-        "  <property value='472,472,472,472' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPageOverrideForm.do@'>",
-        "  <property value='576,630,630,684' name='elbowsX'/>",
-        "  <property value='472,472,552,552' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPageOverrideForm.do@'>",
-        "  <property value='504,409,409,315' name='elbowsX'/>",
-        "  <property value='472,472,252,252' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPage.do@'>",
-        "  <property value='504,409,409,315' name='elbowsX'/>",
-        "  <property value='472,472,372,372' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPageOverrideInputs.do@'>",
-        "  <property value='576,630,630,684' name='elbowsX'/>",
-        "  <property value='472,472,392,392' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:goNested.do@'>",
-        "  <property value='504,290,290,76' name='elbowsX'/>",
-        "  <property value='483,483,1012,1012' name='elbowsY'/>",
-        "  <property value='West_2' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:input.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='540,540,540,540' name='elbowsX'/>",
-        "  <property value='524,550,550,576' name='elbowsY'/>",
-        "  <property value='South_1' name='fromPort'/>",
-        "  <property value='North_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPageOverrideInputs.do@'>",
-        "  <property value='504,409,409,315' name='elbowsX'/>",
-        "  <property value='472,472,492,492' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPage.do@'>",
-        "  <property value='504,409,409,315' name='elbowsX'/>",
-        "  <property value='472,472,192,192' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPageOverrideForm.do@'>",
-        "  <property value='504,409,409,315' name='elbowsX'/>",
-        "  <property value='472,472,432,432' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPageWithForm.do@'>",
-        "  <property value='504,410,410,316' name='elbowsX'/>",
-        "  <property value='472,472,112,112' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPageWithForm.do@'>",
-        "  <property value='504,410,410,316' name='elbowsX'/>",
-        "  <property value='472,472,552,552' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToCurrentPage.do@'>",
-        "  <property value='576,630,630,684' name='elbowsX'/>",
-        "  <property value='472,472,312,312' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToCurrentPageOverrideInputs.do@'>",
-        "  <property value='504,409,409,315' name='elbowsX'/>",
-        "  <property value='472,472,52,52' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='page:inputPage.jsp'>",
-        "  <property value='540' name='x'/>",
-        "  <property value='480' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:globalReturnToPreviousPageOverrideInputs.do'>",
-        "  <property value='320' name='x'/>",
-        "  <property value='1300' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action:globalReturnToPreviousPage.do'>",
-        "  <property value='540' name='x'/>",
-        "  <property value='1300' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:globalReturnToPreviousPageOverrideForm.do'>",
-        "  <property value='760' name='x'/>",
-        "  <property value='1300' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToPreviousPageOverrideInputs.do@'>",
-        "  <property value='504,440,440,376' name='elbowsX'/>",
-        "  <property value='1032,1032,732,732' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPreviousPageOverrideInputs.do@'>",
-        "  <property value='504,430,430,356' name='elbowsX'/>",
-        "  <property value='1032,1032,1292,1292' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPreviousPage.do@'>",
-        "  <property value='540,540,540,540' name='elbowsX'/>",
-        "  <property value='1084,1170,1170,1256' name='elbowsY'/>",
-        "  <property value='South_1' name='fromPort'/>",
-        "  <property value='North_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToPageOverrideForm.do@'>",
-        "  <property value='576,630,630,684' name='elbowsX'/>",
-        "  <property value='1032,1032,932,932' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToPageOverrideInputs.do@'>",
-        "  <property value='576,630,630,684' name='elbowsX'/>",
-        "  <property value='1032,1032,732,732' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:goNested.do@'>",
-        "  <property value='504,290,290,76' name='elbowsX'/>",
-        "  <property value='1021,1021,1012,1012' name='elbowsY'/>",
-        "  <property value='West_0' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToPage.do@'>",
-        "  <property value='576,630,630,684' name='elbowsX'/>",
-        "  <property value='1032,1032,832,832' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToPreviousPageOverrideForm.do@'>",
-        "  <property value='504,440,440,376' name='elbowsX'/>",
-        "  <property value='1032,1032,932,932' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:globalReturnToPreviousPageOverrideForm.do@'>",
-        "  <property value='576,650,650,724' name='elbowsX'/>",
-        "  <property value='1032,1032,1292,1292' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='action-call:@page:[EMAIL 
PROTECTED]@action:returnToPreviousPage.do@'>",
-        "  <property value='504,440,440,376' name='elbowsX'/>",
-        "  <property value='1032,1032,832,832' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='page:nextPage.jsp'>",
-        "  <property value='540' name='x'/>",
-        "  <property value='1040' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm'>",
-        "  <property value='40' name='x'/>",
-        "  <property value='120' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action:returnToPreviousPageWithForm.do#returnToTest.returnToTestController.InputForm'>",
-        "  <property value='60' name='x'/>",
-        "  <property value='40' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='76,380,380,684' name='elbowsX'/>",
-        "  <property value='841,841,483,483' name='elbowsY'/>",
-        "  <property value='East_0' name='fromPort'/>",
-        "  <property value='West_2' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='29,29,40,40' name='elbowsX'/>",
-        "  <property value='816,490,490,164' name='elbowsY'/>",
-        "  <property value='North_0' name='fromPort'/>",
-        "  <property value='South_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPage.do@'>",
-        "  <property value='76,380,380,684' name='elbowsX'/>",
-        "  <property value='852,852,832,832' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToCurrentPage.do@'>",
-        "  <property value='76,380,380,684' name='elbowsX'/>",
-        "  <property value='863,863,323,323' name='elbowsY'/>",
-        "  <property value='East_2' name='fromPort'/>",
-        "  <property value='West_2' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPreviousPageWithForm.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='40,40,60,60' name='elbowsX'/>",
-        "  <property value='816,450,450,84' name='elbowsY'/>",
-        "  <property value='North_1' name='fromPort'/>",
-        "  <property value='South_1' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='action-call:@external-jpf:/returnToTest/nested/[EMAIL 
PROTECTED]@action:returnToPreviousPage.do@'>",
-        "  <property value='76,190,190,304' name='elbowsX'/>",
-        "  <property value='863,863,821,821' name='elbowsY'/>",
-        "  <property value='East_2' name='fromPort'/>",
-        "  <property value='West_0' name='toPort'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='external-jpf:/returnToTest/nested/nestedController.jpf'>",
-        "  <property value='40' name='x'/>",
-        "  <property value='860' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'>",
-        "  <property value='540,540,540,540' name='elbowsX'/>",
-        "  <property value='84,260,260,436' name='elbowsY'/>",
-        "  <property value='South_1' name='fromPort'/>",
-        "  <property value='North_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:input.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='540,540,540,540' name='elbowsX'/>",
-        "  <property value='664,830,830,996' name='elbowsY'/>",
-        "  <property value='South_1' name='fromPort'/>",
-        "  <property value='North_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:input.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='416,460,460,504' name='elbowsX'/>",
-        "  <property value='392,392,392,392' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "  <property value='validationFail' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPage.do@@'>",
-        "  <property value='860' name='x'/>",
-        "  <property value='840' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL PROTECTED]:returnToPage.do@'>",
-        "  <property value='756,790,790,824' name='elbowsX'/>",
-        "  <property value='832,832,832,832' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToCurrentPage.do@'>",
-        "  <property value='184,140,140,96' name='elbowsX'/>",
-        "  <property value='252,252,252,252' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToCurrentPageWithForm.do#returnToTest.returnToTestController.InputForm@'/>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToPreviousPage.do@'>",
-        "  <property value='184,140,140,96' name='elbowsX'/>",
-        "  <property value='512,512,512,512' name='elbowsY'/>",
-        "  <property value='West_1' name='fromPort'/>",
-        "  <property value='East_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToCurrentPageOverrideInputs.do@'/>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToCurrentPageOverrideForm.do@'/>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToPreviousPageOverrideInputs.do@'/>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToPreviousPageOverrideForm.do@'/>",
-        "<pageflow-object id='return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPageOverrideInputs.do@@'>",
-        "  <property value='860' name='x'/>",
-        "  <property value='740' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToPageOverrideInputs.do@'>",
-        "  <property value='756,790,790,824' name='elbowsX'/>",
-        "  <property value='732,732,732,732' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPageOverrideForm.do@@'>",
-        "  <property value='860' name='x'/>",
-        "  <property value='940' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToPageOverrideForm.do@'>",
-        "  <property value='756,790,790,824' name='elbowsX'/>",
-        "  <property value='932,932,932,932' name='elbowsY'/>",
-        "  <property value='East_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:path#success#/returnToTest/nested/[EMAIL 
PROTECTED]:goNested.do@'>",
-        "  <property value='40,40,40,40' name='elbowsX'/>",
-        "  <property value='976,940,940,904' name='elbowsY'/>",
-        "  <property value='North_1' name='fromPort'/>",
-        "  <property value='South_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object 
id='formbeanprop:returnToTest.returnToTestController.InputForm#foo#java.lang.String'/>",
-        "<pageflow-object 
id='formbeanprop:returnToTest.returnToTestController.InputForm#bar#java.lang.String'/>",
-        "<pageflow-object 
id='formbean:returnToTest.returnToTestController.InputForm'/>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm@'>",
-        "  <property value='40,-26,-26,74' name='elbowsX'/>",
-        "  <property value='76,76,82,82' name='elbowsY'/>",
-        "  <property value='North_1' name='fromPort'/>",
-        "  <property value='West_1' name='toPort'/>",
-        "  <property value='success' name='label'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='return-to-page:@forward:[EMAIL 
PROTECTED]:returnToPageWithForm.do#returnToTest.returnToTestController.InputForm@@'>",
-        "  <property value='110' name='x'/>",
-        "  <property value='90' name='y'/>",
-        "</pageflow-object>",
-        "<pageflow-object id='forward:[EMAIL 
PROTECTED]:returnToPreviousPageWithForm.do#returnToTest.returnToTestController.InputForm@'/>",
-        "</view-properties>"
     })
 public class returnToTestController extends PageFlowController
 {

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf
  (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf
  Fri Dec 10 00:33:03 2004
@@ -21,46 +21,17 @@
 import org.apache.beehive.netui.pageflow.Forward;
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
-/**
- * This is the default controller for a blank web application.
- */
[EMAIL PROTECTED]@Jpf.ViewProperties( value={
-    "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->",
-    "<view-properties>",
-    "    <pageflow-object 
id='pageflow:/sharedFlow/SharedFlowController.jpf'/>",
-    "    <pageflow-object id='action:begin.do'>",
-    "        <property value='80' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='page:index.jsp'>",
-    "        <property value='220' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'>",
-    "        <property value='116,140,140,164' name='elbowsX'/>",
-    "        <property value='92,92,92,92' name='elbowsY'/>",
-    "        <property value='East_1' name='fromPort'/>",
-    "        <property value='West_1' name='toPort'/>",
-    "        <property value='index' name='label'/>",
-    "    </pageflow-object>",
-    "</view-properties>"})
[EMAIL PROTECTED](
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
 public class HasNoSharedFlow extends PageFlowController
 {
-    @Jpf.SharedFlowField
-    private webappRoot.SharedFlow _sharedFlow;;
-
-    @Jpf.Action(
-        forwards={
-           @Jpf.Forward(name="index", path="index.jsp")
-        }
-    )
-    protected Forward begin()
-    {
-        return new Forward("index");
-    }
+    private global.Global globalApp;
 
     public String getSharedFlowField()
     {
-        return _sharedFlow.getDisplayName();
+        return globalApp.getDisplayName();
     }
 }

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf
    (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf
    Fri Dec 10 00:33:03 2004
@@ -21,44 +21,20 @@
 import org.apache.beehive.netui.pageflow.Forward;
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
-/**
- * This is the default controller for a blank web application.
- */
[EMAIL PROTECTED]@Jpf.ViewProperties( value={
-    "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->",
-    "<view-properties>",
-    "    <pageflow-object 
id='pageflow:/sharedFlow/SharedFlowController.jpf'/>",
-    "    <pageflow-object id='action:begin.do'>",
-    "        <property value='80' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='page:index.jsp'>",
-    "        <property value='220' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'>",
-    "        <property value='116,140,140,164' name='elbowsX'/>",
-    "        <property value='92,92,92,92' name='elbowsY'/>",
-    "        <property value='East_1' name='fromPort'/>",
-    "        <property value='West_1' name='toPort'/>",
-    "        <property value='index' name='label'/>",
-    "    </pageflow-object>",
-    "</view-properties>"})
[EMAIL PROTECTED](
+    sharedFlowRefs={
+        @Jpf.SharedFlowRef(name="rootSharedFlow", 
type=webappRoot.SharedFlow.class),
+        @Jpf.SharedFlowRef(name="sf1", type=SharedFlow1.class)
+    },
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
 public class HasSharedFlow1 extends PageFlowController
 {
-    @Jpf.SharedFlowField
+    @Jpf.SharedFlowField(name="sf1")
     private SharedFlow1 sf;
     
-    @Jpf.Action(
-        forwards={
-           @Jpf.Forward(name="index", path="index.jsp")
-        }
-    )
-    protected Forward begin()
-    {
-        return new Forward("index");
-    }
-
     public String getSharedFlowField()
     {
         return sf.getDisplayName();

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp
     (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp
     Fri Dec 10 00:33:03 2004
@@ -16,7 +16,7 @@
         SharedFlowController field: <b><netui:label 
value="${pageFlow.sharedFlowField}"/></b>
         <br/>
         <br/>
-        <netui:anchor 
action="sharedFlow1Action">sharedFlow1Action</netui:anchor>
+        <netui:anchor 
action="sf1.sharedFlow1Action">sharedFlow1Action</netui:anchor>
         <br/>
         <netui:anchor 
href="seesSharedFlow1/SeesSharedFlow1.jpf">seesSharedFlow1/SeesSharedFlow1.jpf</netui:anchor>
 

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf
   (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf
   Fri Dec 10 00:33:03 2004
@@ -22,44 +22,20 @@
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 import pageFlowCore.sharedFlow.hasSharedFlow1.SharedFlow1;
 
-/**
- * This is the default controller for a blank web application.
- */
[EMAIL PROTECTED]@Jpf.ViewProperties( value={
-    "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->",
-    "<view-properties>",
-    "    <pageflow-object 
id='pageflow:/sharedFlow/SharedFlowController.jpf'/>",
-    "    <pageflow-object id='action:begin.do'>",
-    "        <property value='80' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='page:index.jsp'>",
-    "        <property value='220' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'>",
-    "        <property value='116,140,140,164' name='elbowsX'/>",
-    "        <property value='92,92,92,92' name='elbowsY'/>",
-    "        <property value='East_1' name='fromPort'/>",
-    "        <property value='West_1' name='toPort'/>",
-    "        <property value='index' name='label'/>",
-    "    </pageflow-object>",
-    "</view-properties>"})
[EMAIL PROTECTED](
+    sharedFlowRefs={
+        @Jpf.SharedFlowRef(name="rootSharedFlow", 
type=webappRoot.SharedFlow.class),
+        @Jpf.SharedFlowRef(name="sf1", 
type=pageFlowCore.sharedFlow.hasSharedFlow1.SharedFlow1.class)
+    },
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
 public class SeesSharedFlow1 extends PageFlowController
 {
-    @Jpf.SharedFlowField
+    @Jpf.SharedFlowField(name="sf1")
     private SharedFlow1 sf;
     
-    @Jpf.Action(
-        forwards={
-           @Jpf.Forward(name="index", path="index.jsp")
-        }
-    )
-    protected Forward begin()
-    {
-        return new Forward("index");
-    }
-
     public String getSharedFlowField()
     {
         return sf.getDisplayName();

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf
     (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf
     Fri Dec 10 00:33:03 2004
@@ -21,44 +21,19 @@
 import org.apache.beehive.netui.pageflow.Forward;
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
-/**
- * This is the default controller for a blank web application.
- */
[EMAIL PROTECTED]@Jpf.ViewProperties( value={
-    "<!-- This data is auto-generated. Hand-editing this section is not 
recommended. -->",
-    "<view-properties>",
-    "    <pageflow-object 
id='pageflow:/sharedFlow/SharedFlowController.jpf'/>",
-    "    <pageflow-object id='action:begin.do'>",
-    "        <property value='80' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='page:index.jsp'>",
-    "        <property value='220' name='x'/>",
-    "        <property value='100' name='y'/>",
-    "    </pageflow-object>",
-    "    <pageflow-object id='forward:[EMAIL PROTECTED]:begin.do@'>",
-    "        <property value='116,140,140,164' name='elbowsX'/>",
-    "        <property value='92,92,92,92' name='elbowsY'/>",
-    "        <property value='East_1' name='fromPort'/>",
-    "        <property value='West_1' name='toPort'/>",
-    "        <property value='index' name='label'/>",
-    "    </pageflow-object>",
-    "</view-properties>"})
[EMAIL PROTECTED](
+    sharedFlowRefs={
+        @Jpf.SharedFlowRef(name="rootSharedFlow", 
type=webappRoot.SharedFlow.class),
+        @Jpf.SharedFlowRef(name="sf2", type=SharedFlow2.class)
+    },
+    simpleActions={
+        @Jpf.SimpleAction(name="begin", path="index.jsp")
+    }
+)
 public class HasSharedFlow2 extends PageFlowController
 {
-    @Jpf.SharedFlowField
+    @Jpf.SharedFlowField(name="sf2")
     private SharedFlow2 sf;
-
-    @Jpf.Action(
-        forwards={
-           @Jpf.Forward(name="index", path="index.jsp")
-        }
-    )
-    protected Forward begin()
-    {
-        return new Forward("index");
-    }
-
 
     public String getSharedFlowField()
     {

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp
      (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp
      Fri Dec 10 00:33:03 2004
@@ -16,7 +16,7 @@
         SharedFlowController field: <b><netui:label 
value="${pageFlow.sharedFlowField}"/></b>
         <br/>
         <br/>
-        <netui:anchor 
action="sharedFlow2Action">sharedFlow2Action</netui:anchor>
+        <netui:anchor 
action="sf2.sharedFlow2Action">sharedFlow2Action</netui:anchor>
  
     </body>
 </netui:html>

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp
     (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp
     Fri Dec 10 00:33:03 2004
@@ -16,7 +16,7 @@
         SharedFlowController field: <b><netui:label 
value="${pageFlow.sharedFlowField}"/></b>
         <br/>
         <br/>
-        <netui:anchor 
action="sharedFlow1Action">sharedFlow1Action</netui:anchor>
+        <netui:anchor 
action="sf1.sharedFlow1Action">sharedFlow1Action</netui:anchor>
         <br/>
         <netui:anchor 
href="hasSharedFlow2/HasSharedFlow2.jpf">hasSharedFlow2/HasSharedFlow2.jpf</netui:anchor>
  

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow1/SharedFlow.jpfs
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow1/SharedFlow.jpfs?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow1/SharedFlow.jpfs
        Fri Dec 10 00:33:03 2004
@@ -0,0 +1,27 @@
+package pageFlowCore.sharedFlowExceptions.sharedFlow1;
+
+import org.apache.beehive.netui.pageflow.SharedFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
[EMAIL PROTECTED](
+    catches={
+        @Jpf.Catch(type=SharedFlow.Ex.class, method="handleIt")
+    }
+)
+public class SharedFlow extends SharedFlowController
+{
+    public static class Ex extends Exception
+    {
+    }
+
+    @Jpf.ExceptionHandler(
+        forwards={
+            @Jpf.Forward(name="cur", navigateTo=Jpf.NavigateTo.currentPage)
+        }
+    )
+    public Forward handleIt( Ex ex, String actionName, String message, Object 
form )
+    {
+        return new Forward( "cur", "message", "handled " + 
ex.getClass().getName() + " in sharedFlow1" );
+    }
+}

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow2/SharedFlow.jpfs
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow2/SharedFlow.jpfs?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/pageFlowCore/sharedFlowExceptions/sharedFlow2/SharedFlow.jpfs
        Fri Dec 10 00:33:03 2004
@@ -0,0 +1,23 @@
+package pageFlowCore.sharedFlowExceptions.sharedFlow2;
+
+import org.apache.beehive.netui.pageflow.SharedFlowController;
+import org.apache.beehive.netui.pageflow.Forward;
+import org.apache.beehive.netui.pageflow.annotations.Jpf;
+
[EMAIL PROTECTED](
+    catches={
+        @Jpf.Catch(type=Exception.class, method="handleIt")
+    }
+)
+public class SharedFlow extends SharedFlowController
+{
+    @Jpf.ExceptionHandler(
+        forwards={
+            @Jpf.Forward(name="cur", navigateTo=Jpf.NavigateTo.currentPage)
+        }
+    )
+    public Forward handleIt( Exception ex, String actionName, String message, 
Object form )
+    {
+        return new Forward( "cur", "message", "handled " + 
ex.getClass().getName() + " in sharedFlow2" );
+    }
+}

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/results/Begin.jsp
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/results/Begin.jsp?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/results/Begin.jsp&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/results/Begin.jsp&r2=111484
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/results/Begin.jsp    
(original)
+++ incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/results/Begin.jsp    
Fri Dec 10 00:33:03 2004
@@ -12,7 +12,7 @@
 the sharedFlow so that is can capture the onDestroy event within the lifecycle.
 </p>
 <hr />
-<netui:content value="${sharedFlow.results}"/>
+<netui:content value="${globalApp.results}"/>
 <hr />
 </body>
 </html>

Copied: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/webappRoot/SharedFlow.jpfs
 (from r111151, 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs)
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/webappRoot/SharedFlow.jpfs?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs&r1=111151&p2=incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/webappRoot/SharedFlow.jpfs&r2=111484
==============================================================================
--- incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/SharedFlow.jpfs      
(original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/webappRoot/SharedFlow.jpfs
   Fri Dec 10 00:33:03 2004
@@ -7,509 +7,15 @@
 import javax.servlet.http.HttpSession;
 import java.util.Arrays;
 
-import shared.FormA;
-import shared.QaTrace;
 
 import org.apache.struts.action.ActionMapping;
 import org.apache.struts.action.ActionForward;
 
-import pageFlowCore.returnToTest.returnToTestController.InputForm;
 
 
[EMAIL PROTECTED]( 
strutsMerge="/WEB-INF/src/global/merge-jpf-struts-config.xml" )
[EMAIL PROTECTED]()
 public class SharedFlow extends SharedFlowController
 {
-    private String _pageGroupState = "";
-    private String _results;
-    private String _globalAppInfo = "";
-
-    // from QA Global.app
-    private  boolean  _toggle  = true;
-    private QaTrace _log = null;
-    private int     _cnt = 0;
-
-    /** 
-     * This property is referenced by the databinding/globalApp/nojpf/ BVT.
-     */
-    public String getSayHello()
-    {
-        return "Hello World! -- the Global.app";
-    }
-
-    public String[] getStrings()
-    {
-        return new String[] {"One", "Fish", "Two", "Fish"}; 
-    }
-
-    public static class GlobalForm extends FormData
-    {
-       String _search;
-       public void setSearch(String search) {
-           _search = search;
-       }
-       public String getSearch() {
-           return _search;
-       }
-    }  
-
-    public String getAppState() {
-       return "running";
-    }
-
-    public String getAppInfo() {
-       return "App DRT";
-    }
-
-    public String getResults() {
-       return _results;
-    }
-    public void setResults(String results) {
-       _results = results;
-    }
-
-    public String getPageFlowState() {
-       return _pageGroupState;
-    }
-    public void setPageFlowState(String pgs) {
-       _pageGroupState = pgs;
-    }
-
-    public String getGlobalAppInfo() {
-        return _globalAppInfo;
-    }
-    
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "nesting", path = 
"/globalJpfs/nestReturn/Controller.jpf") })
-    public Forward globalAction_action()
-    {
-        return new Forward("nesting");
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "nesting", path = 
"/globalJpfs/nestReturn/Controller.jpf") })
-    public Forward globalAction_form(GlobalForm form)
-    {
-        return new Forward("nesting");
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "return", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    public Forward globalAction_getInfo(GlobalForm form)
-    {
-        StringBuffer sb = new StringBuffer();
-        sb.append("<table border='1' cellspacing='0'cellpaddinig='2'>");
-
-        sb = new StringBuffer();
-        sb.append("<table border='1' cellspacing='0'cellpaddinig='2'>");
-
-        HttpServletRequest req = getRequest();
-        sb.append("<tr><td>Request</td><td>");
-        sb.append(req.getRequestURI());
-        sb.append("</td></tr>");
-
-
-        HttpServletResponse resp = getResponse();
-        sb.append("<tr><td>Response</td><td>Committed:");
-        sb.append("" + resp.isCommitted());
-        sb.append("</td></tr>");
-
-
-        HttpSession session = getSession();
-        session.setMaxInactiveInterval( 3600 );
-        sb.append("<tr><td>Session</td><td>In active interval:");
-        sb.append("" + session.getMaxInactiveInterval());
-        sb.append("</td></tr>");
-
-        // nestable
-        sb.append("<tr><td>Nestable</td><td>");
-        sb.append("" + isNestable());
-        sb.append("</td></tr>");
-
-        // nestable
-        sb.append("<tr><td>PageFlow</td><td>");
-        sb.append("" + isPageFlow());
-        sb.append("</td></tr>");
-
-        // get action
-        sb.append("<tr><td>Actions</td><td>");
-        String[] actions = getActions();
-        Arrays.sort(actions);
-        for (int i=0;i<actions.length;i++) {
-            sb.append(actions[i]);
-            sb.append("<br />");
-        }
-        sb.append("</td></tr>");
-
-
-        // get mapping
-        ActionMapping map = getMapping();
-        sb.append("<tr><td>ActionMapping</td><td>");
-        sb.append("" + map);
-        sb.append("</td></tr>");
-
-        // URI
-        sb.append("<tr><td>URI</td><td>");
-        sb.append("" + getURI());
-        sb.append("</td></tr>");
-
-        // parent dir
-        sb.append("<tr><td>parentDir</td><td>");
-        sb.append("" + getModulePath());
-        sb.append("</td></tr>");
-
-
-        sb.append("</table>");
-        _globalAppInfo = sb.toString();
-
-        return new Forward("return");
-    }
-
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "results", path = 
"/results/Controller.jpf") })
-    public Forward globalAction_results()
-    {
-        return new Forward("results");
-    }
-
-
-    //
-    // The following actions are for 
/pageFlowCore/returnToTest/returnToTestController.jpf.
-    //
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToCurrentPageOverrideInputs()
-    {
-        Forward fwd = new Forward( "success", "input1", "overridden #1" );
-        fwd.addPageInput( "input2", "overridden #2" );
-        return fwd;
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToCurrentPageOverrideForm()
-    {
-        InputForm overrideForm = new InputForm();
-        overrideForm.setFoo( "override foo" );
-        overrideForm.setBar( "override bar" );
-        return new Forward("success", overrideForm);
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToCurrentPage()
-    {
-        return new Forward("success");
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToCurrentPageWithForm( InputForm form )
-    {
-        return new Forward("success");
-    }
-
-
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToPageOverrideInputs()
-    {
-        Forward fwd = new Forward( "success", "input1", "overridden #1" );
-        fwd.addPageInput( "input2", "overridden #2" );
-        return fwd;
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToPageOverrideForm()
-    {
-        InputForm overrideForm = new InputForm();
-        overrideForm.setFoo( "override foo" );
-        overrideForm.setBar( "override bar" );
-        return new Forward("success", overrideForm);
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToPage()
-    {
-        return new Forward("success");
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.currentPage) })
-    protected Forward globalReturnToPageWithForm( InputForm form )
-    {
-        return new Forward("success");
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousPage) })
-    protected Forward globalReturnToPreviousPage()
-    {
-        return new Forward("success");
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousPage) })
-    protected Forward globalReturnToPreviousPageOverrideInputs()
-    {
-        Forward fwd = new Forward( "success", "input1", "overridden #1" );
-        fwd.addPageInput( "input2", "overridden #2" );
-        return fwd;
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousPage) })
-    protected Forward globalReturnToPreviousPageOverrideForm()
-    {
-        InputForm overrideForm = new InputForm();
-        overrideForm.setFoo( "override foo" );
-        overrideForm.setBar( "override bar" );
-        return new Forward("success", overrideForm);
-    }
-   
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousAction) })
-    protected Forward globalReturnToPreviousAction()
-    {
-        return new Forward("success");
-    }
-
[EMAIL PROTECTED](forwards = { @Jpf.Forward(name = "success", navigateTo = 
Jpf.NavigateTo.previousAction) })
-    protected Forward globalReturnToAction()
-    {
-        return new Forward("success");
-    }
-
-    // from QA Web
-    /**
-     * onCreate
-     */
-    public void onCreate() throws Exception
-        {
-        HttpSession session = getSession();
-        _log = QaTrace.getTrace(getSession(), true);
-        //_cnt = _log.newClass(this);
-        //_log.tracePoint("Global.onCreate():" + session.hashCode());
-    }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "struts1Do",
-                path = "/interOp/tests/test2/gotoStrutsJSP.do") 
-        })
-   public Forward toLegacy()
-      {
-          // _log.tracePoint("Global.toLegacy():" + _cnt + " - Test2");
-      return new Forward("struts1Do");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "struts2Do",
-                path = "/interOp/tests/test5/gotoStruts2JSP.do") 
-        })
-   public Forward globalAction()
-      {
-          //_log.tracePoint("Global.globalAction():" + _cnt + " - Test5");
-      return new Forward("struts2Do");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "goBack",
-                navigateTo = Jpf.NavigateTo.previousPage) 
-        })
-   public Forward test35GlobalAction()
-      {
-          //_log.tracePoint("Global.test35GlobalAction():" + _cnt + " - 
Test35");
-      return new Forward("goBack");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "gotoPg2",
-                path = "/returnTo/test36/Jsp2.jsp") 
-        })
-   public Forward test36GlobalAction()
-      {
-          //_log.tracePoint("Global.test36GlobalAction():" + _cnt + " - 
Test36");
-      return new Forward("gotoPg2");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "goBack",
-                navigateTo = Jpf.NavigateTo.currentPage) 
-        })
-   public Forward test39GlobalAction()
-      {
-          //_log.tracePoint("Global.test39GlobalAction():" + _cnt + " - 
Test39");
-      return new Forward("goBack");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "gotoPg2",
-                path = "/returnTo/test40/Jsp2.jsp") 
-        })
-   public Forward test40GlobalAction()
-      {
-      //_log.tracePoint("Global.test40GlobalAction():" + _cnt + " - Test40");
-      return new Forward("gotoPg2");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "goBack",
-                navigateTo = Jpf.NavigateTo.currentPage) 
-        })
-   public Forward test40GlobalAction_B()
-      {
-      //_log.tracePoint("Global.test40GlobalAction_B():" + _cnt + " - Test40");
-      return new Forward("goBack");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "goBack",
-                navigateTo = Jpf.NavigateTo.previousAction) 
-        })
-   public Forward test45GlobalAction()
-      {
-      //_log.tracePoint("Global.test45GlobalAction():" + _cnt + " - Test45");
-      return new Forward("goBack");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "gotoAct2",
-                path = "/returnTo/test46/action2.do") 
-        })
-   public Forward test46GlobalAction()
-      {
-      //_log.tracePoint("Global.test46GlobalAction():" + _cnt + " - Test46");
-      if (_toggle == true)
-         {
-         _toggle = false;
-         return new Forward("gotoAct2");
-         }
-      _toggle = true;
-      return new Forward("gotoError");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "goBack",
-                navigateTo = Jpf.NavigateTo.previousAction) 
-        })
-   public Forward test48GlobalAction(FormA inForm)
-//   public Forward test48GlobalAction()
-      {
-      //_log.tracePoint("Global.test48GlobalAction(FormA):"
-      //                  + _cnt
-      //                  + " - Test48 - FormA instance:"
-      //                   + _log.getClassCnter(inForm));
-      return new Forward("goBack");
-      }
-
-    @Jpf.Action(
-        )
-   public Forward unKnown()
-      {
-      ActionMapping mapping = getMapping();
-      //_log.tracePoint("Global.unKnown():"
-      //                  + _cnt
-      //                  + " - Parameter:"
-      //                  + mapping.getParameter());
-      return new Forward("gotoError");
-      }
-
-   /**
-    * StrutsMergeTest2 will raise this "unHandledAction" action.  The forward
-    * "jpf:gotoAction1" below will be overridden by the "struts-merge"
-    * annotation above and send control back to a valid action in the
-    * StrutsMergeTest2 pageflow.
-    */
-    @Jpf.Action(
-        )
-   public Forward unHandledAction()
-      {
-      ActionMapping mapping = getMapping();
-      //_log.tracePoint("Global.unHandledAction():"
-      //                  + _cnt
-      //                  + " - Parameter:"
-      //                  + mapping.getParameter());
-      return new Forward("gotoAction1");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "gotoResults",
-                path = "/miscJpf/bug30448/jpfReturn1.do") 
-        })
-   public Forward jpfReturn1(FormA inForm)
-      {
-      //_log.tracePoint("Global.jpfReturn1(FormA):" + _cnt + " - bug30448");
-      return new Forward("gotoResults");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "success",
-                path = "/scopedJpf/jpfTest5/jpf1/Jpf1.jpf") 
-        })
-   public Forward jpf1Begin()
-      {
-      //_log.tracePoint("Global.jpf1Begin():" + _cnt + " - JpfTest5");
-      return new Forward("success");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "success",
-                path = "/scopedJpf/jpfTest5/jpf2/Jpf2.jpf") 
-        })
-   public Forward jpf2Begin()
-      {
-      //_log.tracePoint("Global.jpf2Begin():" + _cnt + " - JpfTest5");
-      return new Forward("success");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "success",
-                path = "/scopedJpf/jpfTest5/jpf1/goNested.do") 
-        })
-   public Forward jpf1GoNested(FormA form)
-      {
-      //_log.tracePoint("Global.jpf1GoNested(FormA):" + _cnt + " - JpfTest5");
-      return new Forward("success");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "success",
-                path = "/scopedJpf/jpfTest5/jpf2/goNested.do") 
-        })
-   public Forward jpf2GoNested(FormA form)
-      {
-      //_log.tracePoint("Global.jpf2GoNested(FormA):" + _cnt + " - JpfTest5");
-      return new Forward("success");
-      }
-
-    @Jpf.Action(
-        forwards = {
-            @Jpf.Forward(
-                name = "success",
-                path = "/singletonJpf/jpfTest10/jpf1/Jpf1.jpf") 
-        })
-   public Forward gblJpfTest10()
-      {
-      //_log.tracePoint("Global.jpfTest10():" + _cnt + " - JpfTest10");
-      return new Forward("success");
-      }
     @Jpf.Action(
         forwards={
             @Jpf.Forward(
@@ -518,7 +24,6 @@
             )
         }
     )
-
     public Forward pageFlowCore_sharedFlow_globalAction()
     {
         return new Forward( "success", "message", "hit globalAction" );

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/config/testRecorder-tests.xml&r2=111484
==============================================================================
--- 
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
   Fri Dec 10 00:33:03 2004
@@ -3731,8 +3731,8 @@
          </features>
       </test>
       <test>
-         <name>PfSharedFlow</name>
-         <description>Tests shared flow features.</description>
+         <name>PfSharedFlowActions</name>
+         <description>Test of shared flows and actions.</description>
          <webapp>coreWeb</webapp>
          <categories>
             <category>drt</category>
@@ -3742,6 +3742,7 @@
          <features>
             <feature>PageFlow</feature>
             <feature>SharedFlow</feature>
+            <feature>Action</feature>
          </features>
       </test>
       <test>
@@ -4580,6 +4581,21 @@
             <feature>Form</feature>
             <feature>Scoping</feature>
             <feature>ActionForms</feature>
+         </features>
+      </test>
+      <test>
+         <name>SharedFlowExceptions</name>
+         <description>Test of exception handling in shared flows.</description>
+         <webapp>coreWeb</webapp>
+         <categories>
+            <category>drt</category>
+            <category>bvt</category>
+            <category>corePageFlow</category>
+         </categories>
+         <features>
+            <feature>PageFlow</feature>
+            <feature>SharedFlow</feature>
+            <feature>Exceptions</feature>
          </features>
       </test>
       <test>

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CellRepeaterError2.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CellRepeaterError2.xml?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CellRepeaterError2.xml&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CellRepeaterError2.xml&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CellRepeaterError2.xml
    (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/CellRepeaterError2.xml
    Fri Dec 10 00:33:03 2004
@@ -123,8 +123,8 @@
  <tr><th>Tag</th><td>CellRepeater</td>
  <th>Errors</th><td colspan="2">1</td></tr>
  <tr><th>Expression Error</th><th>Attribute</th><td>dataSource</td>
- <th>Expression</th><td>{sharedFlow.noCellRepeaterProperty}</td></tr>
- <tr><th valign="top">Message</th><td colspan="4">Caught exception when 
evaluating expression "{sharedFlow.noCellRepeaterProperty}" with available 
binding contexts [actionForm, pageFlow, globalApp, request, session, 
application, pageContext, bundle, container, url, pageInput]. Root cause: 
java.lang.RuntimeException: Could not find property or field 
"noCellRepeaterProperty" on object of type "class 
webappRoot.SharedFlow"</td></tr>
+ <th>Expression</th><td>{sharedFlow.root.noCellRepeaterProperty}</td></tr>
+ <tr><th valign="top">Message</th><td colspan="4">Caught exception when 
evaluating expression "{sharedFlow.root.noCellRepeaterProperty}" with available 
binding contexts [actionForm, pageFlow, globalApp, request, session, 
application, pageContext, bundle, container, url, pageInput]. Root cause: 
java.lang.RuntimeException: Could not find property or field 
"noCellRepeaterProperty" on object of type "class 
webappRoot.SharedFlow"</td></tr>
 </table></span>
 
 

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml?view=diff&rev=111484&p1=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml&r1=111483&p2=incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml&r2=111484
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml
   (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfGlobalApp.xml
   Fri Dec 10 00:33:03 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,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>
+<table border='1' 
cellspacing='0'cellpaddinig='2'><tr><td>Request</td><td>/coreWeb/-global/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=global.Global,scope=request,type=org.apache.beehive.netui.pageflow.internal.FlowControllerAction</td></tr><tr><td>URI</td><td>/</td></tr><tr><td>parentDir</td><td>/-global</td></tr></table>
 </body>
 </html>]]></ses:responseBody>
          </ses:response>

Deleted: 
/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfSharedFlow.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfSharedFlow.xml?view=auto&rev=111483
==============================================================================

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfSharedFlowActions.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfSharedFlowActions.xml?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/PfSharedFlowActions.xml
   Fri Dec 10 00:33:03 2004
@@ -0,0 +1,691 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>PfSharedFlowActions</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>09 Dec 2004, 03:33:22.934 PM MST</ses:startDate>
+   <ses:description>Test of shared flows and actions.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label></label></b>
+        <br/>
+        SharedFlow field: <b><label>Global.app</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/pageFlowCore_sharedFlow_globalAction.do">pageFlowCore_sharedFlow_globalAction</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf">hasSharedFlow1/HasSharedFlow1.jpf</a>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlow/pageFlowCore_sharedFlow_globalAction.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/HasNoSharedFlow.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label>hit Global.app</label></b>
+        <br/>
+        SharedFlow field: <b><label>Global.app</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/pageFlowCore_sharedFlow_globalAction.do">pageFlowCore_sharedFlow_globalAction</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf">hasSharedFlow1/HasSharedFlow1.jpf</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/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/pageFlowCore_sharedFlow_globalAction.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label></label></b>
+        <br/>
+        SharedFlowController field: 
<b><label>pageFlowCore.sharedFlow.hasSharedFlow1.SharedFlow1</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/sf1.sharedFlow1Action.do">sharedFlow1Action</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf">seesSharedFlow1/SeesSharedFlow1.jpf</a>
+
+ 
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>4</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/sf1.sharedFlow1Action.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/HasSharedFlow1.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label>hit SharedFlow1.jpfs</label></b>
+        <br/>
+        SharedFlowController field: 
<b><label>pageFlowCore.sharedFlow.hasSharedFlow1.SharedFlow1</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/sf1.sharedFlow1Action.do">sharedFlow1Action</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf">seesSharedFlow1/SeesSharedFlow1.jpf</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/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/sf1.sharedFlow1Action.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label></label></b>
+        <br/>
+        SharedFlowController field: 
<b><label>pageFlowCore.sharedFlow.hasSharedFlow1.SharedFlow1</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/sf1.sharedFlow1Action.do">sharedFlow1Action</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf">hasSharedFlow2/HasSharedFlow2.jpf</a>
+ 
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>6</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/sf1.sharedFlow1Action.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/SeesSharedFlow1.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label>hit SharedFlow1.jpfs</label></b>
+        <br/>
+        SharedFlowController field: 
<b><label>pageFlowCore.sharedFlow.hasSharedFlow1.SharedFlow1</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/sf1.sharedFlow1Action.do">sharedFlow1Action</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf">hasSharedFlow2/HasSharedFlow2.jpf</a>
+ 
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>7</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/sf1.sharedFlow1Action.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label></label></b>
+        <br/>
+        SharedFlowController field: 
<b><label>pageFlowCore.sharedFlow.hasSharedFlow1.seesSharedFlow1.hasSharedFlow2.SharedFlow2</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/sf2.sharedFlow2Action.do">sharedFlow2Action</a>
+ 
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>8</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/sf2.sharedFlow2Action.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>CC80D789A3272417766BE7B304F901DE</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=CC80D789A3272417766BE7B304F901DE</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/HasSharedFlow2.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/index.jsp";>
+    </head>
+    <body>
+        <h3>Shared Flow Test</h3>
+
+        message: <b><label>hit SharedFlow2.jpfs</label></b>
+        <br/>
+        SharedFlowController field: 
<b><label>pageFlowCore.sharedFlow.hasSharedFlow1.seesSharedFlow1.hasSharedFlow2.SharedFlow2</label></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlow/hasSharedFlow1/seesSharedFlow1/hasSharedFlow2/sf2.sharedFlow2Action.do">sharedFlow2Action</a>
+ 
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>09 Dec 2004, 03:33:58.505 PM MST</ses:endDate>
+   <ses:testCount>8</ses:testCount>
+</ses:recorderSession>

Added: 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SharedFlowExceptions.xml
Url: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SharedFlowExceptions.xml?view=auto&rev=111484
==============================================================================
--- (empty file)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/testRecorder/tests/SharedFlowExceptions.xml
  Fri Dec 10 00:33:03 2004
@@ -0,0 +1,265 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ses:recorderSession 
xmlns:ses="http://beehive.apache.org/netui/tools/testrecorder/2004/session";>
+   <ses:sessionName>SharedFlowExceptions</ses:sessionName>
+   <ses:tester>rich</ses:tester>
+   <ses:startDate>09 Dec 2004, 11:41:50.095 PM MST</ses:startDate>
+   <ses:description>Test of exception handling in shared 
flows.</ses:description>
+   <ses:tests>
+      <ses:test>
+         <ses:testNumber>1</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlowExceptions/Controller.jpf</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>60C007C21DE0C5F6AA04590CDD9235C4</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=60C007C21DE0C5F6AA04590CDD9235C4</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlowExceptions/index.jsp";>
+    </head>
+    <body>
+        Message: <b><span></span></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow1Exception.do">throwSharedFlow1Exception</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow2Exception.do">throwSharedFlow2Exception</a>
+        <br/>
+        <br/>
+        <i>sharedFlow1 is 
</i><b><span>pageFlowCore.sharedFlowExceptions.sharedFlow1.SharedFlow</span></b>
+        <br/>
+        <i>sharedFlow2 is 
</i><b><span>pageFlowCore.sharedFlowExceptions.sharedFlow2.SharedFlow</span></b>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>2</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow1Exception.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>60C007C21DE0C5F6AA04590CDD9235C4</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=60C007C21DE0C5F6AA04590CDD9235C4</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlowExceptions/Controller.jpf</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlowExceptions/index.jsp";>
+    </head>
+    <body>
+        Message: <b><span>handled 
pageFlowCore.sharedFlowExceptions.sharedFlow1.SharedFlow$Ex in 
sharedFlow1</span></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow1Exception.do">throwSharedFlow1Exception</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow2Exception.do">throwSharedFlow2Exception</a>
+        <br/>
+        <br/>
+        <i>sharedFlow1 is 
</i><b><span>pageFlowCore.sharedFlowExceptions.sharedFlow1.SharedFlow</span></b>
+        <br/>
+        <i>sharedFlow2 is 
</i><b><span>pageFlowCore.sharedFlowExceptions.sharedFlow2.SharedFlow</span></b>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+      <ses:test>
+         <ses:testNumber>3</ses:testNumber>
+         <ses:request>
+            <ses:protocol>HTTP</ses:protocol>
+            <ses:protocolVersion>1.1</ses:protocolVersion>
+            <ses:host>localhost</ses:host>
+            <ses:port>8080</ses:port>
+            
<ses:uri>/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow2Exception.do</ses:uri>
+            <ses:method>GET</ses:method>
+            <ses:parameters/>
+            <ses:cookies>
+               <ses:cookie>
+                  <ses:name>JSESSIONID</ses:name>
+                  <ses:value>60C007C21DE0C5F6AA04590CDD9235C4</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=60C007C21DE0C5F6AA04590CDD9235C4</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>host</ses:name>
+                  <ses:value>localhost:8080</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>keep-alive</ses:name>
+                  <ses:value>300</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>referer</ses:name>
+                  
<ses:value>http://localhost:8080/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow1Exception.do</ses:value>
+               </ses:header>
+               <ses:header>
+                  <ses:name>user-agent</ses:name>
+                  <ses:value>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; 
rv:1.7.5) Gecko/20041107 Firefox/1.0</ses:value>
+               </ses:header>
+            </ses:headers>
+         </ses:request>
+         <ses:response>
+            <ses:statusCode>200</ses:statusCode>
+            <ses:reason/>
+            <ses:responseBody><![CDATA[<!DOCTYPE HTML PUBLIC "//W3C//DTD HTML 
4.01 Transitional//EN"
+       "http://www.w3.org/TR/html4/loose.dtd";>
+<html lang="en">
+
+    <head>
+        <base 
href="http://localhost:8080/coreWeb/pageFlowCore/sharedFlowExceptions/index.jsp";>
+    </head>
+    <body>
+        Message: <b><span>handled java.lang.NullPointerException in 
sharedFlow2</span></b>
+        <br/>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow1Exception.do">throwSharedFlow1Exception</a>
+        <br/>
+        <a 
href="/coreWeb/pageFlowCore/sharedFlowExceptions/throwSharedFlow2Exception.do">throwSharedFlow2Exception</a>
+        <br/>
+        <br/>
+        <i>sharedFlow1 is 
</i><b><span>pageFlowCore.sharedFlowExceptions.sharedFlow1.SharedFlow</span></b>
+        <br/>
+        <i>sharedFlow2 is 
</i><b><span>pageFlowCore.sharedFlowExceptions.sharedFlow2.SharedFlow</span></b>
+    </body>
+
+</html>]]></ses:responseBody>
+         </ses:response>
+      </ses:test>
+   </ses:tests>
+   <ses:endDate>09 Dec 2004, 11:42:19.437 PM MST</ses:endDate>
+   <ses:testCount>3</ses:testCount>
+</ses:recorderSession>

Reply via email to