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) {