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 *