vgritsenko 2002/06/04 18:36:11
Modified: src/java/org/apache/cocoon/reading Tag: cocoon_2_0_3_branch
ResourceReader.java
Log:
Fix bug 9538: Do not ignore IOException, so partially written response does not get
into the cache.
Revision Changes Path
No revision
No revision
1.7.2.2 +25 -31
xml-cocoon2/src/java/org/apache/cocoon/reading/ResourceReader.java
Index: ResourceReader.java
===================================================================
RCS file:
/home/cvs/xml-cocoon2/src/java/org/apache/cocoon/reading/ResourceReader.java,v
retrieving revision 1.7.2.1
retrieving revision 1.7.2.2
diff -u -r1.7.2.1 -r1.7.2.2
--- ResourceReader.java 5 Jun 2002 01:14:46 -0000 1.7.2.1
+++ ResourceReader.java 5 Jun 2002 01:36:11 -0000 1.7.2.2
@@ -69,8 +69,6 @@
import java.util.Map;
/**
- *
- *
* The <code>ResourceReader</code> component is used to serve binary data
* in a sitemap pipeline. It makes use of HTTP Headers to determine if
* the requested resource should be written to the <code>OutputStream</code>
@@ -86,7 +84,7 @@
* </dl>
*
* @author <a href="mailto:[EMAIL PROTECTED]">Giacomo Pati</a>
- * @version CVS $Id: ResourceReader.java,v 1.7.2.1 2002/06/05 01:14:46 vgritsenko
Exp $
+ * @version CVS $Id: ResourceReader.java,v 1.7.2.2 2002/06/05 01:36:11 vgritsenko
Exp $
*/
public class ResourceReader
extends AbstractReader
@@ -156,36 +154,32 @@
throws IOException, ProcessingException {
final Response response = ObjectModelHelper.getResponse(this.objectModel);
- try {
- final long expires = parameters.getParameterAsInteger("expires", -1);
+ final long expires = parameters.getParameterAsInteger("expires", -1);
+
+ if (expires > 0) {
+ response.setDateHeader("Expires", System.currentTimeMillis() + expires);
+ }
+
+ long contentLength = this.inputSource.getContentLength();
+ if (contentLength != -1) {
+ // FIXME (VG): Environment has setContentLength, and
+ // Response interface has not. Strange.
+ response.setHeader("Content-Length", Long.toString(contentLength));
+ }
+
+ // Bug #9539: This resource reader does not support ranges
+ response.setHeader("Accept-Ranges", "none");
+
+ byte[] buffer = new byte[8192];
+ int length = -1;
- if (expires > 0) {
- response.setDateHeader("Expires", System.currentTimeMillis() +
expires);
- }
-
- long contentLength = this.inputSource.getContentLength();
- if (contentLength != -1) {
- // FIXME (VG): Environment has setContentLength, and
- // Response interface has not. Strange.
- response.setHeader("Content-Length", Long.toString(contentLength));
- }
-
- // Bug #9539: This resource reader does not support ranges
- response.setHeader("Accept-Ranges", "none");
-
- byte[] buffer = new byte[8192];
- int length = -1;
-
- InputStream inputStream = this.inputSource.getInputStream();
- while ((length = inputStream.read(buffer)) > -1) {
- out.write(buffer, 0, length);
- }
- inputStream.close();
- inputStream = null;
- out.flush();
- } catch (IOException ioe) {
- getLogger().debug("Received an IOException, assuming client severed
connection on purpose");
+ InputStream inputStream = this.inputSource.getInputStream();
+ while ((length = inputStream.read(buffer)) > -1) {
+ out.write(buffer, 0, length);
}
+ inputStream.close();
+ inputStream = null;
+ out.flush();
}
/**
----------------------------------------------------------------------
In case of troubles, e-mail: [EMAIL PROTECTED]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]