Author: michiel
Date: 2010-06-18 14:54:22 +0200 (Fri, 18 Jun 2010)
New Revision: 42602

Modified:
   
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
   
mmbase/trunk/applications/resources/src/test/java/org/mmbase/servlet/FileServletTest.java
Log:
Test cases for streaming

Modified: 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
===================================================================
--- 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
       2010-06-18 11:53:32 UTC (rev 42601)
+++ 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/servlet/FileServlet.java
       2010-06-18 12:54:22 UTC (rev 42602)
@@ -435,12 +435,8 @@
 
     }
 
-    protected void stream(HttpServletRequest req, HttpServletResponse resp, 
File file) throws IOException {
-        BufferedOutputStream out = new 
BufferedOutputStream(resp.getOutputStream());
-        BufferedInputStream in = new BufferedInputStream(new 
FileInputStream(file));
+    protected static void stream(ChainedRange range, InputStream in, 
OutputStream out) throws IOException {
         byte[] buf = new byte[1024];
-
-        final ChainedRange range = getRange(req, file);
         if (range != null) {
             long pos = 0;
             while (pos < range.max) {
@@ -468,6 +464,14 @@
         out.close();
     }
 
+
+    protected void stream(HttpServletRequest req, HttpServletResponse resp, 
File file) throws IOException {
+        BufferedOutputStream out = new 
BufferedOutputStream(resp.getOutputStream());
+        BufferedInputStream in = new BufferedInputStream(new 
FileInputStream(file));
+        final ChainedRange range = getRange(req, file);
+        stream(range, in, out);
+    }
+
     private static final FormatFileSize formatFileSize = new FormatFileSize();
 
     private static final Xml XML = new Xml();

Modified: 
mmbase/trunk/applications/resources/src/test/java/org/mmbase/servlet/FileServletTest.java
===================================================================
--- 
mmbase/trunk/applications/resources/src/test/java/org/mmbase/servlet/FileServletTest.java
   2010-06-18 11:53:32 UTC (rev 42601)
+++ 
mmbase/trunk/applications/resources/src/test/java/org/mmbase/servlet/FileServletTest.java
   2010-06-18 12:54:22 UTC (rev 42602)
@@ -10,6 +10,9 @@
 package org.mmbase.servlet;
 
 import java.util.*;
+import java.io.*;
+import org.apache.commons.io.FileUtils;
+
 import org.mmbase.util.*;
 
 import org.junit.*;
@@ -41,4 +44,28 @@
         assertEquals(400, new ChainedRange("0-200,101-499", 400).getLength());
     }
 
+
+    public void stream(ChainedRange range) throws Exception {
+        File file = new File("src" + File.separator + "test" + File.separator 
+ "images" + File.separator + "test.png");
+        InputStream in = new FileInputStream(file);
+        File outFile = File.createTempFile(FileServletTest.class.getName(), 
null);
+        //System.out.println("" + outFile);
+        OutputStream out = new FileOutputStream(outFile);
+        FileServlet.stream(null, in, out);
+        assertTrue(FileUtils.contentEquals(file, outFile));
+    }
+
+    @Test
+    public void stream() throws Exception {
+        stream(null);
+    }
+
+
+    @Test
+    public void streamRange() throws Exception {
+        File file = new File("src" + File.separator + "test" + File.separator 
+ "images" + File.separator + "test.png");
+        ChainedRange range = new ChainedRange("0-100,101-499,500-", 
file.length());
+        stream(range);
+    }
+
 }

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to