You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/08/26 06:25:28 UTC

svn commit: r807874 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/converter/stream/CachedOutputStream.java test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java

Author: ningjiang
Date: Wed Aug 26 04:25:27 2009
New Revision: 807874

URL: http://svn.apache.org/viewvc?rev=807874&view=rev
Log:
CAMEL-1934 Fixed the StreamCache Unit test failure on Windows

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java
    camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java?rev=807874&r1=807873&r2=807874&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java Wed Aug 26 04:25:27 2009
@@ -25,6 +25,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.StreamCache;
@@ -51,6 +53,8 @@
     private boolean inMemory = true;
     private int totalLength;
     private File tempFile;
+    
+    private List<FileInputStreamCache> fileInputStreamCaches = new ArrayList<FileInputStreamCache>(4);
 
     private long threshold = 64 * 1024;
     private File outputDir;
@@ -70,10 +74,13 @@
             @Override
             public void onDone(Exchange exchange) {
                 try {
+                    // close the stream and FileInputStreamCache
+                    close();
+                    for (FileInputStreamCache cache : fileInputStreamCaches) {
+                        cache.close();
+                    }
                     // cleanup temporary file
                     if (tempFile != null) {
-                        // close the stream first and than delete the file
-                        close();
                         boolean deleted = tempFile.delete();
                         if (!deleted) {
                             LOG.warn("Cannot delete temporary cache file: " + tempFile);
@@ -149,7 +156,9 @@
             }
         } else {
             try {
-                return new FileInputStreamCache(tempFile, this);
+                FileInputStreamCache answer = new FileInputStreamCache(tempFile, this);
+                fileInputStreamCaches.add(answer);
+                return answer;
             } catch (FileNotFoundException e) {
                 throw IOHelper.createIOException("Cached file " + tempFile + " not found", e);
             }
@@ -168,7 +177,9 @@
             }
         } else {
             try {
-                return new FileInputStreamCache(tempFile, this);
+                FileInputStreamCache answer = new FileInputStreamCache(tempFile, this);
+                fileInputStreamCaches.add(answer);
+                return answer;
             } catch (FileNotFoundException e) {
                 throw IOHelper.createIOException("Cached file " + tempFile + " not found", e);
             }

Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java?rev=807874&r1=807873&r2=807874&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/converter/stream/CachedOutputStreamTest.java Wed Aug 26 04:25:27 2009
@@ -109,10 +109,7 @@
         cache.reset();
         temp = toString((InputStream)cache);
         assertEquals("Cached a wrong file", temp, TEST_STRING);
-        // windows can't delet the file which is open , so we close the stream first
-        if (System.getProperty("os.name").startsWith("Windows")) {
-            ((InputStream)cache).close();
-        }
+        
         exchange.getUnitOfWork().done(exchange);
         ((InputStream)cache).close();