You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by gr...@apache.org on 2001/03/01 17:24:24 UTC

cvs commit: xml-cocoon/src/org/apache/cocoon/response HttpServletResponseFacade.java

greenrd     01/03/01 08:24:23

  Modified:    .        changes.xml todo.xml
               src/org/apache/cocoon cocoon.properties Engine.java
               src/org/apache/cocoon/response
                        HttpServletResponseFacade.java
  Log:
  configurable redirect semantics
  
  Revision  Changes    Path
  1.215     +5 -1      xml-cocoon/changes.xml
  
  Index: changes.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/changes.xml,v
  retrieving revision 1.214
  retrieving revision 1.215
  diff -u -r1.214 -r1.215
  --- changes.xml	2001/03/01 16:05:31	1.214
  +++ changes.xml	2001/03/01 16:24:16	1.215
  @@ -4,7 +4,7 @@
   
   <!--
     History of Cocoon changes   
  -  $Id: changes.xml,v 1.214 2001/03/01 16:05:31 greenrd Exp $ 
  +  $Id: changes.xml,v 1.215 2001/03/01 16:24:16 greenrd Exp $ 
   -->
   
   <changes title="History of Changes">
  @@ -18,6 +18,10 @@
     </devs>
   
    <release version="@version@" date="@date@">
  +  <action dev="RDG" type="add" due-to="Donald Ball" due-to-email="balld@webslingerZ.com">
  +   Added "fastcutoff" setting to cocoon.properties to control sendRedirect,
  +   getOutputStream and getWriter behaviour for maximum flexibility and backward compatibility.
  +  </action>
     <action dev="RDG" type="update" due-to="Kelly Campbell" due-to-email="camk@merlot.channelpoint.com">
      Updated Cocoon for compatibility with FOP 0.16 and above. Backward compatibility to at least FOP 0.13
      is still maintained.
  
  
  
  1.73      +1 -4      xml-cocoon/todo.xml
  
  Index: todo.xml
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/todo.xml,v
  retrieving revision 1.72
  retrieving revision 1.73
  diff -u -r1.72 -r1.73
  --- todo.xml	2001/03/01 16:05:32	1.72
  +++ todo.xml	2001/03/01 16:24:17	1.73
  @@ -3,7 +3,7 @@
   <!DOCTYPE todo SYSTEM "./xdocs/dtd/todo-v10.dtd">
   
   <!--
  -  $Id: todo.xml,v 1.72 2001/03/01 16:05:32 greenrd Exp $
  +  $Id: todo.xml,v 1.73 2001/03/01 16:24:17 greenrd Exp $
   -->
   
   <todo title="Things To Do for Cocoon 1.x">
  @@ -19,9 +19,6 @@
     <action context="code" bugid="11">
      NEEDED URGENTLY FOR TOMCAT 3.3 - because CLASSPATH will be ignored!
      Add standard WEB-INF/classes and WEB-INF/lib to XSP classpath.
  -  </action>
  -  <action context="code" assigned-to="RDG">
  -   Make redirect semantics configurable in cocoon.properties
     </action>
     <action context="code" assigned-to="RDG" bugid="25">
      Fix redundant XSP namespace declarations output quirk/bugs.
  
  
  
  1.52      +11 -2     xml-cocoon/src/org/apache/cocoon/cocoon.properties
  
  Index: cocoon.properties
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/cocoon.properties,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- cocoon.properties	2001/01/27 14:15:24	1.51
  +++ cocoon.properties	2001/03/01 16:24:19	1.52
  @@ -23,6 +23,14 @@
   # or return the HTTP error code to the web server and let it handle it.
   handle.errors.internally = true
   
  +# If the fastcutoff flag is set to true, the Cocoon engine will stop 
  +# immediately after a producer, processor or XSP page that calls either
  +# sendRedirect, getOutputStream or getWriter.
  +# In Tomcat 3.1 it is necessary to set this flag to avoid an intermittent
  +# redirect problem. For other servlet engines, it may or may not be 
  +# necessary, but it should increase performance.
  +fastcutoff = true
  +
   # Indicates the log severity level
   #log.level = emergency
   #log.level = critical
  @@ -189,8 +197,9 @@
   processor.xsp.logicsheet.esql.java      = resource://org/apache/cocoon/processor/xsp/library/sql/esql.xsl
   processor.xsp.logicsheet.fp.java       = resource://org/apache/cocoon/processor/xsp/library/fp/fp.xsl
   
  -# Turbine DB Connection Pool
  -############################
  +##############################
  +# Turbine DB Connection Pool #
  +##############################
   
   # These are your database settings, look in the
   # org.apache.turbine.util.db.pool.* package for more information.
  
  
  
  1.54      +11 -5     xml-cocoon/src/org/apache/cocoon/Engine.java
  
  Index: Engine.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/Engine.java,v
  retrieving revision 1.53
  retrieving revision 1.54
  diff -u -r1.53 -r1.54
  --- Engine.java	2001/03/01 16:05:35	1.53
  +++ Engine.java	2001/03/01 16:24:20	1.54
  @@ -1,4 +1,4 @@
  -/*-- $Id: Engine.java,v 1.53 2001/03/01 16:05:35 greenrd Exp $ --
  +/*-- $Id: Engine.java,v 1.54 2001/03/01 16:24:20 greenrd Exp $ --
   
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -76,7 +76,7 @@
    *
    * @author <a href="mailto:stefano@apache.org">Stefano Mazzocchi</a>
    * @author <a href="mailto:greenrd@hotmail.com">Robin Green</a>
  - * @version $Revision: 1.53 $ $Date: 2001/03/01 16:05:35 $
  + * @version $Revision: 1.54 $ $Date: 2001/03/01 16:24:20 $
    */
   
   public class Engine implements Defaults {
  @@ -88,7 +88,7 @@
       };
   
       private Block blocker = new Block();
  -    private boolean VERBOSE, PROFILE, LASTMODIFIED;
  +    private boolean VERBOSE, PROFILE, LASTMODIFIED, FAST_CUTOFF;
   
       private static Hashtable engineInstances = new Hashtable(2, 0.90f);
   
  @@ -186,6 +186,7 @@
   
           VERBOSE = configurations.get ("verbosity", "false").equals ("true");
           LASTMODIFIED = configurations.get ("lastmodified", "true").equals ("true");
  +        FAST_CUTOFF = configurations.get ("fastcutoff", "true").equals ("true");
   
           // If enabled, create the profiler and register it
           PROFILE = configurations.get ("profiler.enabled", "false").equals ("true");
  @@ -349,7 +350,7 @@
                           if (PROFILE) profiler.startEvent (requestMarker, producer.getClass ());
                           Document document = producer.getDocument(request);
                           if (PROFILE) profiler.finishEvent (requestMarker, producer.getClass ());
  -                        if (((HttpServletResponseFacade) response).hasRedirected) throw new RedirectException ();
  +                        redirectCheck (response);
   
                           if (LOG) logger.log(this, "Document produced", Logger.DEBUG);
   
  @@ -375,7 +376,7 @@
                               document = processor.process(document, environment);
                               page.setChangeable(processor);
                               if (PROFILE) profiler.finishEvent (requestMarker, processDesc);
  -                            if (((HttpServletResponseFacade) response).hasRedirected) throw new RedirectException ();
  +                            redirectCheck (response);
                               if (LOG) logger.log(this, "Document processed", Logger.DEBUG);
                           }
   
  @@ -492,6 +493,11 @@
               }
           }
   
  +    }
  +
  +    private void redirectCheck (HttpServletResponse response) throws RedirectException {
  +        if (FAST_CUTOFF && ((HttpServletResponseFacade) response).hasRedirectedOrOutputted)
  +            throw new RedirectException ();                                                                   
       }
   
       /**
  
  
  
  1.4       +8 -4      xml-cocoon/src/org/apache/cocoon/response/HttpServletResponseFacade.java
  
  Index: HttpServletResponseFacade.java
  ===================================================================
  RCS file: /home/cvs/xml-cocoon/src/org/apache/cocoon/response/HttpServletResponseFacade.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- HttpServletResponseFacade.java	2001/01/23 18:48:50	1.3
  +++ HttpServletResponseFacade.java	2001/03/01 16:24:22	1.4
  @@ -1,4 +1,4 @@
  -/*-- $Id: HttpServletResponseFacade.java,v 1.3 2001/01/23 18:48:50 greenrd Exp $ --
  +/*-- $Id: HttpServletResponseFacade.java,v 1.4 2001/03/01 16:24:22 greenrd Exp $ --
    
    ============================================================================
                      The Apache Software License, Version 1.1
  @@ -61,12 +61,12 @@
    * Hack to handle redirects correctly with Tomcat 3.1.
    *
    * @author <a href="mailto:greenrd@hotmail.com">Robin Green</a>
  - * @version $Revision: 1.3 $ $Date: 2001/01/23 18:48:50 $
  + * @version $Revision: 1.4 $ $Date: 2001/03/01 16:24:22 $
    */
   
   public class HttpServletResponseFacade implements HttpServletResponse {
   
  -  public boolean hasRedirected = false;
  +  public boolean hasRedirectedOrOutputted = false;
     protected final HttpServletResponse r;
   
     public HttpServletResponseFacade (HttpServletResponse response) {
  @@ -82,10 +82,12 @@
     }
   
     public ServletOutputStream getOutputStream() throws IOException {
  +    this.hasRedirectedOrOutputted = true;
       return r.getOutputStream ();
     }
   
     public PrintWriter getWriter () throws IOException {
  +    this.hasRedirectedOrOutputted = true;
       return r.getWriter ();
     }
   
  @@ -118,10 +120,12 @@
     }
   
     public void sendError(int sc, String msg) throws IOException {
  +    this.hasRedirectedOrOutputted = true;
       r.sendError (sc, msg);
     }
   
     public void sendError(int sc) throws IOException {
  +    this.hasRedirectedOrOutputted = true;
       r.sendError (sc);
     }
   
  @@ -129,7 +133,7 @@
       r.sendRedirect (location);
       //this breaks too much code
       //throw new RedirectException ();
  -    this.hasRedirected = true;
  +    this.hasRedirectedOrOutputted = true;
     }
   
     public String encodeURL (String url) {