+
+ Native listeners check the org.netbeans.io.suspend
property.
+ If it is set to integer greater than zero, they stop delivering file change events.
+ The list of modified directories is recorded (its size is made available
+ by setting its string value into org.netbeans.io.pending
property),
+ but its processing is suspended. Events are delivered when
+ org.netbeans.io.suspend
property changes its value to 0
+ or becomes empty.
+
+
+ I/O intensive operations in other NetBeans modules are advised
+ to honour the org.netbeans.io.suspend
property as well and
+ suspend their I/O activities too.
+
+
+ In order to properly communicate changes to the property between multiple
+ receivers and multiple controllers it is suggested to
+ only manipulate the value under synchronized("org.netbeans.io.suspend".intern())
+ lock. Those changing the value are supposed to increment it by one when they
+ request the suspend and decrement it by one when they want to resume their
+ own suspend.
+
+
+ Whenever a change to the state of the property is made,
+ controllers are supposed to
+ "org.netbeans.io.suspend".intern().notifyAll()
.
+
+
diff -r 59d630fe8661 masterfs/manifest.mf
--- a/masterfs/manifest.mf Mon Nov 19 12:07:47 2012 +0100
+++ b/masterfs/manifest.mf Tue Nov 20 11:59:03 2012 +0100
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
OpenIDE-Module: org.netbeans.modules.masterfs/2
OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/masterfs/resources/Bundle.properties
-OpenIDE-Module-Specification-Version: 2.41
+OpenIDE-Module-Specification-Version: 2.42
OpenIDE-Module-Recommends: org.netbeans.modules.masterfs.providers.Notifier
OpenIDE-Module-Provides: org.openide.filesystems.FileUtil.toFileObject
AutoUpdate-Show-In-Client: false
diff -r 59d630fe8661 masterfs/src/org/netbeans/modules/masterfs/watcher/Watcher.java
--- a/masterfs/src/org/netbeans/modules/masterfs/watcher/Watcher.java Mon Nov 19 12:07:47 2012 +0100
+++ b/masterfs/src/org/netbeans/modules/masterfs/watcher/Watcher.java Tue Nov 20 11:59:03 2012 +0100
@@ -57,9 +57,11 @@
import org.netbeans.modules.masterfs.providers.ProvidedExtensions;
import org.openide.filesystems.FileObject;
import org.netbeans.modules.masterfs.providers.AnnotationProvider;
+import org.openide.util.Exceptions;
import org.openide.util.Lookup;
import org.openide.util.Lookup.Item;
import org.openide.util.RequestProcessor;
+import org.openide.util.WeakSet;
import org.openide.util.lookup.ServiceProvider;
import org.openide.util.lookup.ServiceProviders;
@@ -354,7 +356,7 @@
}
}
- private final Object lock = new Object();
+ private final Object lock = "org.netbeans.io.suspend".intern();
private Set