I can upgrade the turbine version from the cvs head. Before I do that, have you tested the new turbine patch with Jetspeed and your patch?
> -----Original Message----- > From: Glenn Golden [mailto:[EMAIL PROTECTED]] > Sent: Thursday, March 28, 2002 6:18 PM > To: Jetspeed-Dev ([EMAIL PROTECTED]) > Subject: FW: cvs commit: > jakarta-turbine-2/src/java/org/apache/turbine/modules/pages > DefaultPage.java > > > Way Cool! Our patch is in! > > Now, we have to: > > A) update the version of turbine we are using in Jetspeed > > B) apply the other patch I made and posted to this list that > changes all our redirect attempts to do things the new, > turbine supported way. > > We need to do these together, else things will be broken - > but then, they are broken now. > > I've attached that patch again here. > > - Glenn > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] > Sent: Thursday, March 28, 2002 9:00 PM > To: [EMAIL PROTECTED] > Subject: cvs commit: > jakarta-turbine-2/src/java/org/apache/turbine/modules/pages > DefaultPage.java > > > jmcnally 02/03/28 18:00:02 > > Modified: . build.xml > src/java/org/apache/turbine Turbine.java > src/java/org/apache/turbine/modules/pages > DefaultPage.java > Log: > patch by Glenn Golden <[EMAIL PROTECTED]> > > To follow the Servlet HTTP rules, we must do the redirect > before committing > any headers or body to the response, and once we do a > redirect we must not > do anything else with the response. > > Revision Changes Path > 1.11 +1 -0 jakarta-turbine-2/build.xml > > Index: build.xml > =================================================================== > RCS file: /home/cvs/jakarta-turbine-2/build.xml,v > retrieving revision 1.10 > retrieving revision 1.11 > diff -u -r1.10 -r1.11 > --- build.xml 13 Mar 2002 04:45:00 -0000 1.10 > +++ build.xml 29 Mar 2002 02:00:02 -0000 1.11 > @@ -241,6 +241,7 @@ > depends="prepare, prepare-jsp, > prepare-freemarker, prepare-python, > prepare-webmacro, prepare-log4java, > prepare-castor" > description="--> compiles the source code"> > + > <javac srcdir="${build.src}" > destdir="${build.dest}" > excludes="**/package.html,**/*Test.java" > > > > 1.12 +61 -42 > jakarta-turbine-2/src/java/org/apache/turbine/Turbine.java > > Index: Turbine.java > =================================================================== > RCS file: > /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/Turbine.java,v > retrieving revision 1.11 > retrieving revision 1.12 > diff -u -r1.11 -r1.12 > --- Turbine.java 13 Mar 2002 19:44:19 -0000 1.11 > +++ Turbine.java 29 Mar 2002 02:00:02 -0000 1.12 > @@ -117,7 +117,7 @@ > * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a> > * @author <a href="mailto:[EMAIL PROTECTED]">Sean Legassick</a> > * @author <a href="mailto:[EMAIL PROTECTED]">Martin Poeschl</a> > - * @version $Id: Turbine.java,v 1.11 2002/03/13 19:44:19 > mpoeschl Exp $ > + * @version $Id: Turbine.java,v 1.12 2002/03/29 02:00:02 > jmcnally Exp $ > */ > public class Turbine > extends HttpServlet > @@ -376,6 +376,9 @@ > throws IOException, > ServletException > { > + // set to true if the request is to be redirected > by the page > + boolean requestRedirected = false; > + > // Placeholder for the RunData object. > RunData data = null; > try > @@ -584,46 +587,57 @@ > AccessControlList.SESSION_KEY); > } > > - try > + // handle a redirect request > + requestRedirected = ((data.getRedirectURI() != null) > + && (data.getRedirectURI().length() > 0)); > + if (requestRedirected) > { > - if ( data.isPageSet() == false && > - data.isOutSet() == false ) > - throw new Exception ( "Nothing to output" ); > - > - // We are all done! if isPageSet() output that way > - // otherwise, data.getOut() has already > been written > - // to the data.getOut().close() happens > below in the > - // finally. > - if ( data.isPageSet() && data.isOutSet() == false ) > - { > - // Modules can override these. > - data.getResponse() > - .setLocale( data.getLocale() ); > - data.getResponse() > - .setContentType( data.getContentType() ); > - > - // Handle the case where a module may > want to send > - // a redirect. > - if ( ( data.getStatusCode() == 301 || > - data.getStatusCode() == 302 ) && > - data.getRedirectURI() != null ) > + if (data.getResponse().isCommitted()) > + { > + requestRedirected = false; > + log ("redirect requested, response > already committed: > " + > + data.getRedirectURI()); > + } > + else > + { > + > data.getResponse().sendRedirect(data.getRedirectURI()); > + } > + } > + > + if (!requestRedirected) > + { > + try > + { > + if ( data.isPageSet() == false && > + data.isOutSet() == false ) > + throw new Exception ( "Nothing to > output" ); > + > + // We are all done! if isPageSet() > output that way > + // otherwise, data.getOut() has > already been written > + // to the data.getOut().close() > happens below in the > + // finally. > + if ( data.isPageSet() && > data.isOutSet() == false ) > { > + // Modules can override these. > data.getResponse() > - .sendRedirect ( > data.getRedirectURI() ); > - } > + .setLocale( data.getLocale() ); > + data.getResponse() > + .setContentType( > data.getContentType() ); > > - // Set the status code. > - data.getResponse().setStatus ( > data.getStatusCode() > ); > - // Output the Page. > - data.getPage().output (data.getOut()); > + // Set the status code. > + data.getResponse().setStatus ( > data.getStatusCode() ); > + // Output the Page. > + data.getPage().output (data.getOut()); > + } > + } > + catch ( Exception e ) > + { > + // The output stream was probably closed by the > client > + // end of things ie: the client > clicked the Stop > + // button on the browser, so ignore > any errors that > + // result. > + Log.debug("Output stream closed? ", e); > } > - } > - catch ( Exception e ) > - { > - // The output stream was probably closed > by the client > - // end of things ie: the client clicked the Stop > - // button on the browser, so ignore any errors that > - // result. > } > } > catch ( Exception e ) > @@ -637,13 +651,18 @@ > finally > { > // Make sure to close the outputstream when we > are done. > - try > + // Note: not for redirects, when we must not get a > printwriter on > + // the response output stream. > + if (!requestRedirected) > { > - data.getOut().close(); > - } > - catch (Exception e) > - { > - // Ignore. > + try > + { > + data.getOut().close(); > + } > + catch (Exception e) > + { > + // Ignore. > + } > } > > // Return the used RunData to the factory for > recycling. > > > > 1.2 +4 -1 > jakarta-turbine-2/src/java/org/apache/turbine/modules/pages/De > faultPage.java > > Index: DefaultPage.java > =================================================================== > RCS file: > /home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/module > s/pages/Defaul > tPage.java,v > retrieving revision 1.1 > retrieving revision 1.2 > diff -u -r1.1 -r1.2 > --- DefaultPage.java 16 Aug 2001 05:08:36 -0000 1.1 > +++ DefaultPage.java 29 Mar 2002 02:00:02 -0000 1.2 > @@ -119,7 +119,7 @@ > * written by John McNally. I've only modified it for > WebMacro use. > * > * @author <a > href="mailto:[EMAIL PROTECTED]">Dave Bryson</a> > - * @version $Id: DefaultPage.java,v 1.1 2001/08/16 > 05:08:36 jvanzyl Exp $ > + * @version $Id: DefaultPage.java,v 1.2 2002/03/29 > 02:00:02 jmcnally Exp $ > */ > public class DefaultPage extends Page > { > @@ -142,6 +142,9 @@ > { > ActionLoader.getInstance().exec ( data, > data.getAction() ); > } > + > + // if a redirect was setup in data, don't do anything else > + if ((data.getRedirectURI() != null) && > (data.getRedirectURI().length() > 0)) return; > > // Set the default doctype from the value given in > // TurbineResources.properties. > > > > > -- > To unsubscribe, e-mail: > <mailto:turbine-dev-> [EMAIL PROTECTED]> > For > additional commands, > e-mail: <mailto:[EMAIL PROTECTED]> > > -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
