[Yanel-commits] rev 38110 - public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet

michi at wyona.com michi at wyona.com
Tue Aug 19 14:10:02 CEST 2008


Author: michi
Date: 2008-08-19 14:10:01 +0200 (Tue, 19 Aug 2008)
New Revision: 38110

Modified:
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
thanks to Simon Litwan size of an empty response and execption handling fixed

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-08-19 10:06:44 UTC (rev 38109)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-08-19 12:10:01 UTC (rev 38110)
@@ -2053,23 +2053,13 @@
             }
             
 
-            // Set actual content
-            byte buffer[] = new byte[8192];
-            int bytesRead;
             InputStream is = view.getInputStream();
             if (is != null) {
+                // Write actual content into response
+                byte buffer[] = new byte[8192];
+                int bytesRead;
                 bytesRead = is.read(buffer);
-                // Check if InputStream is empty
-                if (bytesRead == -1) {
-                    String message = "InputStream of view does not seem to contain any data!";
 
-                    Element exceptionElement = (Element) doc.getDocumentElement().appendChild(doc.createElementNS(NAMESPACE, "exception"));
-                    exceptionElement.appendChild(doc.createTextNode(message));
-                    response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-                    setYanelOutput(request, response, doc);
-                    return response;
-                }
-
                 // TODO: Compare If-Modified-Since with lastModified and return 304 without content resp. check on ETag
                 String ifModifiedSince = request.getHeader("If-Modified-Since");
                 if (ifModifiedSince != null) {
@@ -2084,19 +2074,28 @@
                     if (log.isDebugEnabled()) log.debug("No size for " + request.getRequestURI() + ": " + size);
                 }
 
-                java.io.OutputStream os = response.getOutputStream();
-                os.write(buffer, 0, bytesRead);
-                while ((bytesRead = is.read(buffer)) != -1) {
+                // Check if InputStream is empty
+                if (bytesRead != -1) {
+                    java.io.OutputStream os = response.getOutputStream();
                     os.write(buffer, 0, bytesRead);
+                    while ((bytesRead = is.read(buffer)) != -1) {
+                        os.write(buffer, 0, bytesRead);
+                    }
+                    os.close();
+                } else {
+                    log.warn("Returned content size of request '" + request.getRequestURI() + "' is 0");
                 }
+
                 is.close();
                 return response;
             } else {
-                String message = "InputStream of view is null!";
+                String message = "Returned InputStream of request '" + request.getRequestURI() + "' is null!";
                 Element exceptionElement = (Element) doc.getDocumentElement().appendChild(doc.createElementNS(NAMESPACE, "exception"));
                 exceptionElement.appendChild(doc.createTextNode(message));
                 response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
                 setYanelOutput(request, response, doc);
+
+                is.close();
                 return response;
             }
     }



More information about the Yanel-commits mailing list