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]

Reply via email to