ovidiu 2002/09/24 01:46:35 Modified: src/java/org/apache/cocoon/environment/wrapper EnvironmentWrapper.java Log: Implement getOutputStream(int), tryResetResponse() and commitResponse() to make things work correctly in the presence of control flow. Revision Changes Path 1.21 +44 -2 xml-cocoon2/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java Index: EnvironmentWrapper.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/environment/wrapper/EnvironmentWrapper.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- EnvironmentWrapper.java 8 Aug 2002 02:10:40 -0000 1.20 +++ EnvironmentWrapper.java 24 Sep 2002 08:46:35 -0000 1.21 @@ -60,6 +60,7 @@ import org.apache.cocoon.environment.Environment; import org.apache.cocoon.environment.ObjectModelHelper; import org.apache.cocoon.environment.Request; +import org.apache.cocoon.util.BufferedOutputStream; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import java.io.IOException; @@ -215,15 +216,56 @@ */ public OutputStream getOutputStream() throws IOException { - return (this.outputStream == null) ? this.environment.getOutputStream() : this.outputStream; + return this.outputStream == null + ? this.environment.getOutputStream() + : this.outputStream; } + public OutputStream getOutputStream(int bufferSize) + throws IOException + { + return this.outputStream == null + ? this.environment.getOutputStream() + : this.outputStream; + } + /** * Set the output stream for this environment. It hides the one of the * wrapped environment. */ public void setOutputStream(OutputStream stream) { this.outputStream = stream; + } + + /** + * Reset the response if possible. This allows error handlers to have + * a higher chance to produce clean output if the pipeline that raised + * the error has already output some data. + * + * @return true if the response was successfully reset + */ + public boolean tryResetResponse() + throws IOException { + if (getOutputStream() != null + && getOutputStream() instanceof BufferedOutputStream) { + ((BufferedOutputStream)getOutputStream()).clearBuffer(); + return true; + } + else + return super.tryResetResponse(); + } + + /** + * Commit the response + */ + public void commitResponse() + throws IOException { + if (getOutputStream() != null + && getOutputStream() instanceof BufferedOutputStream) { + ((BufferedOutputStream)getOutputStream()).realFlush(); + } + else + super.commitResponse(); } /**
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]