[ https://issues.apache.org/jira/browse/IO-132?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Niall Pemberton updated IO-132: ------------------------------- Attachment: FilesystemMonitor.java FilesystemObserver.java FilesystemListener.java Stephen's comment was that it seemed too much like a framework. I've re-written the implementations with a single concrete implementation of FilesystemObserver. With that refactoring and being able to use JDK 1.5 features I believe it is much more straight forward - attaching the following: - FilesystemListener - interface which receives create/change/delete events for files/directories - FilesystemObserver - checks the current state of a directory against what it has cached from the previous invocation and notifies listeners - FilesystemMonitor - Runnable that invokes registered observers at a specified interval I also have a do nothing FilesystemListenerAdaptor implementation and FilesystemObserver test case. I'll leave this for review/comment for a while before I commit. > File Listener/Monitor > --------------------- > > Key: IO-132 > URL: https://issues.apache.org/jira/browse/IO-132 > Project: Commons IO > Issue Type: New Feature > Reporter: Niall Pemberton > Assignee: Niall Pemberton > Fix For: 2.x > > Attachments: FilesystemListener.java, FilesystemMonitor.java, > FilesystemObserver.java > > > Commons JCI has a "fam" (file alteration monitor) module[1] which provides a > listener for file and directory create/change/delete events. I have done some > work refactoring the JCI implementation and propose adding to to Commons IO. > There is already an existing request/propsal to add similar functionality in > IO-79 from Jim Harrington (which includes code). > There are IMO two main differences (IMO improvements) in this implementation > over exsiting JCI fam module: > 1) It uses a matching array technique to compare previous and current > directory contents which minimizes object creation > 2) FileFilters can be specified to monitor only portions of the file system, > ignoring files/directories of no interest. This is more efficient and reduces > the amount of noise from un-wanted file/directory events > From a quick look at IO-79, the above also applies to that proposal. > Additionally IMO the solution in IO-79 would benefit from been broken out > from the two DirectoryPoller and FilePoller artifacts. > There are also some changes to the API specified in JCI's fam: > 1) FileObserver (FilesystemAlterationObserver in fam) has additional init() > and destroy() methods > 2) FileMonitor (FilesystemAlterationMonitor in fam) has > addObserver/removeObserver methods rather than addListener/removeListener > methods. The issue (IMO) with fam is that the monitor is fixed to the > FilesystemAlterationObserverImpl implementation, rather than any > FilesystemAlterationObserver implementation. Also the ability to specify file > filters means that there is a need to be able to add more than one observer > for the same root directory. > [1] http://svn.apache.org/repos/asf/commons/proper/jci/trunk/fam/ -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.