Author: davsclaus
Date: Wed Apr 11 05:48:23 2012
New Revision: 1324568

URL: http://svn.apache.org/viewvc?rev=1324568&view=rev
Log:
CAMEL-5136: File component now explicit forces a flush when files have been 
written.

Modified:
    
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/util/IOHelper.java

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java?rev=1324568&r1=1324567&r2=1324568&view=diff
==============================================================================
--- 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
 (original)
+++ 
camel/trunk/camel-core/src/main/java/org/apache/camel/component/file/FileOperations.java
 Wed Apr 11 05:48:23 2012
@@ -257,6 +257,8 @@ public class FileOperations implements G
             }
         } finally {
             IOHelper.close(in, source.getName(), LOG);
+            // force updates to be written, and then close afterwards
+            IOHelper.force(out, target.getName(), LOG);
             IOHelper.close(out, target.getName(), LOG);
         }
     }
@@ -279,6 +281,8 @@ public class FileOperations implements G
             }
         } finally {
             IOHelper.close(in, target.getName(), LOG);
+            // force updates to be written, and then close afterwards
+            IOHelper.force(out, target.getName(), LOG);
             IOHelper.close(out, target.getName(), LOG);
         }
     }

Modified: 
camel/trunk/camel-core/src/main/java/org/apache/camel/util/IOHelper.java
URL: 
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/util/IOHelper.java?rev=1324568&r1=1324567&r2=1324568&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/util/IOHelper.java 
(original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/util/IOHelper.java 
Wed Apr 11 05:48:23 2012
@@ -27,6 +27,7 @@ import java.io.OutputStream;
 import java.io.Reader;
 import java.io.UnsupportedEncodingException;
 import java.io.Writer;
+import java.nio.channels.FileChannel;
 import java.nio.charset.Charset;
 import java.nio.charset.UnsupportedCharsetException;
 
@@ -191,6 +192,28 @@ public final class IOHelper {
     }
 
     /**
+     * Forces any updates to this channel's file to be written to the storage 
device that contains it.
+     *
+     * @param channel the file channel
+     * @param name the name of the resource
+     * @param log the log to use when reporting closure warnings
+     */
+    public static void force(FileChannel channel, String name, Logger log) {
+        try {
+            channel.force(true);
+        } catch (Exception e) {
+            if (log != null) {
+                if (name != null) {
+                    log.warn("Cannot force FileChannel: " + name + ". Reason: 
" + e.getMessage(), e);
+                } else {
+                    log.warn("Cannot force FileChannel. Reason: " + 
e.getMessage(), e);
+                }
+            }
+        }
+
+    }
+
+    /**
      * Closes the given resource if it is available, logging any closing
      * exceptions to the given log
      *


Reply via email to