}
public ResourceMonitor registerMonitor(final ResourceFactory resourceFactory, final FileResource<?> resource,
final ResourceFilter resourceFilter)
{
final DirectoryResource dirResource;
IOFileFilter filter;
if (resource instanceof DirectoryResource)
{
dirResource = (DirectoryResource) resource;
filter = null;
}
else
{
dirResource = resource.getParent();
filter = FileFilterUtils.nameFileFilter(resource.getName());
}
if (resourceFilter != null)
{
FileFilterResourceAdapter adapter = new FileFilterResourceAdapter(resourceFactory, resourceFilter);
if (filter == null)
{
filter = adapter;
}
else
{
filter = FileFilterUtils.and(filter, adapter);
}
}
File directory = dirResource.getUnderlyingResourceObject();
FileAlterationObserver observer = new FileAlterationObserver(directory, filter);
try
{
observer.initialize();
}