[Yanel-commits] rev 21298 - public/yanel/trunk/src/core/java/org/wyona/yanel/servlet

michi at wyona.com michi at wyona.com
Sun Dec 31 14:05:21 CET 2006


Author: michi
Date: 2006-12-31 14:05:20 +0100 (Sun, 31 Dec 2006)
New Revision: 21298

Modified:
   public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
save data refactored

Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java	2006-12-31 12:23:13 UTC (rev 21297)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/YanelServlet.java	2006-12-31 13:05:20 UTC (rev 21298)
@@ -598,7 +598,7 @@
     }
 
     /**
-     *
+     * Save data
      */
     private void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         log.debug("Save data ...");
@@ -673,23 +673,25 @@
                 log.info("No well-formedness check required for content type: " + contentType);
             }
 
-/*
-        if (bytesRead == -1) {
-                response.setContentType("text/plain");
-                PrintWriter writer = response.getWriter();
-                writer.print("No content!");
-                return;
-            }
-*/
+        java.io.ByteArrayInputStream memIn = new java.io.ByteArrayInputStream(memBuffer);
 
+
         // IMPORTANT TODO: Use ModifiableV2.write(InputStream in) such that resource can modify data during saving resp. check if getOutputStream is equals null and then use write ....
         OutputStream out = null;
         Resource res = getResource(request, response);
         if (ResourceAttributeHelper.hasAttributeImplemented(res, "Modifiable", "1")) {
             out = ((ModifiableV1) res).getOutputStream(new Path(request.getServletPath()));
+            write(memIn, out, request, response);
+            return;
         } else if (ResourceAttributeHelper.hasAttributeImplemented(res, "Modifiable", "2")) {
             try {
                 out = ((ModifiableV2) res).getOutputStream();
+                if (out != null) {
+                    write(memIn, out, request, response);
+                } else {
+                    ((ModifiableV2) res).write(memIn);
+                }
+                return;
             } catch (Exception e) {
                 log.error(e.getMessage(), e);
                 throw new ServletException(e.getMessage(), e);
@@ -711,53 +713,6 @@
             w.print(sb);
             return;
         }
-
-        if (out != null) {
-            log.debug("Content-Type: " + contentType);
-            // TODO: Compare mime-type from response with mime-type of resource
-            //if (contentType.equals("text/xml")) { ... }
-
-            byte[] buffer = new byte[8192];
-            int bytesRead;
-            java.io.ByteArrayInputStream memIn = new java.io.ByteArrayInputStream(memBuffer);
-            while ((bytesRead = memIn.read(buffer)) != -1) {
-                out.write(buffer, 0, bytesRead);
-            }
-            out.flush();
-            out.close();
-
-            StringBuffer sb = new StringBuffer();
-            sb.append("<?xml version=\"1.0\"?>");
-            sb.append("<html>");
-            sb.append("<body>");
-            sb.append("<p>Data has been saved ...</p>");
-            sb.append("</body>");
-            sb.append("</html>");
-
-
-            response.setStatus(javax.servlet.http.HttpServletResponse.SC_OK);
-            response.setContentType("application/xhtml+xml");
-            PrintWriter w = response.getWriter();
-            w.print(sb);
-
-            log.info("Data has been saved ...");
-            return;
-        } else {
-            log.error("OutputStream is null!");
- 
-            StringBuffer sb = new StringBuffer();
-            sb.append("<?xml version=\"1.0\"?>");
-            sb.append("<html>");
-            sb.append("<body>");
-            sb.append("<p>Exception: OutputStream is null!</p>");
-            sb.append("</body>");
-            sb.append("</html>");
-            PrintWriter w = response.getWriter();
-            w.print(sb);
-            response.setContentType("application/xhtml+xml");
-            response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-            return;
-        }
     }
 
     /**
@@ -1304,4 +1259,55 @@
         PrintWriter w = response.getWriter();
         w.print(sb);
     }
+
+    /**
+     * Write to output stream of modifiable resource
+     */
+    private void write(InputStream in, OutputStream out, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        if (out != null) {
+            log.debug("Content-Type: " + request.getContentType());
+            // TODO: Compare mime-type from response with mime-type of resource
+            //if (contentType.equals("text/xml")) { ... }
+
+            byte[] buffer = new byte[8192];
+            int bytesRead;
+            while ((bytesRead = in.read(buffer)) != -1) {
+                out.write(buffer, 0, bytesRead);
+            }
+            out.flush();
+            out.close();
+
+            StringBuffer sb = new StringBuffer();
+            sb.append("<?xml version=\"1.0\"?>");
+            sb.append("<html>");
+            sb.append("<body>");
+            sb.append("<p>Data has been saved ...</p>");
+            sb.append("</body>");
+            sb.append("</html>");
+
+
+            response.setStatus(javax.servlet.http.HttpServletResponse.SC_OK);
+            response.setContentType("application/xhtml+xml");
+            PrintWriter w = response.getWriter();
+            w.print(sb);
+
+            log.info("Data has been saved ...");
+            return;
+        } else {
+            log.error("OutputStream is null!");
+ 
+            StringBuffer sb = new StringBuffer();
+            sb.append("<?xml version=\"1.0\"?>");
+            sb.append("<html>");
+            sb.append("<body>");
+            sb.append("<p>Exception: OutputStream is null!</p>");
+            sb.append("</body>");
+            sb.append("</html>");
+            PrintWriter w = response.getWriter();
+            w.print(sb);
+            response.setContentType("application/xhtml+xml");
+            response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+            return;
+        }
+    }
 }




More information about the Yanel-commits mailing list