Listeners on DefaultFileMonitor not deregistered on stop()
----------------------------------------------------------

                 Key: VFS-299
                 URL: https://issues.apache.org/jira/browse/VFS-299
             Project: Commons VFS
          Issue Type: Bug
    Affects Versions: 1.0
         Environment: windows xp
            Reporter: Josua Troesch
            Priority: Minor


If I 
1. register a File to a DefaultFileMonitor
2. stop() that DefaultFileMonitor
3. create a new DefaultFileMonitor and
4. register the same File to it
5. write to the File

I get the {{FileChangeEvent}} on both listeners, on the one registered to the 
new DefaultFileMonitor (as expected) but also on the one registered to the 
stopped DefaultFileMonitor. I tracked it down to the 
{{LocalFileSystem.listenerMap}} containing both listeners for the File. In my 
project I fixed this behaviour as follows:

Extended the {{stop()}} method on {{DefaultFileMonitor}}:

public void stop() {
    this.shouldRun = false;
        // Inserted this bit
        for (FileMonitorAgent agent : 
(Collection<FileMonitorAgent>)monitorMap.values()) {
                agent.removeListeners();
        }
}

And adding the method to the {{DefaultFileMonitor$FileMonitorAgent}}:

public void removeListeners() {
        file.getFileSystem().removeListener(file, fm.getFileListener());
}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to