Author: rich
Date: Thu Feb 17 00:16:50 2005
New Revision: 154138

URL: http://svn.apache.org/viewcvs?view=rev&rev=154138
Log:
Got rid of the majority of calls to getAttribute/setAttribute on the request, 
and replaced them with calls to methods on a request wrapper created early in 
the request process.  Aside from the swell hard-type getters/setters, this 
should boost performance, which is hurt by all the hashmap lookups.  It will 
take some testing under load to verify this.

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


Added:
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
   (with props)
Removed:
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/RequestValues.java
Modified:
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowActionServlet.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/PageFlowManagedObjectException.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/faces/internal/BackingClassMethodBinding.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowViewHandler.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java
    
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
    
incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedRequest.java
    
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/updateFormFromNestedPopup/Controller.jpf

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&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/AutoRegisterActionServlet.java
 Thu Feb 17 00:16:50 2005
@@ -571,6 +571,12 @@
     protected void process( HttpServletRequest request, HttpServletResponse 
response )
         throws IOException, ServletException
     {
+        //
+        // First wrap the request with an object that contains request-scoped 
values that our runtime uses.  This
+        // is faster than sticking everything into attributes on the request 
(then basically reading from a HashMap).
+        //
+        request = InternalUtils.wrapPageFlowRequest( request );
+        
         ServletContext servletContext = getServletContext();
         String modulePath = PageFlowUtils.getModulePathForRelativeURI( 
InternalUtils.getDecodedServletPath( request ) );
         ModuleConfig registeredApp;
@@ -591,21 +597,8 @@
             //
             RequestUtils.selectModule( modulePath, request, servletContext );
             ModuleConfig appConfig = getModuleConfig( request );
-            assert appConfig == registeredApp;
-            // TODO: after the above assert has existed for a while, remove 
the appConfig variable entirely.
-            // And take out the following null check.  our getModuleConfig 
(which calls ensureModuleConfig)
-            // will put the right module into the ServletContext.
-            
-            //
-            // Even if we've got a registered module, it may not be active 
with Struts in the ServletContext.
-            // This happens when there's a parse error in the module config.
-            //
-            if ( appConfig != null )
-            {
-                RequestProcessor requestProcessor = getRequestProcessor( 
appConfig );
-                requestProcessor.init( this, appConfig );
-                requestProcessor.process( request, response );
-            }
+            RequestProcessor requestProcessor = getRequestProcessor( appConfig 
);
+            requestProcessor.process( request, response );
         }
         else
         {

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowActionServlet.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowActionServlet.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowActionServlet.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowActionServlet.java
 Thu Feb 17 00:16:50 2005
@@ -18,7 +18,7 @@
 package org.apache.beehive.netui.pageflow;
 
 import org.apache.beehive.netui.pageflow.internal.InternalConstants;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
+import org.apache.beehive.netui.pageflow.internal.PageFlowRequestWrapper;
 import org.apache.beehive.netui.pageflow.handler.Handlers;
 import org.apache.beehive.netui.pageflow.handler.FlowControllerHandlerContext;
 import org.apache.beehive.netui.pageflow.handler.ForwardRedirectHandler;
@@ -182,7 +182,7 @@
             StringBuilder sfActionURI = new StringBuilder( ga.getModulePath() 
);
             sfActionURI.append( '/' );
             sfActionURI.append( ServletUtils.getBaseName( uri ) );
-            RequestValues.setOriginalServletPath( request, uri );
+            PageFlowRequestWrapper.get( request ).setOriginalServletPath( uri 
);
             ForwardRedirectHandler frh = _handlers.getForwardRedirectHandler();
             FlowControllerHandlerContext context = new 
FlowControllerHandlerContext( request, response, null );
             frh.forward( context, sfActionURI.toString() );

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&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowController.java
 Thu Feb 17 00:16:50 2005
@@ -40,7 +40,7 @@
 import org.apache.beehive.netui.pageflow.internal.AdapterManager;
 import org.apache.beehive.netui.pageflow.internal.CachedSharedFlowRefInfo;
 import org.apache.beehive.netui.pageflow.internal.ViewRenderer;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
+import org.apache.beehive.netui.pageflow.internal.PageFlowRequestWrapper;
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
 
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
@@ -898,7 +898,7 @@
     {
         if ( _returnActionViewRenderer != null )
         {
-            RequestValues.setViewRenderer( request, _returnActionViewRenderer 
);
+            PageFlowRequestWrapper.get( request ).setViewRenderer( 
_returnActionViewRenderer );
         }
         
         PerRequestState prevState = setPerRequestState( new PerRequestState( 
request, response, mapping ) );

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowManagedObjectException.java
 Thu Feb 17 00:16:50 2005
@@ -19,10 +19,7 @@
 
 import org.apache.beehive.netui.util.Bundle;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import javax.servlet.ServletContext;
 import javax.servlet.ServletRequest;
 import javax.servlet.ServletResponse;
@@ -46,9 +43,9 @@
         init( object );
     }
     
-    protected PageFlowManagedObjectException( PageFlowManagedObject object, 
Throwable cause )
+    protected PageFlowManagedObjectException( PageFlowManagedObject object, 
Throwable rootCause )
     {
-        super( cause );
+        super( rootCause );
         init( object );
     }
     
@@ -106,7 +103,7 @@
         throws IOException
     {
         InternalUtils.sendError( _messageKeyPrefix, getMessageArgs(), request, 
response, null,
-                                 RequestValues.avoidDirectResponseOutput( 
request ) );
+                                 InternalUtils.avoidDirectResponseOutput( 
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&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/PageFlowRequestProcessor.java
 Thu Feb 17 00:16:50 2005
@@ -32,8 +32,8 @@
 import org.apache.beehive.netui.pageflow.internal.FlowControllerAction;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.pageflow.internal.JavaControlUtils;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
 import org.apache.beehive.netui.pageflow.internal.LegacySettings;
+import org.apache.beehive.netui.pageflow.internal.PageFlowRequestWrapper;
 import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
 import org.apache.beehive.netui.pageflow.interceptor.Interceptor;
@@ -116,10 +116,6 @@
     private static final String SCHEME_SECURE = "https";
     private static final String REDIRECT_REQUEST_ATTRS_PREFIX = ATTR_PREFIX + 
"requestAttrs:";
     private static final String REDIRECT_REQUEST_ATTRS_PARAM = "forceRedirect";
-    private static final String FORWARDED_BY_BUTTON_OVERRIDE_ATTR = 
ATTR_PREFIX + "buttonForward";
-    private static final String PROCESS_POPULATE_ALREADY_CALLED_ATTR = 
ATTR_PREFIX + "processPopulateCalled";
-    private static final String MULTIPART_REQUEST_WRAPPER_ATTR = ATTR_PREFIX + 
"multipartWrapper";
-    private static final String PAGEFLOW_SCOPED_FORM_NAME_ATTR = ATTR_PREFIX + 
"pageFlowScopedFormName";
     private static final String FLOW_CONTROLLER_ACTION_CLASSNAME = 
FlowControllerAction.class.getName();
     
     private Map< String, Class > _formBeanClasses = new HashMap< String, Class 
>();
@@ -140,7 +136,7 @@
 
         if ( className != null && className.equals( 
FLOW_CONTROLLER_ACTION_CLASSNAME ) )
         {
-            FlowController fc = RequestValues.getCurrentFlowController( 
request );
+            FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
             assert fc != null : "no FlowController for request " + 
request.getRequestURI();
             assert fc.getClass().getName().equals( 
actionMapping.getParameter() )
                     : "current page flow  type " + fc.getClass().getName() + " 
does not match type specified in "
@@ -223,7 +219,7 @@
             {
                 if ( formMember != null )
                 {
-                    FlowController fc = 
RequestValues.getCurrentFlowController( request );
+                    FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
                     Field field = fc.getClass().getDeclaredField( formMember );
                     field.setAccessible( true );
                     return field;
@@ -253,7 +249,7 @@
         // constructed, and shouldn't be instantiated anew or populated from 
request
         // parameters.
         //
-        ActionForm previousForm = RequestValues.getForwardedForm( request, 
false );
+        ActionForm previousForm = InternalUtils.getForwardedFormBean( request, 
false );
         
         if ( previousForm != null )
         {
@@ -265,7 +261,7 @@
             {
                 try
                 {
-                    FlowController fc = 
RequestValues.getCurrentFlowController( request );
+                    FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
                     assert fc != null : "no FlowController in request " + 
request.getRequestURI();
                     formMemberField.set( fc, InternalUtils.unwrapFormBean(  
previousForm ) );
                 }
@@ -287,11 +283,11 @@
         // First see if the previous action put a pageflow-scoped form in the 
request.  If so, remove it;
         // we don't want a normal request-scoped action to use this 
pageflow-scoped form.
         //
-        String pageFlowScopedFormName = ( String ) request.getAttribute( 
PAGEFLOW_SCOPED_FORM_NAME_ATTR );
+        String pageFlowScopedFormName = PageFlowRequestWrapper.get( request 
).getPageFlowScopedFormName();
         if ( pageFlowScopedFormName != null )
         {
             request.removeAttribute( pageFlowScopedFormName );
-            request.removeAttribute( PAGEFLOW_SCOPED_FORM_NAME_ATTR );
+            PageFlowRequestWrapper.get( request ).setPageFlowScopedFormName( 
null );
         }
         
         //
@@ -301,7 +297,7 @@
         {
             try
             {
-                FlowController fc = RequestValues.getCurrentFlowController( 
request );
+                FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
                 ActionForm form = InternalUtils.wrapFormBean( 
formMemberField.get( fc ) );
                 
                 if ( form == null ) // the pageflow hasn't filled the value yet
@@ -317,9 +313,9 @@
                 // want this form used by another action unless that action 
uses the pageflow-scoped
                 // form.
                 //
-                request.setAttribute( mapping.getAttribute(), form );
-                request.setAttribute( PAGEFLOW_SCOPED_FORM_NAME_ATTR, 
mapping.getAttribute() );
-                
+                String formAttrName = mapping.getAttribute();
+                request.setAttribute( formAttrName, form );
+                PageFlowRequestWrapper.get( request 
).setPageFlowScopedFormName( formAttrName );
                 return form;
             }
             catch ( IllegalAccessException e )
@@ -344,7 +340,7 @@
         //
         // If a previous action forwarded us a form, use that -- don't 
populate it from request parameters.
         //
-        ActionForm previousForm = RequestValues.getForwardedForm( request, 
true );
+        ActionForm previousForm = InternalUtils.getForwardedFormBean( request, 
true );
 
         if ( previousForm != null )
         {
@@ -368,12 +364,9 @@
             request.setAttribute( Globals.MULTIPART_KEY, 
mapping.getMultipartClass() );
         }
 
-        boolean alreadyCalledInRequest = request.getAttribute( 
PROCESS_POPULATE_ALREADY_CALLED_ATTR ) != null;
-
-        if ( ! alreadyCalledInRequest )
-        {
-            request.setAttribute( PROCESS_POPULATE_ALREADY_CALLED_ATTR, 
Boolean.TRUE );
-        }
+        PageFlowRequestWrapper requestWrapper = PageFlowRequestWrapper.get( 
request );
+        boolean alreadyCalledInRequest = 
requestWrapper.isProcessPopulateAlreadyCalled();
+        if ( ! alreadyCalledInRequest ) 
requestWrapper.setProcessPopulateAlreadyCalled( true );
         
         //
         // If this is a forwarded request and the form-bean is null, don't 
call to ProcessPopulate.
@@ -404,9 +397,10 @@
         //
         // TODO: performance?
         //
-        if ( request.getAttribute( FORWARDED_BY_BUTTON_OVERRIDE_ATTR ) == null 
)
+        PageFlowRequestWrapper wrapper = PageFlowRequestWrapper.get( request );
+        if ( ! wrapper.isForwardedByButton() )
         {
-            request.setAttribute( FORWARDED_BY_BUTTON_OVERRIDE_ATTR, 
Boolean.TRUE );
+            wrapper.setForwardedByButton( true );
             
             //
             // First, since we need access to request parameters here, process 
a multipart request
@@ -444,6 +438,12 @@
     private void processInternal( HttpServletRequest request, 
HttpServletResponse response )
             throws IOException, ServletException
     {
+        //
+        // First wrap the request with an object that contains request-scoped 
values that our runtime uses.  This
+        // is faster than sticking everything into attributes on the request 
(then basically reading from a HashMap).
+        //
+        request = InternalUtils.wrapPageFlowRequest( request );
+        
         String uri = InternalUtils.getDecodedServletPath( request );
         ServletContext servletContext = getServletContext();
 
@@ -451,7 +451,7 @@
         // Allow weblogic to do a security check on forwarded requests, if 
that feature is enabled.
         //
         if ( LegacySettings.get( servletContext ).shouldDoSecureForwards()
-             && RequestValues.isForwardedRequest( request ) )
+             && PageFlowRequestWrapper.get( request ).isForwardedRequest() )
         {
             //
             // In some situations (namely, in scoped requests under portal), 
the initial weblogic
@@ -552,11 +552,11 @@
             if ( flowControllerClassName != null )
             {
                 currentFlowController = getFlowController( requestContext, 
flowControllerClassName );
-                RequestValues.setCurrentFlowController( request, 
currentFlowController );
+                PageFlowRequestWrapper.get( request 
).setCurrentFlowController( currentFlowController );
             }
             else
             {
-                RequestValues.removeCurrentFlowController( request );
+                PageFlowRequestWrapper.get( request 
).setCurrentFlowController( null );
             }
         }
         catch ( ClassNotFoundException e )
@@ -867,24 +867,19 @@
      */
     protected HttpServletRequest processMultipart( HttpServletRequest request )
     {
-        if ( ! "POST".equalsIgnoreCase( request.getMethod() ) )
-        {
-            return request;
-        }
+        if ( ! "POST".equalsIgnoreCase( request.getMethod() ) ) return request;
 
         String contentType = request.getContentType();
         if ( contentType != null && contentType.startsWith( 
"multipart/form-data" ) )
         {
+            PageFlowRequestWrapper pageFlowRequestWrapper = 
PageFlowRequestWrapper.get( request );
+            
             //
             // We may have already gotten a multipart wrapper during 
process().  If so, use that.
             //
-            MultipartRequestWrapper cachedWrapper =
-                    ( MultipartRequestWrapper ) request.getAttribute( 
MULTIPART_REQUEST_WRAPPER_ATTR );
+            MultipartRequestWrapper cachedWrapper = 
pageFlowRequestWrapper.getMultipartRequestWrapper();
             
-            if ( cachedWrapper != null && cachedWrapper.getRequest() == 
request )
-            {
-                return cachedWrapper;
-            }
+            if ( cachedWrapper != null && cachedWrapper.getRequest() == 
request ) return cachedWrapper;
             
             try
             {
@@ -901,7 +896,7 @@
             }
             
             MultipartRequestWrapper ret = new 
RehydratedMultipartRequestWrapper( request );
-            request.setAttribute( MULTIPART_REQUEST_WRAPPER_ATTR, ret );
+            pageFlowRequestWrapper.setMultipartRequestWrapper( ret );
             return ret;
         }
         else
@@ -1020,7 +1015,7 @@
         {
             if ( ! TokenProcessor.getInstance().isTokenValid( request, true ) )
             {
-                FlowController currentFC = 
RequestValues.getCurrentFlowController( request );
+                FlowController currentFC = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
                 String actionName = InternalUtils.getActionName( mapping );
                 DoubleSubmitException ex = new DoubleSubmitException( 
actionName, currentFC );
                 
@@ -1170,8 +1165,8 @@
     public ActionMapping processMapping( HttpServletRequest request, 
HttpServletResponse response, String path )
         throws IOException
     {
-        FlowController fc = RequestValues.getCurrentFlowController( request );
-        Object forwardedForm = InternalUtils.unwrapFormBean( 
RequestValues.getForwardedForm( request, false ) );
+        FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
+        Object forwardedForm = InternalUtils.unwrapFormBean( 
InternalUtils.getForwardedFormBean( request, false ) );
         
         //
         // First, see if this is a request for a shared flow action.  The 
shared flow's name (as declared by the
@@ -1267,10 +1262,10 @@
         }
 
         //
-        // RequestValues.getOriginalServletPath returns the request URI we had 
before trying to forward to an action
+        // PageFlowRequestWrapper.get( request ).getOriginalServletPath 
returns the request URI we had before trying to forward to an action
         // in a shared flow.
         //
-        String errorServletPath = RequestValues.getOriginalServletPath( 
request );
+        String errorServletPath = PageFlowRequestWrapper.get( request 
).getOriginalServletPath();
         
         if ( errorServletPath == null
              && InternalUtils.getModuleConfig( GLOBALAPP_MODULE_CONTEXT_PATH, 
getServletContext() ) != null )
@@ -1284,7 +1279,7 @@
             // We haven't tried the deprecated Global.app fallback yet.  Try 
it now.
             //
             errorServletPath = InternalUtils.getDecodedServletPath( request );
-            RequestValues.setOriginalServletPath( request, errorServletPath );
+            PageFlowRequestWrapper.get( request ).setOriginalServletPath( 
errorServletPath );
             String globalAppURI = GLOBALAPP_MODULE_CONTEXT_PATH + path + 
ACTION_EXTENSION;
             try
             {
@@ -1332,7 +1327,7 @@
                     // 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 ) );
+                    PageFlowRequestWrapper.get( request 
).setOriginalServletPath( InternalUtils.getDecodedServletPath( request ) );
                     
                     //
                     // Construct a URI that is [shared flow module path] + 
[base action path] + [action-extension (.do)]
@@ -1377,7 +1372,7 @@
         // message.
         //
         FlowController fc = PageFlowUtils.getCurrentPageFlow( request );
-        if ( fc == null ) fc = RequestValues.getCurrentFlowController( request 
);
+        if ( fc == null ) fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
         
         try
         {
@@ -1420,7 +1415,7 @@
         }
 
         // Check the current user against the list of required roles
-        FlowController fc = RequestValues.getCurrentFlowController( request );
+        FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
         FlowControllerHandlerContext context = new 
FlowControllerHandlerContext( request, response, fc );
         
         for ( int i = 0; i < roles.length; i++ )
@@ -1447,7 +1442,7 @@
         //
         LoginHandler loginHandler = _handlers.getLoginHandler();
         String actionName = InternalUtils.getActionName( mapping );
-        FlowController currentFC = RequestValues.getCurrentFlowController( 
request );
+        FlowController currentFC = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
         PageFlowException ex;
         
         if ( loginHandler.getUserPrincipal( context ) == null )
@@ -1497,7 +1492,7 @@
     {
         ServletContext servletContext = getServletContext();
         ForwardRedirectHandler fwdRedirectHandler = 
_handlers.getForwardRedirectHandler();
-        FlowController fc = RequestValues.getCurrentFlowController( request );
+        FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
         FlowControllerHandlerContext context = new 
FlowControllerHandlerContext( request, response, fc );
 
         //
@@ -1679,7 +1674,7 @@
             return;
         }
         
-        FlowController fc = RequestValues.getCurrentFlowController( request );
+        FlowController fc = PageFlowRequestWrapper.get( request 
).getCurrentFlowController();
         FlowControllerHandlerContext context = new 
FlowControllerHandlerContext( request, response, fc );
 
         if ( _legacySettings.shouldDoSecureForwards() )
@@ -1919,7 +1914,7 @@
             //
             // Run any before-action interceptors.
             //
-            if ( interceptors != null && ! 
RequestValues.isReturningFromActionIntercept( request ) )
+            if ( interceptors != null && ! PageFlowRequestWrapper.get( request 
).isReturningFromActionIntercept() )
             {
                 Interceptors.doPreIntercept( context, interceptors );
                 
@@ -1939,7 +1934,7 @@
             }
             else
             {
-                RequestValues.setReturningFromActionIntercept( request, false 
);
+                PageFlowRequestWrapper.get( request 
).setReturningFromActionIntercept( false );
             }
             
             //

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&r1=154137&r2=154138
==============================================================================
--- 
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
 Thu Feb 17 00:16:50 2005
@@ -25,9 +25,9 @@
 import org.apache.beehive.netui.pageflow.config.PageFlowActionFormBean;
 import org.apache.beehive.netui.pageflow.internal.ActionResultImpl;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
 import org.apache.beehive.netui.pageflow.internal.InternalConstants;
 import org.apache.beehive.netui.pageflow.internal.AdapterManager;
+import org.apache.beehive.netui.pageflow.internal.PageFlowRequestWrapper;
 import org.apache.beehive.netui.pageflow.scoping.ScopedRequest;
 import org.apache.beehive.netui.pageflow.scoping.ScopedResponse;
 import org.apache.beehive.netui.pageflow.scoping.ScopedServletUtils;
@@ -50,6 +50,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequestWrapper;
 import java.io.PrintStream;
 import java.net.URISyntaxException;
 import java.util.Collections;
@@ -362,7 +363,7 @@
         //
         if ( mapping != null ) setOutputForms( mapping, fwd.getOutputForms(), 
request, overwrite );
         
-        RequestValues.setForwardedFormBean( request, fwd.getFirstOutputForm( 
request ) );
+        InternalUtils.setForwardedFormBean( request, fwd.getFirstOutputForm( 
request ) );
     }
     
     /**
@@ -386,7 +387,7 @@
             setOutputForms( mapping, fwd.getOutputForms(), request );
         }
 
-        RequestValues.setForwardedFormBean( request, fwd.getFirstOutputForm( 
request ) );
+        InternalUtils.setForwardedFormBean( request, fwd.getFirstOutputForm( 
request ) );
     }
 
     /**
@@ -885,14 +886,15 @@
         ScopedResponse scopedResponse = ScopedServletUtils.unwrapResponse( 
response );
         assert scopedRequest != null : request.getClass().getName();
         assert scopedResponse != null : response.getClass().getName();
+        assert request instanceof HttpServletRequest : 
request.getClass().getName();
         
         if ( scopedRequest == null )
         {
-            throw new IllegalStateException( "request must be of type " + 
ScopedRequest.class.getName() );
+            throw new IllegalArgumentException( "request must be of type " + 
ScopedRequest.class.getName() );
         }
         if ( scopedResponse == null )
         {
-            throw new IllegalStateException( "response must be of type " + 
ScopedResponse.class.getName() );
+            throw new IllegalArgumentException( "response must be of type " + 
ScopedResponse.class.getName() );
         }
         
         ActionServlet as = InternalUtils.getActionServlet( context );
@@ -918,13 +920,13 @@
         // In case the request was already forwarded once, clear out the 
recorded forwarded-URI.  This
         // will allow us to tell whether processing the request actually 
forwarded somewhere.
         //
-        assert request instanceof ScopedRequestImpl : 
request.getClass().getName();
-        ( ( ScopedRequestImpl ) request ).setForwardedURI( null );
+        scopedRequest.setForwardedURI( null );
         
         //
-        // Now process the request.
+        // Now process the request.  We create a PageFlowRequestWrapper for 
pageflow-specific request-scoped info.
         //
-        as.doGet( scopedRequest, scopedResponse );  // this just calls 
process() -- same as doPost()
+        PageFlowRequestWrapper wrappedRequest = 
InternalUtils.wrapPageFlowRequest( ( HttpServletRequest ) request );
+        as.doGet( wrappedRequest, scopedResponse );  // this just calls 
process() -- same as doPost()
 
         String returnURI;
 
@@ -944,7 +946,7 @@
                     if ( FileUtils.uriEndsWith( returnURI, 
autoResolveExtensions[i] ) )
                     {
                         scopedRequest.doForward();
-                        return strutsLookup( context, scopedRequest, 
scopedResponse, null, autoResolveExtensions );
+                        return strutsLookup( context, wrappedRequest, 
scopedResponse, null, autoResolveExtensions );
                     }
                 }
             }

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/BackingClassMethodBinding.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/BackingClassMethodBinding.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/BackingClassMethodBinding.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/BackingClassMethodBinding.java
 Thu Feb 17 00:16:50 2005
@@ -18,7 +18,6 @@
 package org.apache.beehive.netui.pageflow.faces.internal;
 
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 
 import javax.faces.el.MethodBinding;
@@ -108,7 +107,7 @@
                                         Field field = 
backingClass.getDeclaredField( formBeanMember );
                                         field.setAccessible( true );
                                         Object value = field.get( backingBean 
);
-                                        RequestValues.setForwardedFormBean( 
httpRequest, InternalUtils.wrapFormBean( value ) );
+                                        InternalUtils.setForwardedFormBean( 
httpRequest, InternalUtils.wrapFormBean( value ) );
                                     }
                                     catch ( NoSuchFieldException e )
                                     {

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowActionListener.java
 Thu Feb 17 00:16:50 2005
@@ -17,7 +17,6 @@
  */
 package org.apache.beehive.netui.pageflow.faces.internal;
 
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.struts.action.ActionForm;
 
@@ -26,7 +25,6 @@
 import javax.faces.event.AbortProcessingException;
 import javax.faces.context.FacesContext;
 import javax.faces.el.ValueBinding;
-import javax.faces.component.UIComponent;
 import javax.servlet.ServletRequest;
 
 public class PageFlowActionListener
@@ -53,7 +51,7 @@
             if ( request instanceof ServletRequest )
             {
                 ActionForm wrappedFormBean = InternalUtils.wrapFormBean( 
beanInstance );
-                RequestValues.setForwardedFormBean( ( ServletRequest ) 
request, wrappedFormBean );
+                InternalUtils.setForwardedFormBean( ( ServletRequest ) 
request, wrappedFormBean );
             }
         }
         

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowViewHandler.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowViewHandler.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowViewHandler.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/faces/internal/PageFlowViewHandler.java
 Thu Feb 17 00:16:50 2005
@@ -20,8 +20,7 @@
 import org.apache.beehive.netui.pageflow.PageFlowUtils;
 import org.apache.beehive.netui.pageflow.PageFlowController;
 import org.apache.beehive.netui.pageflow.PreviousPageInfo;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
-import org.apache.beehive.netui.util.ServletUtils;
+import org.apache.beehive.netui.pageflow.internal.PageFlowRequestWrapper;
 import org.apache.beehive.netui.util.FileUtils;
 
 import javax.faces.application.ViewHandler;
@@ -69,7 +68,7 @@
         if ( request instanceof HttpServletRequest )
         {
             httpRequest = ( HttpServletRequest ) request;
-            PreviousPageInfo prevPageInfo = RequestValues.getPreviousPageInfo( 
httpRequest, true );
+            PreviousPageInfo prevPageInfo = PageFlowRequestWrapper.get( 
httpRequest ).getPreviousPageInfo( true );
             
             if ( prevPageInfo != null )
             {

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultActionForwardHandler.java
 Thu Feb 17 00:16:50 2005
@@ -29,7 +29,6 @@
 import org.apache.beehive.netui.pageflow.*;
 import org.apache.beehive.netui.pageflow.handler.FlowControllerHandlerContext;
 import org.apache.beehive.netui.pageflow.handler.ActionForwardHandler;
-import org.apache.beehive.netui.pageflow.handler.Handlers;
 import org.apache.beehive.netui.util.logging.Logger;
 import org.apache.beehive.netui.script.common.ImplicitObjectUtil;
 
@@ -214,7 +213,7 @@
         assert context.getResponse() instanceof HttpServletResponse : "don't 
support ServletResponse currently.";
         HttpServletRequest request = ( HttpServletRequest ) 
context.getRequest();
         HttpServletResponse response = ( HttpServletResponse ) 
context.getResponse();
-        ViewRenderer vr = RequestValues.getViewRenderer( request );
+        ViewRenderer vr = PageFlowRequestWrapper.get( request 
).getViewRenderer();
         
         if ( vr != null )
         {
@@ -352,7 +351,7 @@
             }
         }
         
-        RequestValues.setPreviousPageInfo( request, prevPageInfo );
+        PageFlowRequestWrapper.get( request ).setPreviousPageInfo( 
prevPageInfo );
         return retFwd;
     }
     
@@ -516,7 +515,7 @@
         ActionForm retForm = pageFlowFwd.getFirstOutputForm( request );
         if ( retForm != null )
         {
-            RequestValues.setForwardedFormBean( request, retForm );
+            InternalUtils.setForwardedFormBean( request, retForm );
             ImplicitObjectUtil.loadOutputFormBean( request, 
InternalUtils.unwrapFormBean( retForm ) );
         }
                 
@@ -542,7 +541,7 @@
         HttpServletRequest request = ( HttpServletRequest ) 
context.getRequest();
         HttpServletResponse response = ( HttpServletResponse ) 
context.getResponse();
         
-        RequestValues.setReturningFromActionIntercept( request, true );
+        PageFlowRequestWrapper.get( request ).setReturningFromActionIntercept( 
true );
         
         try
         {

Modified: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/DefaultForwardRedirectHandler.java
 Thu Feb 17 00:16:50 2005
@@ -66,7 +66,7 @@
                 context.getResponse().getClass().getName() + " does not 
implement HttpServletResponse";
         HttpServletRequest request = ( HttpServletRequest ) 
context.getRequest();
         HttpServletResponse response = ( HttpServletResponse ) 
context.getResponse();
-        int requestCount = RequestValues.getForwardedRequestCount( request );
+        int requestCount = PageFlowRequestWrapper.get( request 
).getForwardedRequestCount();
         
         //
         // See if we've exceeded the maximum number of forwards.
@@ -97,12 +97,7 @@
         //
         // We're OK -- do the forward.
         //
-        RequestValues.setForwardedRequestCount( request, requestCount + 1 );
-        
-        
-        //
-        // The following is a replacement for RequestDispatcher.doForward().
-        //
+        PageFlowRequestWrapper.get( request ).setForwardedRequestCount( 
requestCount + 1 );
         
         // Unwrap the multipart request, if there is one.
         if ( request instanceof MultipartRequestWrapper )

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&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/InternalUtils.java
 Thu Feb 17 00:16:50 2005
@@ -42,6 +42,7 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpServletRequestWrapper;
 import java.io.IOException;
 import java.lang.reflect.Method;
 import java.util.HashMap;
@@ -66,6 +67,8 @@
     private static final String BINDING_UPDATE_ERRORS_ATTR = ATTR_PREFIX + 
"bindingUpdateErrors";
     private static final String SHARED_FLOW_CLASSNAME_ATTR = ATTR_PREFIX + 
"sharedFlowClass";
     private static final String SERVLET_CONTEXT_ATTR = ATTR_PREFIX + 
"servletContext";
+    private static final String AVOID_DIRECT_RESPONSE_OUTPUT_ATTR = 
ATTR_PREFIX + "_avoidDirectResponseOutput";
+    private static final String FORWARDED_FORMBEAN_ATTR = ATTR_PREFIX + 
"forwardedForm";
     
     
     /**
@@ -88,7 +91,7 @@
             throws IOException
     {
         boolean prodMode = AdapterManager.getServletContainerAdapter( 
servletContext ).isInProductionMode();
-        boolean avoidDirectResponseOutput = 
RequestValues.avoidDirectResponseOutput( request );
+        boolean avoidDirectResponseOutput = avoidDirectResponseOutput( request 
);
         
         if ( prodMode && ! avoidDirectResponseOutput && response instanceof 
HttpServletResponse )
         {
@@ -115,7 +118,7 @@
     {
         // TODO: the following null check will be unnecessary once the 
deprecated 
         // FlowController.sendError(String, HttpServletResponse) is removed.
-        boolean avoidDirectResponseOutput = request != null ? 
RequestValues.avoidDirectResponseOutput( request ) : false;
+        boolean avoidDirectResponseOutput = request != null ? 
avoidDirectResponseOutput( request ) : false;
         sendError( messageKey, messageArgs, request, response, cause, 
avoidDirectResponseOutput );
     }
     
@@ -946,5 +949,77 @@
         //
         ModuleConfig config = ( ModuleConfig ) request.getAttribute( 
Globals.MODULE_KEY );
         return config != null ? config.getPrefix() : 
PageFlowUtils.getModulePath( request );
+    }
+    
+    /**
+     * Set the forwarded form.  This overrides the auto-generated form created 
by processActionForm
+     * and populated by processPopulate (in PageFlowRequestProcessor).
+     */ 
+    public static void setForwardedFormBean( ServletRequest request, 
ActionForm form )
+    {
+        if ( form == null )
+        {
+            request.removeAttribute( FORWARDED_FORMBEAN_ATTR );
+        }
+        else
+        {
+            request.setAttribute( FORWARDED_FORMBEAN_ATTR, form );
+        }
+    }
+    
+    public static ActionForm getForwardedFormBean( ServletRequest request, 
boolean removeFromRequest )
+    {
+        ActionForm form = ( ActionForm ) request.getAttribute( 
FORWARDED_FORMBEAN_ATTR );
+        if ( removeFromRequest ) request.removeAttribute( 
FORWARDED_FORMBEAN_ATTR );
+        return form;
+    }
+    
+    /**
+     * Tell whether a special request attribute was set, indicating that we 
should avoid writing to the response (or
+     * setting response error codes).
+     */ 
+    public static boolean avoidDirectResponseOutput( ServletRequest request )
+    {
+        Boolean avoid = ( Boolean ) request.getAttribute( 
AVOID_DIRECT_RESPONSE_OUTPUT_ATTR );
+        return avoid != null && avoid;
+    }
+
+    /**
+     * Set a special request attribute to indicate that we should avoid 
writing to the response (or
+     * setting response error codes).
+     */ 
+    public static void setAvoidDirectResponseOutput( ServletRequest request )
+    {
+        request.setAttribute( AVOID_DIRECT_RESPONSE_OUTPUT_ATTR, Boolean.TRUE 
);
+    }
+    
+    public static PageFlowRequestWrapper wrapPageFlowRequest( 
HttpServletRequest request )
+    {
+        PageFlowRequestWrapper retVal;
+        if ( request instanceof PageFlowRequestWrapper )
+        {
+            retVal = ( PageFlowRequestWrapper ) request;
+        }
+        else
+        {
+            retVal = new PageFlowRequestWrapper( request );
+        }
+        
+        //
+        // If there's *any* PageFlowRequestWrapper up the chain of wrapped 
requests, we must copy values from that.
+        //
+        ServletRequest j = retVal.getRequest();
+        while ( j instanceof HttpServletRequestWrapper )
+        {
+            if ( j instanceof PageFlowRequestWrapper )
+            {
+                retVal.initFrom( ( PageFlowRequestWrapper ) j );
+                break;
+            }
+            
+            j = ( ( HttpServletRequestWrapper ) j ).getRequest();
+        }
+        
+        return retVal;
     }
 }

Added: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java?view=auto&rev=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
 (added)
+++ 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
 Thu Feb 17 00:16:50 2005
@@ -0,0 +1,174 @@
+/*
+ * 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.FlowController;
+import org.apache.beehive.netui.pageflow.PreviousPageInfo;
+import org.apache.struts.upload.MultipartRequestWrapper;
+
+import javax.servlet.http.HttpServletRequestWrapper;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.ServletRequest;
+
+public final class PageFlowRequestWrapper
+        extends HttpServletRequestWrapper
+{
+    private static final class State
+    {
+        public Integer forwardedRequestCount;
+        public String originalServletPath;
+        public FlowController currentFlowController;
+        public ViewRenderer viewRenderer;
+        public PreviousPageInfo previousPageInfo;
+        public boolean returningFromActionIntercept = false;
+        public String pageFlowScopedFormName;
+        public boolean processPopulateAlreadyCalled = false;
+        public boolean forwardedByButton = false;
+        public MultipartRequestWrapper multipartRequestWrapper;
+    }
+    
+    private State _state = new State();
+    
+    public static PageFlowRequestWrapper get( ServletRequest servletRequest )
+    {
+        assert servletRequest instanceof PageFlowRequestWrapper : 
servletRequest.getClass().getName();
+        return ( PageFlowRequestWrapper ) servletRequest;
+    }
+    
+    public void initFrom( PageFlowRequestWrapper wrapper )
+    {
+        _state = wrapper._state;
+    }
+    
+    public PageFlowRequestWrapper( HttpServletRequest delegate )
+    {
+        super( delegate );
+    }
+    
+    public boolean isForwardedRequest()
+    {
+        return _state.forwardedRequestCount != null;
+    }
+    
+    public int getForwardedRequestCount()
+    {
+        return _state.forwardedRequestCount != null ? 
_state.forwardedRequestCount : 0;
+    }
+    
+    public void setForwardedRequestCount( int count )
+    {
+        _state.forwardedRequestCount = count;
+    }
+
+    public String getOriginalServletPath()
+    {
+        return _state.originalServletPath;
+    }
+
+    public void setOriginalServletPath( String originalServletPath )
+    {
+        _state.originalServletPath = originalServletPath;
+    }
+
+    public FlowController getCurrentFlowController()
+    {
+        return _state.currentFlowController;
+    }
+
+    public void setCurrentFlowController( FlowController currentFlowController 
)
+    {
+        _state.currentFlowController = currentFlowController;
+    }
+
+    public ViewRenderer getViewRenderer()
+    {
+        return _state.viewRenderer;
+    }
+
+    public void setViewRenderer( ViewRenderer viewRenderer )
+    {
+        _state.viewRenderer = viewRenderer;
+    }
+
+    public PreviousPageInfo getPreviousPageInfo( boolean remove )
+    {
+        PreviousPageInfo retVal = _state.previousPageInfo;
+        if ( remove ) _state.previousPageInfo = null;
+        return retVal;
+    }
+
+    public void setPreviousPageInfo( PreviousPageInfo previousPageInfo )
+    {
+        _state.previousPageInfo = previousPageInfo;
+    }
+
+    public boolean isReturningFromActionIntercept()
+    {
+        return _state.returningFromActionIntercept;
+    }
+
+    public void setReturningFromActionIntercept( boolean 
returningFromActionIntercept )
+    {
+        _state.returningFromActionIntercept = returningFromActionIntercept;
+    }
+
+    public HttpServletRequest getRequest()
+    {
+        return ( HttpServletRequest ) super.getRequest();
+    }
+    
+    public String getPageFlowScopedFormName()
+    {
+        return _state.pageFlowScopedFormName;
+    }
+    
+    public void setPageFlowScopedFormName( String pageFlowScopedFormName )
+    {
+        _state.pageFlowScopedFormName = pageFlowScopedFormName;
+    }
+    
+    public boolean isProcessPopulateAlreadyCalled()
+    {
+        return _state.processPopulateAlreadyCalled;
+    }
+    
+    public void setProcessPopulateAlreadyCalled( boolean 
processPopulateAlreadyCalled )
+    {
+        _state.processPopulateAlreadyCalled = processPopulateAlreadyCalled;
+    }
+    
+    public boolean isForwardedByButton()
+    {
+        return _state.forwardedByButton;
+    }
+    
+    public void setForwardedByButton( boolean forwardedByButton )
+    {
+        _state.forwardedByButton = forwardedByButton;
+    }
+    
+    public MultipartRequestWrapper getMultipartRequestWrapper()
+    {
+        return _state.multipartRequestWrapper;
+    }
+    
+    public void setMultipartRequestWrapper( MultipartRequestWrapper 
multipartRequestWrapper )
+    {
+        _state.multipartRequestWrapper = multipartRequestWrapper;
+    }
+}

Propchange: 
incubator/beehive/trunk/netui/src/pageflow/org/apache/beehive/netui/pageflow/internal/PageFlowRequestWrapper.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: 
incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedRequest.java
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedRequest.java?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedRequest.java
 (original)
+++ 
incubator/beehive/trunk/netui/src/scoping/org/apache/beehive/netui/pageflow/scoping/ScopedRequest.java
 Thu Feb 17 00:16:50 2005
@@ -90,4 +90,9 @@
      * @exclude
      */ 
     public Map filterParameterMap( Map parameterMap );
+    
+    /**
+     * Simply stores the URI that was being forwarded to.
+     */
+    public void setForwardedURI( String uri );
 }

Modified: 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/updateFormFromNestedPopup/Controller.jpf
URL: 
http://svn.apache.org/viewcvs/incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/updateFormFromNestedPopup/Controller.jpf?view=diff&r1=154137&r2=154138
==============================================================================
--- 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/updateFormFromNestedPopup/Controller.jpf
 (original)
+++ 
incubator/beehive/trunk/netui/test/webapps/drt/coreWeb/miniTests/updateFormFromNestedPopup/Controller.jpf
 Thu Feb 17 00:16:50 2005
@@ -4,7 +4,6 @@
 import org.apache.beehive.netui.pageflow.Forward;
 import org.apache.beehive.netui.pageflow.PageFlowController;
 import org.apache.beehive.netui.pageflow.internal.ViewRenderer;
-import org.apache.beehive.netui.pageflow.internal.RequestValues;
 import org.apache.beehive.netui.pageflow.internal.InternalUtils;
 import org.apache.beehive.netui.pageflow.annotations.Jpf;
 


Reply via email to