По сути, я использую новый Java 7 WatchService для мониторинга каталога.
У меня есть цепочка обработчиков, слушающих каждое событие ввода-вывода, выданное каталогом.
Проблема в том, что некоторые обработчики должны каким-то образом изменить причину этих событий ввода-вывода (== файлы). Например, если кто-то помещает файл в отслеживаемую папку, один из обработчиков может изменить его расширение, добавить что-либо к его имени файла или что-то еще.
Эти действия, конечно, инициируют новые события ввода-вывода, и вышеупомянутые обработчики получают их. Затем они снова делают свои изменения. Это, очевидно, приводит к бесконечному циклу ...
Предлагает ли Java какой-либо способ справиться с такой ситуацией? Если нет, как бы вы справились с этим?
Обычно я хотел бы запускать свои обработчики событий только тогда, когда событие не было вызвано действием этих обработчиков.
ОБНОВЛЕНИЕ: Что касается решения, я бы предпочел внести изменения только в код маршрутизатора основного события, чем беспокоиться об этом в каждом обработчике, который я пишу («обработчик вносит изменения только в случае, если не делай этого раньше ").