jmcnally    01/12/03 21:00:39

  Modified:    src/java/org/apache/turbine RunData.java Turbine.java
                        TurbineConstants.java
  Log:
  added some code to allow the use of a RunData object for multiple invocations of
  Turbine within a single request.  the scenario involves a separate app calling
  Turbine multiple times.  It is important that to the callee app the process
  appears as a normal request.  One problem that needed to be solved was
  Turbine's assumption that the request and response objects will not change.
  Turbine can be called multiple times within one request cycle, but the actual
  objects might change (using wrappers).
  
  Revision  Changes    Path
  1.5       +3 -1      jakarta-turbine-3/src/java/org/apache/turbine/RunData.java
  
  Index: RunData.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/RunData.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- RunData.java      2001/10/14 01:03:16     1.4
  +++ RunData.java      2001/12/04 05:00:39     1.5
  @@ -79,7 +79,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jon S. Stevens</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Bernie Hoeneisen</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Daniel Rall</a>
  - * @version $Id: RunData.java,v 1.4 2001/10/14 01:03:16 jon Exp $
  + * @version $Id: RunData.java,v 1.5 2001/12/04 05:00:39 jmcnally Exp $
    */
   public interface RunData
   {
  @@ -459,4 +459,6 @@
       public void setServerPort(int serverPort);
       public void setScriptName(String scriptName);
       public void setContextPath(String contextPath);
  +    public void setRequest(HttpServletRequest req);
  +    public void setResponse(HttpServletResponse res);
   }
  
  
  
  1.13      +20 -4     jakarta-turbine-3/src/java/org/apache/turbine/Turbine.java
  
  Index: Turbine.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/Turbine.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Turbine.java      2001/11/13 19:45:08     1.12
  +++ Turbine.java      2001/12/04 05:00:39     1.13
  @@ -111,7 +111,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Rafal Krzewski</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Jason van Zyl</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Daniel Rall</a>
  - * @version $Id: Turbine.java,v 1.12 2001/11/13 19:45:08 mikeh Exp $
  + * @version $Id: Turbine.java,v 1.13 2001/12/04 05:00:39 jmcnally Exp $
    */
   public class Turbine
       extends HttpServlet
  @@ -246,7 +246,20 @@
   
               // Get general RunData here...
               // Perform turbine specific initialization below.
  -            data = runDataService.getRunData(req, res, getServletConfig());
  +            // look for a RunData in the request, in the event this servlet
  +            // was called from another servlet that already started 
  +            // processing the request
  +            data = (RunData)req.getAttribute(RUNDATA_REQUEST_KEY);
  +            if ( data == null ) 
  +            {
  +                data = runDataService.getRunData(req, res, getServletConfig());
  +            }
  +            else 
  +            {
  +                data.setRequest(req);
  +                data.setResponse(res);
  +            }
  +            
   
               // If this is the first invocation, perform some
               // initialization.  Certain services need RunData to initialize
  @@ -323,8 +336,11 @@
               {
               }
   
  -            // Return the used RunData to the factory for recycling.
  -            runDataService.putRunData(data);
  +            if ( req.getAttribute(RUNDATA_REQUEST_KEY) == null ) 
  +            {
  +                // Return the used RunData to the factory for recycling.
  +                runDataService.putRunData(data);
  +            }
           }
       }
   
  
  
  
  1.9       +4 -0      
jakarta-turbine-3/src/java/org/apache/turbine/TurbineConstants.java
  
  Index: TurbineConstants.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-3/src/java/org/apache/turbine/TurbineConstants.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TurbineConstants.java     2001/11/15 16:10:28     1.8
  +++ TurbineConstants.java     2001/12/04 05:00:39     1.9
  @@ -331,4 +331,8 @@
        * configuration subset
        */
       public static final String SYSTEM = "system";
  +
  +
  +    public static final String RUNDATA_REQUEST_KEY = 
  +        "org.apache.turbine.RunData.request.key";
   }
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to