387977: avoid renameTo on *ix
diff --git a/org.eclipse.virgo.util.io/src/main/java/org/eclipse/virgo/util/io/FileSystemChecker.java b/org.eclipse.virgo.util.io/src/main/java/org/eclipse/virgo/util/io/FileSystemChecker.java
index 9f213c5..d51c35b 100644
--- a/org.eclipse.virgo.util.io/src/main/java/org/eclipse/virgo/util/io/FileSystemChecker.java
+++ b/org.eclipse.virgo.util.io/src/main/java/org/eclipse/virgo/util/io/FileSystemChecker.java
@@ -64,6 +64,8 @@
 
     private final FilenameFilter includeFilter;
 
+    private static boolean WINDOWS = System.getProperty("os.name").startsWith("Windows");
+
     /**
      * Creates a new <code>FileSystemChecker</code>. Identifies changes on all files in <code>checkDir</code>.
      * 
@@ -161,7 +163,7 @@
                         if (size > monitorRecord.getSize()) {
                             // still being written? continue to track it
                             monitorRecord.setSize(size);
-                        } else if (file.renameTo(file)){
+                        } else if (isUnlocked(file)){
                             // not changing anymore so if we can rename it we can announce it:
                             notifyListeners(this.key(file), monitorRecord.getEvent());
                             // do not monitor it anymore
@@ -202,6 +204,11 @@
         }
     }
 
+    public boolean isUnlocked(File file) {
+        // Heuristic check for the file not being locked on Windows. On *ix, assume the file is unlocked since we can't tell.
+        return !WINDOWS || file.renameTo(file);
+    }
+
     private void debugState(final String heading, File[] files) {
         if (logger!=null && logger.isDebugEnabled()) {
             StringBuilder sb = new StringBuilder().append(this.checkDir).append(" - ").append(heading);