[prev in list] [next in list] [prev in thread] [next in thread]
List: jakarta-commons-dev
Subject: svn commit: r1642533 - in /commons/proper/vfs/trunk: core/src/main/java/org/apache/commons/vfs2/impl
From: ecki () apache ! org
Date: 2014-11-30 9:47:35
Message-ID: 20141130094735.B83B823891B1 () eris ! apache ! org
[Download RAW message or body]
Author: ecki
Date: Sun Nov 30 09:47:34 2014
New Revision: 1642533
URL: http://svn.apache.org/r1642533
Log:
[VFS-487] DefaultFileMonitor detect re-creation events
Modified:
commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java
commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/impl/test/DefaultFileMonitorTests.java
commons/proper/vfs/trunk/src/changes/changes.xml
Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apac \
he/commons/vfs2/impl/DefaultFileMonitor.java?rev=1642533&r1=1642532&r2=1642533&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java \
(original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java \
Sun Nov 30 09:47:34 2014 @@ -356,11 +356,6 @@ public class DefaultFileMonitor \
implemen mainloop:
while (!monitorThread.isInterrupted() && this.shouldRun)
{
- while (!this.deleteStack.empty())
- {
- this.removeFile(this.deleteStack.pop());
- }
-
// For each entry in the map
Object[] fileNames;
synchronized (this.monitorMap)
@@ -407,6 +402,11 @@ public class DefaultFileMonitor implemen
this.addFile(this.addStack.pop());
}
+ while (!this.deleteStack.empty())
+ {
+ this.removeFile(this.deleteStack.pop());
+ }
+
try
{
Thread.sleep(getDelay());
Modified: commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/impl/test/DefaultFileMonitorTests.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/test/java/org/apac \
he/commons/vfs2/impl/test/DefaultFileMonitorTests.java?rev=1642533&r1=1642532&r2=1642533&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/impl/test/DefaultFileMonitorTests.java \
(original)
+++ commons/proper/vfs/trunk/core/src/test/java/org/apache/commons/vfs2/impl/test/DefaultFileMonitorTests.java \
Sun Nov 30 09:47:34 2014 @@ -66,14 +66,19 @@ public class DefaultFileMonitorTests ext
{
final FileObject fileObj = \
fsManager.resolveFile(testFile.toURI().toURL().toString());
final DefaultFileMonitor monitor = new DefaultFileMonitor(new \
TestFileListener()); + // TestFileListener manipulates changeStatus
monitor.setDelay(100);
monitor.addFile(fileObj);
monitor.start();
- writeToFile(testFile);
- Thread.sleep(300);
- assertTrue("No event occurred", changeStatus != 0);
- assertTrue("Incorrect event", changeStatus == 3);
- monitor.stop();
+ try
+ {
+ writeToFile(testFile);
+ Thread.sleep(300);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event", changeStatus == 3);
+ } finally {
+ monitor.stop();
+ }
}
public void testFileDeleted() throws Exception
@@ -81,14 +86,19 @@ public class DefaultFileMonitorTests ext
writeToFile(testFile);
final FileObject fileObj = \
fsManager.resolveFile(testFile.toURI().toString());
final DefaultFileMonitor monitor = new DefaultFileMonitor(new \
TestFileListener()); + // TestFileListener manipulates changeStatus
monitor.setDelay(100);
monitor.addFile(fileObj);
monitor.start();
- testFile.delete();
- Thread.sleep(300);
- assertTrue("No event occurred", changeStatus != 0);
- assertTrue("Incorrect event", changeStatus == 2);
- monitor.stop();
+ try
+ {
+ testFile.delete();
+ Thread.sleep(300);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event", changeStatus == 2);
+ } finally {
+ monitor.stop();
+ }
}
public void testFileModified() throws Exception
@@ -96,19 +106,24 @@ public class DefaultFileMonitorTests ext
writeToFile(testFile);
final FileObject fileObj = \
fsManager.resolveFile(testFile.toURI().toURL().toString());
final DefaultFileMonitor monitor = new DefaultFileMonitor(new \
TestFileListener()); + // TestFileListener manipulates changeStatus
monitor.setDelay(100);
monitor.addFile(fileObj);
monitor.start();
- // Need a long delay to insure the new timestamp doesn't truncate to be the \
same as
- // the current timestammp. Java only guarantees the timestamp will be to 1 \
second.
- Thread.sleep(1000);
- final long value = System.currentTimeMillis();
- final boolean rc = testFile.setLastModified(value);
- assertTrue("setLastModified succeeded",rc);
- Thread.sleep(300);
- assertTrue("No event occurred", changeStatus != 0);
- assertTrue("Incorrect event", changeStatus == 1);
- monitor.stop();
+ try
+ {
+ // Need a long delay to insure the new timestamp doesn't truncate to be \
the same as + // the current timestammp. Java only guarantees the \
timestamp will be to 1 second. + Thread.sleep(1000);
+ final long value = System.currentTimeMillis();
+ final boolean rc = testFile.setLastModified(value);
+ assertTrue("setLastModified succeeded",rc);
+ Thread.sleep(300);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event", changeStatus == 1);
+ } finally {
+ monitor.stop();
+ }
}
@@ -116,33 +131,64 @@ public class DefaultFileMonitorTests ext
{
final FileObject fileObj = \
fsManager.resolveFile(testFile.toURI().toURL().toString());
final DefaultFileMonitor monitor = new DefaultFileMonitor(new \
TestFileListener()); + // TestFileListener manipulates changeStatus
monitor.setDelay(100);
monitor.addFile(fileObj);
monitor.start();
+ try
+ {
+ writeToFile(testFile);
+ Thread.sleep(300);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event " + changeStatus, changeStatus == 3);
+ changeStatus = 0;
+ testFile.delete();
+ Thread.sleep(300);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event " + changeStatus, changeStatus == 2);
+ changeStatus = 0;
+ Thread.sleep(500);
+ monitor.addFile(fileObj);
+ writeToFile(testFile);
+ Thread.sleep(300);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event " + changeStatus, changeStatus == 3);
+ } finally {
+ monitor.stop();
+ }
+ }
+
+ public void testChildFileRecreated() throws Exception
+ {
writeToFile(testFile);
- Thread.sleep(300);
- assertTrue("No event occurred", changeStatus != 0);
- assertTrue("Incorrect event " + changeStatus, changeStatus == 3);
- changeStatus = 0;
- testFile.delete();
- Thread.sleep(300);
- assertTrue("No event occurred", changeStatus != 0);
- assertTrue("Incorrect event " + changeStatus, changeStatus == 2);
- changeStatus = 0;
- Thread.sleep(500);
+ final FileObject fileObj = \
fsManager.resolveFile(testDir.toURI().toURL().toString()); + final \
DefaultFileMonitor monitor = new DefaultFileMonitor(new TestFileListener()); + \
monitor.setDelay(2000); monitor.addFile(fileObj);
- writeToFile(testFile);
- Thread.sleep(300);
- assertTrue("No event occurred", changeStatus != 0);
- assertTrue("Incorrect event " + changeStatus, changeStatus == 3);
- monitor.stop();
+ monitor.start();
+ try
+ {
+ changeStatus = 0;
+ Thread.sleep(300);
+ testFile.delete();
+ Thread.sleep(3000);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event " + changeStatus, changeStatus == 2);
+ changeStatus = 0;
+ Thread.sleep(300);
+ writeToFile(testFile);
+ Thread.sleep(3000);
+ assertTrue("No event occurred", changeStatus != 0);
+ assertTrue("Incorrect event " + changeStatus, changeStatus == 3);
+ } finally {
+ monitor.stop();
+ }
}
private void writeToFile(final File file) throws Exception
{
final FileWriter out = new FileWriter(file);
out.write("string=value1");
- out.flush();
out.close();
}
Modified: commons/proper/vfs/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/src/changes/changes.xml?rev=1642533&r1=1642532&r2=1642533&view=diff
==============================================================================
--- commons/proper/vfs/trunk/src/changes/changes.xml (original)
+++ commons/proper/vfs/trunk/src/changes/changes.xml Sun Nov 30 09:47:34 2014
@@ -26,6 +26,9 @@
<!-- <action issue="VFS-443" dev="ggregory" type="update" due-to="nickallen"> \
--> <!-- [Local] Need an easy way to convert from a FileObject to a File. -->
<!-- </action> -->
+ <action issue="VFS-487" dev="ecki" type="fix" due-to="Dave Marion">
+ DefaultFileMonitor detects recreated files.
+ </action>
<action issue="VFS-523" dev="ecki" type="fix" due-to="Roger Whitcomb">
[HDFS] Make HdfsFileObject.equal use system hashcode/equals instead of
wrongly comparing file path only.
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic