You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by jm...@apache.org on 2001/12/04 06:00:39 UTC

cvs commit: jakarta-turbine-3/src/java/org/apache/turbine RunData.java Turbine.java TurbineConstants.java

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:jon@clearink.com">Jon S. Stevens</a>
    * @author <a href="mailto:bhoeneis@ee.ethz.ch">Bernie Hoeneisen</a>
    * @author <a href="mailto:dlr@finemaltcoding.com">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:krzewski@e-point.pl">Rafal Krzewski</a>
    * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
    * @author <a href="mailto:dlr@finemaltcoding.com">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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>