Update of /var/cvs/src/org/mmbase/util
In directory james.mmbase.org:/tmp/cvs-serv27628

Modified Files:
        LocalServletResponse.java LocalHttpServletResponse.java 
Log Message:
made it possbile to specificy OutputStream rather than writer in constructor


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/util


Index: LocalServletResponse.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/LocalServletResponse.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- LocalServletResponse.java   27 Jan 2009 18:06:18 -0000      1.1
+++ LocalServletResponse.java   2 Feb 2009 15:27:00 -0000       1.2
@@ -17,17 +17,25 @@
 /**
  * @see LocalHttpServletRequest
  * @author Michiel Meeuwissen
- * @version $Id: LocalServletResponse.java,v 1.1 2009/01/27 18:06:18 michiel 
Exp $
+ * @version $Id: LocalServletResponse.java,v 1.2 2009/02/02 15:27:00 michiel 
Exp $
  * @since MMBase-1.9.1
  */
 public class LocalServletResponse implements ServletResponse {
 
 
     private final Writer writer;
-    private ByteArrayOutputStream output = new ByteArrayOutputStream();
+    private final OutputStream output;
+    private PrintWriter pwriter;
+
 
     public LocalServletResponse(Writer w) {
         writer = w;
+        output = new ByteArrayOutputStream();
+    }
+
+    public LocalServletResponse(OutputStream output) {
+        this.output = output;
+        writer = null;
     }
 
     private String characterEncoding = "UTF-8";
@@ -35,11 +43,22 @@
     private Locale locale = Locale.US;
 
     public void flushBuffer() {
+        if (writer != null) {
         try {
-            writer.write(new String(output.toByteArray(), characterEncoding));
+                writer.write(new String(((ByteArrayOutputStream) 
output).toByteArray(), characterEncoding));
+                ((ByteArrayOutputStream) output).reset();
         } catch (Exception e) {
             // shouldn't happen
         }
+        } else {
+            if (pwriter != null) {
+                pwriter.flush();
+            }
+            try {
+                output.flush();
+            } catch (IOException ioe) {
+            }
+        }
     }
     public int  getBufferSize() {
         return 0;
@@ -60,14 +79,19 @@
             }
             @Override public void flush() throws IOException {
                 super.flush();
-                writer.write(new String(output.toByteArray(), 
characterEncoding));
-                output.reset();
-
+                flushBuffer();
             }
         };
     }
     public PrintWriter  getWriter() {
-        return new PrintWriter(writer);
+        if (pwriter == null) {
+            if (writer != null) {
+                pwriter = new PrintWriter(writer);
+            } else {
+                pwriter = new PrintWriter(output, true);
+            }
+        }
+        return pwriter;
     }
     public boolean  isCommitted() {
         return false;


Index: LocalHttpServletResponse.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/util/LocalHttpServletResponse.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- LocalHttpServletResponse.java       27 Jan 2009 18:06:18 -0000      1.1
+++ LocalHttpServletResponse.java       2 Feb 2009 15:27:00 -0000       1.2
@@ -25,6 +25,10 @@
         super(w);
     }
 
+    public LocalHttpServletResponse(OutputStream output) {
+        super(output);
+    }
+
     public void  addCookie(Cookie cookie) {
         // TODO
     }
_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to