[ 
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.

Reply via email to